hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.java/src/org/graalvm/compiler/java/FrameStateBuilder.java
changeset 46344 694c102fd8ed
parent 43972 1ade39b8381b
child 46509 b32d3928ad6a
--- 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) {