[vmkit-commits] [vmkit] r142375 - /vmkit/trunk/lib/J3/Classpath/Classpath.inc
Will Dietz
wdietz2 at illinois.edu
Tue Oct 18 10:44:52 PDT 2011
Author: wdietz2
Date: Tue Oct 18 12:42:47 2011
New Revision: 142375
URL: http://llvm.org/viewvc/llvm-project?rev=142375&view=rev
Log:
Impl getType(Object,offset)/putType(Object,offset,value) from sun.misc.Unsafe
Modified:
vmkit/trunk/lib/J3/Classpath/Classpath.inc
Modified: vmkit/trunk/lib/J3/Classpath/Classpath.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/Classpath.inc?rev=142375&r1=142374&r2=142375&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/Classpath.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/Classpath.inc Tue Oct 18 12:42:47 2011
@@ -359,4 +359,34 @@
mvm::Collector::objectReferenceWriteBarrier((gc*)obj, (gc**)ptr, (gc*)value);
}
+// TODO: Add the Volatile variants
+#define GET_PUT_OFFSET(Type,jtype,shorttype) \
+JNIEXPORT jtype JNICALL Java_sun_misc_Unsafe_get ## Type ## __Ljava_lang_Object_2J( \
+JavaObject* unsafe, JavaObject* base, jlong offset) { \
+ jtype res = 0; \
+ BEGIN_NATIVE_EXCEPTION(0) \
+ jtype* ptr = (jtype*) (((uint8 *) base) + offset); \
+ res = *ptr; \
+ END_NATIVE_EXCEPTION \
+ \
+ return res; \
+} \
+ \
+JNIEXPORT void JNICALL Java_sun_misc_Unsafe_put ## Type ## __Ljava_lang_Object_2J ## shorttype( \
+JavaObject* unsafe, JavaObject* base, jlong offset, jtype val) { \
+ BEGIN_NATIVE_EXCEPTION(0) \
+ jtype* ptr = (jtype*) (((uint8 *) base) + offset); \
+ *ptr = val; \
+ END_NATIVE_EXCEPTION \
+}
+
+GET_PUT_OFFSET(Boolean,jboolean,Z)
+GET_PUT_OFFSET(Byte,jbyte,B)
+GET_PUT_OFFSET(Char,jchar,C)
+GET_PUT_OFFSET(Short,jshort,S)
+GET_PUT_OFFSET(Int,jint,I)
+GET_PUT_OFFSET(Long,jlong,J)
+GET_PUT_OFFSET(Float,jfloat,F)
+GET_PUT_OFFSET(Double,jdouble,D)
+
}
More information about the vmkit-commits
mailing list