> There are several users and even mostly-identical implementations of 
> Threads::owning_thread_from_monitor_owner(), which I would like to 
> consolidate a little in preparation of JDK-8291555:
> - JvmtiEnvBase::get_monitor_usage(): As the comment in 
> ObjectSynchronizer::get_lock_owner() suggests, the JVMTI code should call the 
> ObjectSynchronizer method. The only real difference is that JVMTI loads the 
> object header directly while OS spins to avoid INFLATING. This is harmless, 
> because JVMTI calls from safepoint, where INFLATING does not occur, and would 
> just do a simple load of the header. A little care must be taken to fetch the 
> monitor if exists a few lines below, to fill in monitor info.
> - Two ThreadService methods call Threads::owning_thread_from_monitor_owner(), 
> but always only ever from a monitor. I would like to extract that special 
> case because with fast-locking this can be treated differently (with 
> fast-locking, monitor owners can only be JavaThread* or 'anonynmous'). It's 
> also a little cleaner IMO.
> 
> Testing:
>  - [x] GHA (x86 and x-compile failures look like infra glitch)
>  - [x] tier1
>  - [x] tier2
>  - [x] tier3
>  - [x] tier4

Roman Kennke has updated the pull request with a new target base due to a merge 
or a rebase. The incremental webrev excludes the unrelated changes brought in 
by the merge/rebase. The pull request contains five additional commits since 
the last revision:

 - Merge branch 'master' into JDK-8295849
 - Fix has_owner() condition
 - Improve condition in OM::has_owner()
 - Fix OM::has_owner()
 - 8295849: Consolidate Threads::owning_thread*

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/10849/files
  - new: https://git.openjdk.org/jdk/pull/10849/files/37fa31bf..55365b30

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=10849&range=02
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=10849&range=01-02

  Stats: 27543 lines in 440 files changed: 2914 ins; 23896 del; 733 mod
  Patch: https://git.openjdk.org/jdk/pull/10849.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/10849/head:pull/10849

PR: https://git.openjdk.org/jdk/pull/10849

Reply via email to