Mercurial > hg > graal-compiler
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"},