8233416: JFR: assert((((((klass)->trace_id()) & (((1 << 1) << 8) | (JfrTraceIdEpoch::in_use_this_epoch_bit()))) != 0))) failed: invariant

Reviewed-by: egahlin
This commit is contained in:
Markus Grönlund 2019-11-07 15:53:25 +01:00
parent b7dcab5af0
commit 9ec96c1117
2 changed files with 7 additions and 17 deletions

View File

@ -42,7 +42,10 @@
template <typename T>
inline traceid set_used_and_get(const T* type) {
assert(type != NULL, "invariant");
SET_USED_THIS_EPOCH(type);
if (SHOULD_TAG(type)) {
SET_USED_THIS_EPOCH(type);
JfrTraceIdEpoch::set_changed_tag_state();
}
assert(USED_THIS_EPOCH(type), "invariant");
return TRACE_ID(type);
}
@ -58,19 +61,10 @@ inline traceid JfrTraceId::get(const Thread* t) {
}
inline traceid JfrTraceId::use(const Klass* klass) {
assert(klass != NULL, "invariant");
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);
return set_used_and_get(klass);
}
inline traceid JfrTraceId::use(const Method* method) {
assert(method != NULL, "invariant");
return use(method->method_holder(), method);
}
@ -91,12 +85,10 @@ inline traceid JfrTraceId::use(const Klass* klass, const Method* method) {
}
inline traceid JfrTraceId::use(const ModuleEntry* module) {
assert(module != NULL, "invariant");
return set_used_and_get(module);
}
inline traceid JfrTraceId::use(const PackageEntry* package) {
assert(package != NULL, "invariant");
return set_used_and_get(package);
}

View File

@ -40,10 +40,8 @@ static const int meta_offset = low_offset - 1;
inline void set_bits(jbyte bits, jbyte volatile* const dest) {
assert(dest != NULL, "invariant");
if (bits != (*dest & bits)) {
*dest |= bits;
OrderAccess::storestore();
}
*dest |= bits;
OrderAccess::storestore();
}
inline jbyte traceid_and(jbyte current, jbyte bits) {