RFR: 8320652: ThreadInfo.isInNative needs to be updated to say what executing native code means [v2]

Mandy Chung mchung at openjdk.org
Mon Nov 27 21:03:06 UTC 2023


On Mon, 27 Nov 2023 20:38:03 GMT, Bernd <duke at openjdk.org> wrote:

>> src/java.management/share/classes/java/lang/management/ThreadInfo.java line 552:
>> 
>>> 550:      * java.lang.invoke.MethodHandle method handle} obtained from the
>>> 551:      * {@linkplain java.lang.foreign.Linker native linker}.
>>> 552:      *
>> 
>> This area is new to me, but I happened to be in this code few days back. I'm mostly curious on what the actual definition of a thread being in native means.
>> When a thread is executing any of the following,  does it end up being considered as being in a "native method":
>> 
>> - A syscall (for example, `write()`)
>> - A C function exposed by a platform specific library
>> - A JNI method (either part of the JDK or the application) which then may or may not do any syscall or C function call on a platform specific library
>
> I would agree, it should state if runtime functions (including those doing a syscall) will be counted here. (For JNi i would not need it to be spelled out, on the other hand it would help, since it makes clear we don’t mean c2 code)

This `isInNative` method intends to provide a way to tell if the thread has transitioned from executing Java method to a native method.  JVM interpreter and compiler provide the support for Java language which is why I think such clarification might not be highly necessary.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/16791#discussion_r1406737205


More information about the serviceability-dev mailing list