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

Tom Rodriguez tom.rodriguez at oracle.com
Thu Dec 21 16:31:30 UTC 2017


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