RFR: 8247972: incorrect implementation of JVM TI GetObjectMonitorUsage [v4]

Serguei Spitsyn sspitsyn at openjdk.org
Tue Feb 13 08:15:03 UTC 2024


On Tue, 13 Feb 2024 06:55:46 GMT, David Holmes <dholmes at openjdk.org> wrote:

>> Serguei Spitsyn has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   review: fixed issues in get_object_monitor_usage; extended test coverage in objmonusage003
>
> src/hotspot/share/runtime/javaThread.cpp line 196:
> 
>> 194: oop JavaThread::vthread_or_thread() const {
>> 195:     oop result = vthread();
>> 196:     if (result == nullptr) {
> 
> Is that really sufficient? If so why do we have `is_vthread_mounted` which checks the continuation?

Thank you for the question.
This function does not care if this is a vthread, or not and if it is mounted or not.
We just need a right oop of currently executed thread or vthread.
The `threadOop()` and `vthread()` can return the same oop.
If `vthread()` is not `nullptr` then it can point either to a `j.l.Thread` or a `j.lVirtualThread`.
If it is `nullptr` then we have to take `threadOop()`.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/17680#discussion_r1487374609


More information about the serviceability-dev mailing list