RFR 8192004: InspectedFrame.materializeVirtualObjects only updates locals with new objects

Hohensee, Paul hohensee at amazon.com
Wed Dec 27 20:20:47 UTC 2017


In vframe_hp.cpp:

In jvmtiDeferredocalVariableSet::update_monitors, the calculation of lock_index

      int lock_index = val->index() - (method()->max_locals() + method()->max_stack());

looks wrong. If lock_index is supposed to be zero-based, then method()->max_stack() should be subtracted from val->index(), vis

      int lock_index = val->index() - (method()->max_locals() - method()->max_stack());

A terrifically minor nit, but using ‘l’ as the induction variable instead of ‘i’ is a bit odd. (

Otherwise fine.

Thanks,

Paul

On 12/22/17, 11:09 AM, "hotspot-compiler-dev on behalf of Tom Rodriguez" <hotspot-compiler-dev-bounces at openjdk.java.net on behalf of tom.rodriguez at oracle.com> wrote:

    Could I get some reviews?  This doesn't change the way the logic behaves 
    for the core use of JVMTI.  It just extends the encoding so that numbers 
    after the locals are interpreted as expression stack and monitor values. 
      I believe there are existing tests of the JVMTI set locals part and 
    JVMCI is the only only consumer of the monitor and expression stack part.
    
    tom
    
    Tom Rodriguez wrote:
    > JVMCI adds the ability to introspect on deoptimized frames which
    > requires early materialization of escape analyzed objects. The
    > jvmtiDeferredLocalVariableSet machinery is reused to capture the local
    > updates required for this. The existing code only updates locals,
    > leaving the stack and monitor information with out of date values. This
    > can lead to deadlocks and incorrect execution. The fix is to slightly
    > generalize jvmtiDeferredLocalVariableSet to handle expression stack and
    > monitor slots. Tested with new graal regression test
    > https://github.com/graalvm/graal/blob/7fd37bde8955780a57049964d87a51aa2407d86b/compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/HotSpotStackIntrospectionTest.java
    > and previously failing Truffle use cases. I assume the new test case
    > will come across with a normal graal update. The clean mach5 run is in
    > the bug report.
    >
    > http://cr.openjdk.java.net/~never/8192004/webrev
    > https://bugs.openjdk.java.net/browse/JDK-8192004
    



More information about the hotspot-compiler-dev mailing list