8138562: Event based tracing should cover monitor inflation

Reviewed-by: dcubed, egahlin, mgronlun
This commit is contained in:
David Simms 2016-02-04 18:28:52 +01:00
parent 00aa34d788
commit 969708b202
5 changed files with 109 additions and 17 deletions

View file

@ -42,6 +42,18 @@ class ObjectSynchronizer : AllStatic {
owner_none,
owner_other
} LockOwnership;
typedef enum {
inflate_cause_vm_internal = 0,
inflate_cause_monitor_enter = 1,
inflate_cause_wait = 2,
inflate_cause_notify = 3,
inflate_cause_hash_code = 4,
inflate_cause_jni_enter = 5,
inflate_cause_jni_exit = 6,
inflate_cause_nof = 7 // Number of causes
} InflateCause;
// exit must be implemented non-blocking, since the compiler cannot easily handle
// deoptimization at monitor exit. Hence, it does not take a Handle argument.
@ -94,9 +106,10 @@ class ObjectSynchronizer : AllStatic {
static void omFlush(Thread * Self);
// Inflate light weight monitor to heavy weight monitor
static ObjectMonitor* inflate(Thread * Self, oop obj);
static ObjectMonitor* inflate(Thread * Self, oop obj, const InflateCause cause);
// This version is only for internal use
static ObjectMonitor* inflate_helper(oop obj);
static const char* inflate_cause_name(const InflateCause cause);
// Returns the identity hash value for an oop
// NOTE: It may cause monitor inflation