11/*
2- * Copyright (c) 2020, 2023 , Oracle and/or its affiliates. All rights reserved.
2+ * Copyright (c) 2020, 2024 , Oracle and/or its affiliates. All rights reserved.
33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44 *
55 * This code is free software; you can redistribute it and/or modify it
3030#include " jfr/support/jfrThreadLocal.hpp"
3131#include " jfr/utilities/jfrEpochQueue.inline.hpp"
3232#include " jfr/utilities/jfrTypes.hpp"
33- #include " memory/metaspace.hpp"
3433#include " oops/compressedKlass.inline.hpp"
3534#include " utilities/macros.hpp"
3635
@@ -75,13 +74,14 @@ static size_t element_size(bool compressed) {
7574 return compressed ? NARROW_ELEMENT_SIZE : ELEMENT_SIZE;
7675}
7776
78- static bool can_compress_element (traceid id) {
79- return Metaspace::using_class_space () && id < uncompressed_threshold;
77+ static bool can_compress_element (const Klass* klass) {
78+ return CompressedKlassPointers::is_in_encoding_range (klass) &&
79+ JfrTraceId::load_raw (klass) < uncompressed_threshold;
8080}
8181
8282static size_t element_size (const Klass* klass) {
8383 assert (klass != nullptr , " invariant" );
84- return element_size (can_compress_element (JfrTraceId::load_raw ( klass) ));
84+ return element_size (can_compress_element (klass));
8585}
8686
8787static bool is_unloaded (traceid id, bool previous_epoch) {
@@ -137,7 +137,8 @@ static inline void store_traceid(JfrEpochQueueNarrowKlassElement* element, trace
137137}
138138
139139static void store_compressed_element (traceid id, const Klass* klass, u1* pos) {
140- assert (can_compress_element (id), " invariant" );
140+ assert (can_compress_element (klass), " invariant" );
141+ assert (id == JfrTraceId::load_raw (klass), " invariant" );
141142 JfrEpochQueueNarrowKlassElement* const element = new (pos) JfrEpochQueueNarrowKlassElement ();
142143 store_traceid (element, id);
143144 element->compressed_klass = encode (klass);
@@ -153,7 +154,7 @@ static void store_element(const Klass* klass, u1* pos) {
153154 assert (pos != nullptr , " invariant" );
154155 assert (klass != nullptr , " invariant" );
155156 const traceid id = JfrTraceId::load_raw (klass);
156- if (can_compress_element (id )) {
157+ if (can_compress_element (klass )) {
157158 store_compressed_element (id, klass, pos);
158159 return ;
159160 }
0 commit comments