--- 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));
}