On Apr 22, 2010, at 4:20 PM, daniel.daughe...@oracle.com wrote: > On 4/22/2010 4:43 PM, Tom Rodriguez wrote: >> On Apr 22, 2010, at 11:58 AM, daniel.daughe...@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 >