Skip to content

Commit 5a73756

Browse files
committed
8383912: Deduplicate klass fetching and decoding in oopDesc
1 parent 79d1b7b commit 5a73756

1 file changed

Lines changed: 6 additions & 34 deletions

File tree

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

Lines changed: 6 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -95,49 +95,21 @@ void oopDesc::init_mark() {
9595
}
9696

9797
Klass* oopDesc::klass() const {
98-
switch (ObjLayout::klass_mode()) {
99-
case ObjLayout::Compact:
100-
return mark().klass();
101-
case ObjLayout::Compressed:
102-
return CompressedKlassPointers::decode_not_null(_compressed_klass);
103-
default:
104-
ShouldNotReachHere();
105-
}
98+
return CompressedKlassPointers::decode_not_null(narrow_klass());
10699
}
107100

108101
Klass* oopDesc::klass_or_null() const {
109-
switch (ObjLayout::klass_mode()) {
110-
case ObjLayout::Compact:
111-
return mark().klass_or_null();
112-
case ObjLayout::Compressed:
113-
return CompressedKlassPointers::decode(_compressed_klass);
114-
default:
115-
ShouldNotReachHere();
116-
}
102+
return CompressedKlassPointers::decode(narrow_klass());
117103
}
118104

119105
Klass* oopDesc::klass_or_null_acquire() const {
120-
switch (ObjLayout::klass_mode()) {
121-
case ObjLayout::Compact:
122-
return mark_acquire().klass_or_null();
123-
case ObjLayout::Compressed: {
124-
narrowKlass narrow_klass = AtomicAccess::load_acquire(&_compressed_klass);
125-
return CompressedKlassPointers::decode(narrow_klass);
126-
}
127-
default:
128-
ShouldNotReachHere();
129-
}
106+
narrowKlass nk = narrow_klass();
107+
OrderAccess::acquire();
108+
return CompressedKlassPointers::decode(nk);
130109
}
131110

132111
Klass* oopDesc::klass_without_asserts() const {
133-
switch (ObjLayout::klass_mode()) {
134-
case ObjLayout::Compact:
135-
return mark().klass_without_asserts();
136-
case ObjLayout::Compressed:
137-
return CompressedKlassPointers::decode_without_asserts(_compressed_klass);
138-
default:
139-
ShouldNotReachHere();
140-
}
112+
return CompressedKlassPointers::decode_without_asserts(narrow_klass());
141113
}
142114

143115
narrowKlass oopDesc::narrow_klass() const {

0 commit comments

Comments
 (0)