RFR: 8338526: Don't store abstract and interface Klasses in class metaspace [v4]
Markus Grönlund
mgronlun at openjdk.org
Thu Aug 29 17:29:22 UTC 2024
On Thu, 29 Aug 2024 17:24:47 GMT, Markus Grönlund <mgronlun at openjdk.org> wrote:
>> With UseCompressedClassPointers off, I think Metaspace::is_in_shared_metaspace() would still return true but I don't think he compression base is the bottom of the CDS archive. I asked Markus to have a look.
>
> The code supports the JfrTraceID load barrier that enqueues tagged Klass*. It selects a more compact representation (a single word, instead of two words), if a Klass* can be compressed (i.e. there exists a compress class scheme in place (CompressedKlassPointers::encode(const_cast<Klass*>(klass)); AND the traceid (u8) value is low enough to be represented by only 4 bytes).
>
> struct JfrEpochQueueKlassElement {
> traceid id;
> const Klass* klass;
> };
>
> struct JfrEpochQueueNarrowKlassElement {
> u4 id;
> narrowKlass compressed_klass;
> };
// Return TRUE only if UseCompressedClassPointers is True.
static bool using_class_space() {
return NOT_LP64(false) LP64_ONLY(UseCompressedClassPointers);
}
I see now that was wrong for 32-bit.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/19157#discussion_r1736779802
More information about the core-libs-dev
mailing list