[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-serviceability-dev
Subject: review (S) for 6943485: JVMTI always on capabilities change code generation too much
From: tom.rodriguez () oracle ! com (Tom Rodriguez)
Date: 2010-04-23 2:33:49
Message-ID: 3673AA52-2F1F-411F-8AA0-C6A81ABB44CF () oracle ! com
[Download RAW message or body]
On Apr 22, 2010, at 4:20 PM, daniel.daugherty at oracle.com wrote:
> On 4/22/2010 4:43 PM, Tom Rodriguez wrote:
> > On Apr 22, 2010, at 11:58 AM, daniel.daugherty at oracle.com wrote:
> >
> >
> > > On 4/20/2010 4:39 PM, Tom Rodriguez wrote:
> > >
> > > > http://cr.openjdk.java.net/~never/6943485
> > > >
> > > Summary: thumbs up
> > >
> > > I updated the bug comments with some code history stuff.
> > >
> >
> > Thanks.
> >
> >
> > > src/share/vm/opto/c2compiler.cpp
> > > So it's okay to EscapeAnalysis when redefining classes?
> > >
> >
> > I believe so. If the methods are redefined then the code should be invalidated \
> > and recompiled. There might be one place where we need an evol dependency but I \
> > need to check into that. We had previously been running all the JVMTI tests with \
> > EA enabled at various points and hadn't seen any issues.
>
> That's good to know!
I added some changes in bcEscapeAnalyzer to make sure that evol dependencies are \
added when it's used. Thanks for asking that question.
>
>
> > > src/share/vm/prims/jvmtiManageCapabilities.cpp
> > > In addition to can_generate_breakpoint_events, the
> > > can_generate_frame_pop_events should be queried also when
> > > setting can_access_local_variables.
> > >
> >
> > Why?
>
> When the can_generate_frame_pop_events capability is enabled,
> you can call NotifyFramePop() on a thread that is suspended or
> on your own thread. You also specify a depth value that ids the
> frame in which you are interested.
>
> You either resume the target thread or continue execution in
> your own thread. When the target frame is popped from the stack,
> a FramePop event is generated. From the FramePop event handler,
> you can access local variables and get the bci and...
>
> However, you have to use the GetLocal APIs which already require
> can_access_local_variables...
>
> It looks like a similar argument can be made for not needing
> can_generate_breakpoint_events... The Breakpoint event handler
> gets similar parameters to the FramePop event handler so why
> did you add can_generate_breakpoint_events?
It's mainly because keeping extra locals live is really targetted at a true debugger \
used by an end user which I figured would be marked by the use of breakpoints. You \
can always access locals in Java frames even without can_access_local_variables it's \
just that if they weren't live anymore they will have their default Java value \
instead of whatever value was actually computed. I've added \
can_generate_frame_pop_events to the set as you suggested since it seems reasonable.
>
> What about GetFrameLocation()? Do you need access to locals in
> order to get the current execution location (bci)? That API
> doesn't require a capability so I'm guessing that it doesn't
> need locals access to do its work...
No. We always have that information around.
tom
>
> Dan
>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic