hotspot/src/share/vm/prims/unsafe.cpp
changeset 1374 4c24294029a9
parent 360 21d113ecbf6a
child 1388 3677f5f3d66b
equal deleted inserted replaced
615:570062d730b2 1374:4c24294029a9
   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;