Skip to content

Commit f32d4eb

Browse files
committed
Use load_acquire
1 parent 6b373ce commit f32d4eb

2 files changed

Lines changed: 13 additions & 4 deletions

File tree

src/hotspot/share/oops/oop.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ class oopDesc {
9090

9191
void set_narrow_klass(narrowKlass nk) NOT_CDS_JAVA_HEAP_RETURN;
9292
inline narrowKlass narrow_klass() const;
93+
inline narrowKlass narrow_klass_acquire() const;
9394
inline void set_klass(Klass* k);
9495
static inline void release_set_klass(HeapWord* mem, Klass* k);
9596

src/hotspot/share/oops/oop.inline.hpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
#include "oops/oopsHierarchy.hpp"
4040
#include "runtime/atomicAccess.hpp"
4141
#include "runtime/globals.hpp"
42-
#include "runtime/orderAccess.hpp"
4342
#include "utilities/align.hpp"
4443
#include "utilities/debug.hpp"
4544
#include "utilities/globalDefinitions.hpp"
@@ -104,9 +103,7 @@ Klass* oopDesc::klass_or_null() const {
104103
}
105104

106105
Klass* oopDesc::klass_or_null_acquire() const {
107-
narrowKlass nk = narrow_klass();
108-
OrderAccess::acquire();
109-
return CompressedKlassPointers::decode(nk);
106+
return CompressedKlassPointers::decode(narrow_klass_acquire());
110107
}
111108

112109
Klass* oopDesc::klass_without_asserts() const {
@@ -124,6 +121,17 @@ narrowKlass oopDesc::narrow_klass() const {
124121
}
125122
}
126123

124+
narrowKlass oopDesc::narrow_klass_acquire() const {
125+
switch (ObjLayout::klass_mode()) {
126+
case ObjLayout::Compact:
127+
return mark_acquire().narrow_klass();
128+
case ObjLayout::Compressed:
129+
return AtomicAccess::load_acquire(&_compressed_klass);
130+
default:
131+
ShouldNotReachHere();
132+
}
133+
}
134+
127135
void oopDesc::set_klass(Klass* k) {
128136
assert(Universe::is_bootstrapping() || (k != nullptr && k->is_klass()), "incorrect Klass");
129137
assert(!UseCompactObjectHeaders, "don't set Klass* with compact headers");

0 commit comments

Comments
 (0)