mirror of
https://github.com/openjdk/jdk.git
synced 2026-04-06 21:18:42 +00:00
Replace Klass::_metadata union with narrowKlass member
This commit is contained in:
parent
970bff3f86
commit
642604acfe
@ -50,7 +50,7 @@ define zpo
|
||||
end
|
||||
printf "\t Page: %llu\n", ((uintptr_t)$obj & ZAddressOffsetMask) >> ZGranuleSizeShift
|
||||
x/16gx $obj
|
||||
set $klass = (Klass*)(void*)((uintptr_t)CompressedKlassPointers::_base +((uintptr_t)$obj->_metadata->_compressed_klass << CompressedKlassPointers::_shift))
|
||||
set $klass = (Klass*)(void*)((uintptr_t)CompressedKlassPointers::_base +((uintptr_t)$obj->_compressed_klass << CompressedKlassPointers::_shift))
|
||||
printf "Mark: 0x%016llx\tKlass: %s\n", (uintptr_t)$obj->_mark, (char*)$klass->_name->_body
|
||||
end
|
||||
|
||||
|
||||
@ -342,7 +342,7 @@
|
||||
volatile_nonstatic_field(ObjectMonitor, _succ, int64_t) \
|
||||
\
|
||||
volatile_nonstatic_field(oopDesc, _mark, markWord) \
|
||||
volatile_nonstatic_field(oopDesc, _metadata._klass, Klass*) \
|
||||
volatile_nonstatic_field(oopDesc, _compressed_klass, narrowKlass) \
|
||||
\
|
||||
static_field(StubRoutines, _verify_oop_count, jint) \
|
||||
\
|
||||
|
||||
@ -152,7 +152,7 @@ bool oopDesc::is_typeArray_noinline() const { return is_typeArray(); }
|
||||
#if INCLUDE_CDS_JAVA_HEAP
|
||||
void oopDesc::set_narrow_klass(narrowKlass nk) {
|
||||
assert(CDSConfig::is_dumping_heap(), "Used by CDS only. Do not abuse!");
|
||||
_metadata._compressed_klass = nk;
|
||||
_compressed_klass = nk;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@ -49,10 +49,7 @@ class oopDesc {
|
||||
friend class JVMCIVMStructs;
|
||||
private:
|
||||
volatile markWord _mark;
|
||||
union _metadata {
|
||||
Klass* _klass;
|
||||
narrowKlass _compressed_klass;
|
||||
} _metadata;
|
||||
narrowKlass _compressed_klass;
|
||||
|
||||
// There may be ordering constraints on the initialization of fields that
|
||||
// make use of the C++ copy/assign incorrect.
|
||||
@ -338,7 +335,7 @@ class oopDesc {
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
return (int)offset_of(oopDesc, _metadata._klass);
|
||||
return (int)offset_of(oopDesc, _compressed_klass);
|
||||
}
|
||||
}
|
||||
static int klass_gap_offset_in_bytes() {
|
||||
|
||||
@ -99,7 +99,7 @@ Klass* oopDesc::klass() const {
|
||||
case ObjLayout::Compact:
|
||||
return mark().klass();
|
||||
case ObjLayout::Compressed:
|
||||
return CompressedKlassPointers::decode_not_null(_metadata._compressed_klass);
|
||||
return CompressedKlassPointers::decode_not_null(_compressed_klass);
|
||||
default:
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
@ -110,7 +110,7 @@ Klass* oopDesc::klass_or_null() const {
|
||||
case ObjLayout::Compact:
|
||||
return mark().klass_or_null();
|
||||
case ObjLayout::Compressed:
|
||||
return CompressedKlassPointers::decode(_metadata._compressed_klass);
|
||||
return CompressedKlassPointers::decode(_compressed_klass);
|
||||
default:
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
@ -121,7 +121,7 @@ Klass* oopDesc::klass_or_null_acquire() const {
|
||||
case ObjLayout::Compact:
|
||||
return mark_acquire().klass();
|
||||
case ObjLayout::Compressed: {
|
||||
narrowKlass narrow_klass = AtomicAccess::load_acquire(&_metadata._compressed_klass);
|
||||
narrowKlass narrow_klass = AtomicAccess::load_acquire(&_compressed_klass);
|
||||
return CompressedKlassPointers::decode(narrow_klass);
|
||||
}
|
||||
default:
|
||||
@ -134,7 +134,7 @@ Klass* oopDesc::klass_without_asserts() const {
|
||||
case ObjLayout::Compact:
|
||||
return mark().klass_without_asserts();
|
||||
case ObjLayout::Compressed:
|
||||
return CompressedKlassPointers::decode_without_asserts(_metadata._compressed_klass);
|
||||
return CompressedKlassPointers::decode_without_asserts(_compressed_klass);
|
||||
default:
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
@ -145,7 +145,7 @@ narrowKlass oopDesc::narrow_klass() const {
|
||||
case ObjLayout::Compact:
|
||||
return mark().narrow_klass();
|
||||
case ObjLayout::Compressed:
|
||||
return _metadata._compressed_klass;
|
||||
return _compressed_klass;
|
||||
default:
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
@ -154,7 +154,7 @@ narrowKlass oopDesc::narrow_klass() const {
|
||||
void oopDesc::set_klass(Klass* k) {
|
||||
assert(Universe::is_bootstrapping() || (k != nullptr && k->is_klass()), "incorrect Klass");
|
||||
assert(!UseCompactObjectHeaders, "don't set Klass* with compact headers");
|
||||
_metadata._compressed_klass = CompressedKlassPointers::encode_not_null(k);
|
||||
_compressed_klass = CompressedKlassPointers::encode_not_null(k);
|
||||
}
|
||||
|
||||
void oopDesc::release_set_klass(HeapWord* mem, Klass* k) {
|
||||
|
||||
@ -162,8 +162,7 @@
|
||||
/******************************************************************/ \
|
||||
\
|
||||
volatile_nonstatic_field(oopDesc, _mark, markWord) \
|
||||
volatile_nonstatic_field(oopDesc, _metadata._klass, Klass*) \
|
||||
volatile_nonstatic_field(oopDesc, _metadata._compressed_klass, narrowKlass) \
|
||||
volatile_nonstatic_field(oopDesc, _compressed_klass, narrowKlass) \
|
||||
static_field(BarrierSet, _barrier_set, BarrierSet*) \
|
||||
nonstatic_field(ArrayKlass, _dimension, int) \
|
||||
volatile_nonstatic_field(ArrayKlass, _higher_dimension, ObjArrayKlass*) \
|
||||
|
||||
@ -51,8 +51,7 @@ public class Oop {
|
||||
headerSize = markType.getSize();
|
||||
} else {
|
||||
headerSize = type.getSize();
|
||||
klass = new MetadataField(type.getAddressField("_metadata._klass"), 0);
|
||||
compressedKlass = new NarrowKlassField(type.getAddressField("_metadata._compressed_klass"), 0);
|
||||
compressedKlass = new NarrowKlassField(type.getAddressField("_compressed_klass"), 0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -75,7 +74,6 @@ public class Oop {
|
||||
public static long getHeaderSize() { return headerSize; } // Header size in bytes.
|
||||
|
||||
private static CIntField mark;
|
||||
private static MetadataField klass;
|
||||
private static NarrowKlassField compressedKlass;
|
||||
|
||||
// Accessors for declared fields
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user