> 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