From d006828c4154b2ea16d33f1bd34271ecbdb2c651 Mon Sep 17 00:00:00 2001 From: Roman Kennke Date: Thu, 12 Apr 2018 23:10:19 +0200 Subject: [PATCH] 8201442: objArrayOopDesc::atomic_compare_exchange_oop() must use obj+offset in HeapAccess call Reviewed-by: shade, eosterlund --- src/hotspot/share/oops/objArrayOop.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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() {