From d9bcf061450ebfb7fe02b5a50c855db1d9178e5d Mon Sep 17 00:00:00 2001 From: Zhengyu Gu Date: Sat, 29 Jun 2024 20:40:51 +0000 Subject: [PATCH] 8335217: Fix memory ordering in ClassLoaderData::ChunkedHandleList Reviewed-by: dholmes, stefank, eosterlund --- src/hotspot/share/classfile/classLoaderData.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/hotspot/share/classfile/classLoaderData.cpp b/src/hotspot/share/classfile/classLoaderData.cpp index 16837da9cf2..de4490e73f3 100644 --- a/src/hotspot/share/classfile/classLoaderData.cpp +++ b/src/hotspot/share/classfile/classLoaderData.cpp @@ -202,9 +202,9 @@ OopHandle ClassLoaderData::ChunkedHandleList::add(oop o) { int ClassLoaderData::ChunkedHandleList::count() const { int count = 0; - Chunk* chunk = _head; + Chunk* chunk = Atomic::load_acquire(&_head); while (chunk != nullptr) { - count += chunk->_size; + count += Atomic::load(&chunk->_size); chunk = chunk->_next; } return count; @@ -258,9 +258,9 @@ bool ClassLoaderData::ChunkedHandleList::contains(oop p) { #ifndef PRODUCT bool ClassLoaderData::ChunkedHandleList::owner_of(oop* oop_handle) { - Chunk* chunk = _head; + Chunk* chunk = Atomic::load_acquire(&_head); while (chunk != nullptr) { - if (&(chunk->_data[0]) <= oop_handle && oop_handle < &(chunk->_data[chunk->_size])) { + if (&(chunk->_data[0]) <= oop_handle && oop_handle < &(chunk->_data[Atomic::load(&chunk->_size)])) { return true; } chunk = chunk->_next;