[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