diff --git a/src/hotspot/share/oops/objArrayOop.cpp b/src/hotspot/share/oops/objArrayOop.cpp index cf0b3deb323..7d454193237 100644 --- a/src/hotspot/share/oops/objArrayOop.cpp +++ b/src/hotspot/share/oops/objArrayOop.cpp @@ -31,13 +31,13 @@ oop objArrayOopDesc::atomic_compare_exchange_oop(int index, oop exchange_value, oop compare_value) { - volatile HeapWord* dest; + ptrdiff_t offs; if (UseCompressedOops) { - dest = (HeapWord*)obj_at_addr(index); + offs = objArrayOopDesc::obj_at_offset(index); } else { - dest = (HeapWord*)obj_at_addr(index); + offs = objArrayOopDesc::obj_at_offset(index); } - return HeapAccess<>::oop_atomic_cmpxchg(exchange_value, dest, compare_value); + return HeapAccess::oop_atomic_cmpxchg_at(exchange_value, as_oop(), offs, compare_value); } Klass* objArrayOopDesc::element_klass() {