changeset 23053:7f0f49057461

Merge.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Sat, 21 Nov 2015 19:08:03 +0100
parents 36a4d4bbbce0 (current diff) cc904fd7b454 (diff)
children e40b3d175611
files
diffstat 3 files changed, 12 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java	Sat Nov 21 18:58:39 2015 +0100
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java	Sat Nov 21 19:08:03 2015 +0100
@@ -67,7 +67,6 @@
 import com.oracle.graal.lir.FullInfopointOp;
 import com.oracle.graal.lir.LIRFrameState;
 import com.oracle.graal.lir.LIRInstruction;
-import com.oracle.graal.lir.LIRValueUtil;
 import com.oracle.graal.lir.LabelRef;
 import com.oracle.graal.lir.SimpleInfopointOp;
 import com.oracle.graal.lir.StandardOp.JumpOp;
@@ -82,6 +81,7 @@
 import com.oracle.graal.nodes.AbstractBeginNode;
 import com.oracle.graal.nodes.AbstractEndNode;
 import com.oracle.graal.nodes.AbstractMergeNode;
+import com.oracle.graal.nodes.ConstantNode;
 import com.oracle.graal.nodes.DeoptimizingNode;
 import com.oracle.graal.nodes.DirectCallTargetNode;
 import com.oracle.graal.nodes.FixedNode;
@@ -281,6 +281,13 @@
         return values.toArray(new Value[values.size()]);
     }
 
+    /**
+     * @return {@code true} if object constant to stack moves are supported.
+     */
+    protected boolean allowObjectConstantToStackMove() {
+        return true;
+    }
+
     private Value[] createPhiOut(AbstractMergeNode merge, AbstractEndNode pred) {
         List<Value> values = new ArrayList<>();
         for (PhiNode phi : merge.valuePhis()) {
@@ -293,7 +300,7 @@
                  * new Variable.
                  */
                 value = gen.emitMove(value);
-            } else if (LIRValueUtil.isConstantValue(value) && !gen.getMoveFactory().allowConstantToStackMove(LIRValueUtil.asConstant(value))) {
+            } else if (!allowObjectConstantToStackMove() && node instanceof ConstantNode && !value.getLIRKind().isValue()) {
                 /*
                  * Some constants are not allowed as inputs for PHIs in certain backends. Explicitly
                  * create a copy of this value to force it into a register. The new variable is only
--- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java	Sat Nov 21 18:58:39 2015 +0100
+++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java	Sat Nov 21 19:08:03 2015 +0100
@@ -62,6 +62,7 @@
 import com.oracle.graal.nodes.StructuredGraph;
 import com.oracle.graal.nodes.ValueNode;
 import com.oracle.graal.nodes.VirtualState;
+import com.oracle.graal.nodes.StructuredGraph.GuardsStage;
 import com.oracle.graal.nodes.cfg.Block;
 import com.oracle.graal.nodes.cfg.ControlFlowGraph;
 import com.oracle.graal.nodes.cfg.HIRLoop;
@@ -277,7 +278,7 @@
                 assert n.isAlive();
                 assert nodeMap.get(n) == b;
                 StructuredGraph g = (StructuredGraph) n.graph();
-                if (g.hasLoops() && g.getGuardsStage().areDeoptsFixed() && n instanceof DeoptimizeNode) {
+                if (g.hasLoops() && g.getGuardsStage() == GuardsStage.AFTER_FSA && n instanceof DeoptimizeNode) {
                     assert b.getLoopDepth() == 0 : n;
                 }
             }
--- a/mx.graal/suite.py	Sat Nov 21 18:58:39 2015 +0100
+++ b/mx.graal/suite.py	Sat Nov 21 19:08:03 2015 +0100
@@ -47,7 +47,7 @@
             },
             {
                "name" : "truffle",
-               "version" : "9f64eb5ad9c1df1f9c20e4771f9934ad9b409eec",
+               "version" : "fd53ccebb10b21af953de2da4340a7d17b85e5ed",
                "urls" : [
                     {"url" : "http://lafo.ssw.uni-linz.ac.at/hg/truffle", "kind" : "hg"},
                     {"url" : "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind" : "binary"},