// http://hg.openjdk.java.net/jdk8u/jdk8u/ \hotspot\src\share\vm\prims\unsafe.cpp// These are the methods prior to the JSR 166 changes in 1.6.0static JNINativeMethod methods_15[]={
//...{
CC "compareAndSwapInt", CC "(" OBJ "J""I""I"")Z",FN_PTR(Unsafe_CompareAndSwapInt)},//...};UNSAFE_ENTRY(jboolean,Unsafe_CompareAndSwapInt(JNIEnv *env, jobject unsafe, jobject obj, jlong offset, jint e, jint x))UnsafeWrapper("Unsafe_CompareAndSwapInt");
oop p = JNIHandles::resolve(obj);
jint* addr =(jint *)index_oop_from_field_offset_long(p, offset);return(jint)(Atomic::cmpxchg(x, addr, e))== e;
UNSAFE_END
// http://hg.openjdk.java.net/jdk8u/jdk8u/ \hotspot\src\share\vm\runtime\atomic.cppunsigned Atomic::cmpxchg(unsignedint exchange_value,volatileunsignedint* dest,unsignedint compare_value){
assert(sizeof(unsignedint)==sizeof(jint),"more work to do");return(unsignedint)Atomic::cmpxchg((jint)exchange_value,(volatile jint*)dest,(jint)compare_value);}