[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