mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-18 10:04:42 +02:00
8138562: Event based tracing should cover monitor inflation
Reviewed-by: dcubed, egahlin, mgronlun
This commit is contained in:
parent
00aa34d788
commit
969708b202
5 changed files with 109 additions and 17 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue