hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.java/src/org/graalvm/compiler/java/FrameStateBuilder.java
--- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.java/src/org/graalvm/compiler/java/FrameStateBuilder.java Mon Dec 12 16:16:27 2016 +0300
+++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.java/src/org/graalvm/compiler/java/FrameStateBuilder.java Wed Mar 22 13:42:45 2017 -0700
@@ -42,7 +42,8 @@
import org.graalvm.compiler.bytecode.Bytecode;
import org.graalvm.compiler.bytecode.ResolvedJavaMethodBytecode;
-import org.graalvm.compiler.common.PermanentBailoutException;
+import org.graalvm.compiler.core.common.PermanentBailoutException;
+import org.graalvm.compiler.core.common.GraalOptions;
import org.graalvm.compiler.core.common.type.StampFactory;
import org.graalvm.compiler.core.common.type.StampPair;
import org.graalvm.compiler.debug.Debug;
@@ -99,6 +100,7 @@
private MonitorIdNode[] monitorIds;
private final StructuredGraph graph;
+ private final boolean clearNonLiveLocals;
private FrameState outerFrameState;
/**
@@ -142,6 +144,7 @@
this.monitorIds = EMPTY_MONITOR_ARRAY;
this.graph = graph;
+ this.clearNonLiveLocals = GraalOptions.OptClearNonLiveLocals.getValue(graph.getOptions());
this.canVerifyKind = true;
}
@@ -263,6 +266,7 @@
assert other.graph != null;
graph = other.graph;
+ clearNonLiveLocals = other.clearNonLiveLocals;
monitorIds = other.monitorIds.length == 0 ? other.monitorIds : other.monitorIds.clone();
assert locals.length == code.getMaxLocals();
@@ -347,7 +351,7 @@
public NodeSourcePosition createBytecodePosition(int bci) {
BytecodeParser parent = parser.getParent();
- if (HideSubstitutionStates.getValue()) {
+ if (HideSubstitutionStates.getValue(parser.graph.getOptions())) {
if (parser.parsingIntrinsic()) {
// Attribute to the method being replaced
return new NodeSourcePosition(constantReceiver, parent.getFrameStateBuilder().createBytecodePosition(parent.bci()), parser.intrinsicContext.getOriginalMethod(), -1);
@@ -624,7 +628,7 @@
* slots at the OSR entry aren't cleared. it is also not enough to rely on PiNodes with
* Kind.Illegal, because the conflicting branch might not have been parsed.
*/
- if (!parser.graphBuilderConfig.clearNonLiveLocals()) {
+ if (!clearNonLiveLocals) {
return;
}
if (liveIn) {