diff -r 2c3cc4b01880 -r c16ac7a2eba4 src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceId.inline.hpp --- a/src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceId.inline.hpp Wed Oct 30 16:14:56 2019 +0100 +++ b/src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceId.inline.hpp Wed Oct 30 19:43:52 2019 +0100 @@ -31,7 +31,6 @@ #include "jfr/recorder/checkpoint/types/traceid/jfrTraceId.hpp" #include "jfr/recorder/checkpoint/types/traceid/jfrTraceIdBits.inline.hpp" #include "jfr/recorder/checkpoint/types/traceid/jfrTraceIdEpoch.hpp" -#include "jfr/recorder/checkpoint/types/traceid/jfrTraceIdMacros.hpp" #include "jfr/support/jfrKlassExtension.hpp" #include "oops/arrayKlass.hpp" #include "oops/klass.hpp" @@ -60,7 +59,14 @@ inline traceid JfrTraceId::use(const Klass* klass) { assert(klass != NULL, "invariant"); - return set_used_and_get(klass); + if (SHOULD_TAG(klass)) { + SET_USED_THIS_EPOCH(klass); + assert(USED_THIS_EPOCH(klass), "invariant"); + JfrTraceIdEpoch::set_changed_tag_state(); + return get(klass); + } + assert(USED_THIS_EPOCH(klass), "invariant"); + return TRACE_ID(klass); } inline traceid JfrTraceId::use(const Method* method) { @@ -71,10 +77,16 @@ inline traceid JfrTraceId::use(const Klass* klass, const Method* method) { assert(klass != NULL, "invariant"); assert(method != NULL, "invariant"); - SET_METHOD_FLAG_USED_THIS_EPOCH(method); - - SET_METHOD_AND_CLASS_USED_THIS_EPOCH(klass); + if (SHOULD_TAG_KLASS_METHOD(klass)) { + SET_METHOD_AND_CLASS_USED_THIS_EPOCH(klass); + } assert(METHOD_AND_CLASS_USED_THIS_EPOCH(klass), "invariant"); + if (METHOD_FLAG_NOT_USED_THIS_EPOCH(method)) { + assert(USED_THIS_EPOCH(klass), "invariant"); + SET_METHOD_FLAG_USED_THIS_EPOCH(method); + JfrTraceIdEpoch::set_changed_tag_state(); + } + assert(METHOD_FLAG_USED_THIS_EPOCH(method), "invariant"); return (METHOD_ID(klass, method)); }