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