diff --git a/src/hotspot/share/cds/runTimeClassInfo.cpp b/src/hotspot/share/cds/runTimeClassInfo.cpp index 0acd89b5bce..e2d41cd1de2 100644 --- a/src/hotspot/share/cds/runTimeClassInfo.cpp +++ b/src/hotspot/share/cds/runTimeClassInfo.cpp @@ -76,10 +76,13 @@ void RunTimeClassInfo::init(DumpTimeClassInfo& info) { } InstanceKlass* RunTimeClassInfo::klass() const { - if (ArchiveBuilder::is_active() && ArchiveBuilder::current()->is_in_buffer_space((address)this)) { - return ArchiveBuilder::current()->offset_to_buffered(_klass_offset); - } else { + if (MetaspaceShared::is_in_shared_metaspace(this)) { + // is inside a mmaped CDS archive. return ArchiveUtils::offset_to_archived_address(_klass_offset); + } else { + // is a temporary copy of a RunTimeClassInfo that's being initialized + // by the ArchiveBuilder. + return ArchiveBuilder::current()->offset_to_buffered(_klass_offset); } }