[llvm-commits] [vmkit] r50419 - /vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Tue Apr 29 03:35:33 PDT 2008


Author: geoffray
Date: Tue Apr 29 05:35:32 2008
New Revision: 50419

URL: http://llvm.org/viewvc/llvm-project?rev=50419&view=rev
Log:
(Unsafe) Implementation of Java_sun_misc_Unsafe_compareAndSwapLong.


Modified:
    vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp

Modified: vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp?rev=50419&r1=50418&r2=50419&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/Classpath.cpp Tue Apr 29 05:35:32 2008
@@ -92,9 +92,7 @@
   else
     return false;
 }
-}
 
-extern "C" {
 JNIEXPORT bool JNICALL Java_java_util_concurrent_atomic_AtomicLong_VMSupportsCS8(
 #ifdef NATIVE_JNI
 JNIEnv *env,
@@ -103,4 +101,27 @@
 ) {
   return false;
 }
+
+JNIEXPORT bool JNICALL Java_sun_misc_Unsafe_compareAndSwapLong(
+#ifdef NATIVE_JNI
+    JNIEnv *env, 
+#endif
+    JavaObject* unsafe, JavaObject* obj, jlong offset, jlong expect, jlong update) {
+
+  jlong *ptr; 
+  jlong  value;
+
+  ptr = (jlong *) (((uint8 *) obj) + offset);
+
+  value = *ptr;
+
+  if (value == expect) {
+    *ptr = update;
+    return true;
+  } else {
+    return false;
+  }
+
+}
+
 }





More information about the llvm-commits mailing list