[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-serviceability-dev
Subject: Re: RFR: 8242428: JVMTI thread operations should use Thread-Local Handshake
From: Yasumasa Suenaga <suenaga () oss ! nttdata ! com>
Date: 2020-06-30 23:58:34
Message-ID: f155de52-5f16-15c4-eacb-1f1b0ec3f58e () oss ! nttdata ! com
[Download RAW message or body]
On 2020/07/01 8:54, David Holmes wrote:
> On 1/07/2020 9:51 am, Yasumasa Suenaga wrote:
> > Hi Serguei,
> >
> > On 2020/07/01 8:24, serguei.spitsyn@oracle.com wrote:
> > > Hi Yasumasa,
> > >
> > > Thank you for separating your initial webrev.
> > > I'll do a full review after you address comments from David and Robbin as I'm \
> > > stepping on the same ground.
> > > Just a quick comment now.
> > >
> > > http://cr.openjdk.java.net/~ysuenaga/JDK-8242428/webrev.00/src/hotspot/share/prims/jvmtiEnv.cpp.udiff.html
> > >
> > > I've already asked in prev. round to make this renaming: target_javathread => \
> > > java_thread The identifier java_thread is normally used in the jvmtiEnv.cpp \
> > > functions. The target_javathread sounds very unusual.
> >
> > Sorry, I've fixed it. I will update webrev.
> >
> >
> > > I do not like much the introduction ofthe GetSingleStackTraceClosure.
> > > It feels like it can be done in a more elegant way.
> > > From the other hand, it is not that bad. :-)
> >
> > I thought to use handshake on VMThread (!= direct handshake) for \
> > GetThreadListStackTraces() to be simplify implementation. However it would be \
> > queued as VM op (of course STW would not happen), so I introduced \
> > GetSingleStackTraceClosure.
>
> Getting multiple stacktraces must be a stop-the-world operation, so that the traces \
> are consistent.
Yes, this is the case of thread_count == 1.
Yasumasa
> David
>
> >
> > Thanks,
> >
> > Yasumasa
> >
> >
> > > Thanks,
> > > Serguei
> > >
> > >
> > > On 6/29/20 17:05, Yasumasa Suenaga wrote:
> > > > Hi David, Serguei,
> > > >
> > > > I updated webrev for 8242428. Could you review again?
> > > > This change migrate to use direct handshake for GetStackTrace() and \
> > > > GetThreadListStackTraces() (when thread_count == 1).
> > > > http://cr.openjdk.java.net/~ysuenaga/JDK-8242428/webrev.01/
> > > >
> > > > VM_GetThreadListStackTrace (for GetThreadListStackTraces) and \
> > > > VM_GetAllStackTraces (for GetAllStackTraces) have inherited \
> > > > VM_GetMultipleStackTraces VM operation which provides the feature to generate \
> > > > jvmtiStackInfo. I modified VM_GetMultipleStackTraces to a normal C++ class \
> > > > to share with HandshakeClosure for GetThreadListStackTraces \
> > > > (GetSingleStackTraceClosure).
> > > > Also I added new testcases which test GetThreadListStackTraces() with \
> > > > thread_count == 1 and with all threads.
> > > > This change has been tested in serviceability/jvmti serviceability/jdwp \
> > > > vmTestbase/nsk/jvmti vmTestbase/nsk/jdi vmTestbase/nsk/jdwp.
> > > >
> > > > Thanks,
> > > >
> > > > Yasumasa
> > > >
> > > >
> > > > On 2020/06/24 15:50, Yasumasa Suenaga wrote:
> > > > > Hi all,
> > > > >
> > > > > Please review this change:
> > > > >
> > > > > JBS: https://bugs.openjdk.java.net/browse/JDK-8242428
> > > > > webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8242428/webrev.00/
> > > > >
> > > > > This change replace following VM operations to direct handshake.
> > > > >
> > > > > - VM_GetFrameCount (GetFrameCount())
> > > > > - VM_GetFrameLocation (GetFrameLocation())
> > > > > - VM_GetThreadListStackTraces (GetThreadListStackTrace())
> > > > > - VM_GetCurrentLocation
> > > > >
> > > > > GetThreadListStackTrace() uses direct handshake if thread count == 1. In \
> > > > > other case (thread count > 1), it would be performed as VM operation \
> > > > > (VM_GetThreadListStackTraces). Caller of VM_GetCurrentLocation \
> > > > > (JvmtiEnvThreadState::reset_current_location()) might be called at \
> > > > > safepoint. So I added safepoint check in its caller.
> > > > > This change has been tested in serviceability/jvmti serviceability/jdwp \
> > > > > vmTestbase/nsk/jvmti vmTestbase/nsk/jdi vmTestbase/ns k/jdwp.
> > > > >
> > > > > Also I tested it on submit repo, then it has execution error \
> > > > > (mach5-one-ysuenaga-JDK-8242428-20200624-0054-12034717) due to dependency \
> > > > > error. So I think it does not occur by this change.
> > > > >
> > > > > Thanks,
> > > > >
> > > > > Yasumasa
> > >
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic