8187042: Events to show which objects are associated with biased object revocations
Reviewed-by: mgronlun, dholmes, egahlin
This commit is contained in:
parent
f4d679fb21
commit
cb07ac64f3
src/hotspot/share
@ -35,6 +35,7 @@
|
||||
#include "runtime/vframe.hpp"
|
||||
#include "runtime/vmThread.hpp"
|
||||
#include "runtime/vm_operations.hpp"
|
||||
#include "trace/tracing.hpp"
|
||||
|
||||
static bool _biased_locking_enabled = false;
|
||||
BiasedLockingCounters BiasedLocking::_counters;
|
||||
@ -643,23 +644,43 @@ BiasedLocking::Condition BiasedLocking::revoke_and_rebias(Handle obj, bool attem
|
||||
// stale epoch.
|
||||
ResourceMark rm;
|
||||
log_info(biasedlocking)("Revoking bias by walking my own stack:");
|
||||
EventBiasedLockSelfRevocation event;
|
||||
BiasedLocking::Condition cond = revoke_bias(obj(), false, false, (JavaThread*) THREAD);
|
||||
((JavaThread*) THREAD)->set_cached_monitor_info(NULL);
|
||||
assert(cond == BIAS_REVOKED, "why not?");
|
||||
if (event.should_commit()) {
|
||||
event.set_lockClass(k);
|
||||
event.commit();
|
||||
}
|
||||
return cond;
|
||||
} else {
|
||||
EventBiasedLockRevocation event;
|
||||
VM_RevokeBias revoke(&obj, (JavaThread*) THREAD);
|
||||
VMThread::execute(&revoke);
|
||||
if (event.should_commit() && (revoke.status_code() != NOT_BIASED)) {
|
||||
event.set_lockClass(k);
|
||||
// Subtract 1 to match the id of events committed inside the safepoint
|
||||
event.set_safepointId(SafepointSynchronize::safepoint_counter() - 1);
|
||||
event.commit();
|
||||
}
|
||||
return revoke.status_code();
|
||||
}
|
||||
}
|
||||
|
||||
assert((heuristics == HR_BULK_REVOKE) ||
|
||||
(heuristics == HR_BULK_REBIAS), "?");
|
||||
EventBiasedLockClassRevocation event;
|
||||
VM_BulkRevokeBias bulk_revoke(&obj, (JavaThread*) THREAD,
|
||||
(heuristics == HR_BULK_REBIAS),
|
||||
attempt_rebias);
|
||||
VMThread::execute(&bulk_revoke);
|
||||
if (event.should_commit()) {
|
||||
event.set_revokedClass(obj->klass());
|
||||
event.set_disableBiasing((heuristics != HR_BULK_REBIAS));
|
||||
// Subtract 1 to match the id of events committed inside the safepoint
|
||||
event.set_safepointId(SafepointSynchronize::safepoint_counter() - 1);
|
||||
event.commit();
|
||||
}
|
||||
return bulk_revoke.status_code();
|
||||
}
|
||||
|
||||
|
@ -104,6 +104,24 @@ Declares a structure type that can be used in other events.
|
||||
<value type="INFLATECAUSE" field="cause" label="Monitor Inflation Cause" description="Cause of inflation"/>
|
||||
</event>
|
||||
|
||||
<event id="BiasedLockRevocation" path="java/biased_lock_revocation" label="Biased Lock Revocation"
|
||||
description="Revoked bias of object" has_thread="true" has_stacktrace="true" is_instant="false">
|
||||
<value type="CLASS" field="lockClass" label="Lock Class" description="Class of object whose biased lock was revoked"/>
|
||||
<value type="INTEGER" field="safepointId" label="Safepoint Identifier" relation="SafepointId"/>
|
||||
</event>
|
||||
|
||||
<event id="BiasedLockSelfRevocation" path="java/biased_lock_self_revocation" label="Biased Lock Self Revocation"
|
||||
description="Revoked bias of object biased towards own thread" has_thread="true" has_stacktrace="true" is_instant="false">
|
||||
<value type="CLASS" field="lockClass" label="Lock Class" description="Class of object whose biased lock was revoked"/>
|
||||
</event>
|
||||
|
||||
<event id="BiasedLockClassRevocation" path="java/biased_lock_class_revocation" label="Biased Lock Class Revocation"
|
||||
description="Revoked biases for all instances of a class" has_thread="true" has_stacktrace="true" is_instant="false">
|
||||
<value type="CLASS" field="revokedClass" label="Revoked Class" description="Class whose biased locks were revoked"/>
|
||||
<value type="BOOLEAN" field="disableBiasing" label="Disable Further Biasing" description="Whether further biasing for instances of this class will be allowed"/>
|
||||
<value type="INTEGER" field="safepointId" label="Safepoint Identifier" relation="SafepointId"/>
|
||||
</event>
|
||||
|
||||
<event id="ReservedStackActivation" path="vm/runtime/reserved_stack_activation" label="Reserved Stack Activation"
|
||||
description="Activation of Reserved Stack Area caused by stack overflow with ReservedStackAccess annotated method in call stack"
|
||||
has_thread="true" has_stacktrace="true" is_instant="true">
|
||||
|
Loading…
x
Reference in New Issue
Block a user