equal
deleted
inserted
replaced
889 UnsafeWrapper("Unsafe_CompareAndSwapObject"); |
889 UnsafeWrapper("Unsafe_CompareAndSwapObject"); |
890 oop x = JNIHandles::resolve(x_h); |
890 oop x = JNIHandles::resolve(x_h); |
891 oop e = JNIHandles::resolve(e_h); |
891 oop e = JNIHandles::resolve(e_h); |
892 oop p = JNIHandles::resolve(obj); |
892 oop p = JNIHandles::resolve(obj); |
893 HeapWord* addr = (HeapWord *)index_oop_from_field_offset_long(p, offset); |
893 HeapWord* addr = (HeapWord *)index_oop_from_field_offset_long(p, offset); |
|
894 update_barrier_set_pre((void*)addr, e); |
894 oop res = oopDesc::atomic_compare_exchange_oop(x, addr, e); |
895 oop res = oopDesc::atomic_compare_exchange_oop(x, addr, e); |
895 jboolean success = (res == e); |
896 jboolean success = (res == e); |
896 if (success) |
897 if (success) |
897 update_barrier_set((void*)addr, x); |
898 update_barrier_set((void*)addr, x); |
898 return success; |
899 return success; |