# HG changeset patch # User Christian Wimmer # Date 1410918143 25200 # Node ID f2a87467d41a4ff44b72b3bcb9c5b08b2ca712a8 # Parent 8ec6deb7d2eb3a1579a10c20d1ce30118cc75f88 Allow lowering of DynamicDeoptimizeNode diff -r 8ec6deb7d2eb -r f2a87467d41a graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Tue Sep 16 18:41:44 2014 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Tue Sep 16 18:42:23 2014 -0700 @@ -166,7 +166,7 @@ } else if (n instanceof IntegerDivNode || n instanceof IntegerRemNode || n instanceof UnsignedDivNode || n instanceof UnsignedRemNode) { // Nothing to do for division nodes. The HotSpot signal handler catches divisions by // zero and the MIN_VALUE / -1 cases. - } else if (n instanceof DeoptimizeNode || n instanceof UnwindNode || n instanceof FloatRemNode) { + } else if (n instanceof AbstractDeoptimizeNode || n instanceof UnwindNode || n instanceof FloatRemNode) { /* No lowering, we generate LIR directly for these nodes. */ } else { super.lower(n, tool); diff -r 8ec6deb7d2eb -r f2a87467d41a graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DynamicDeoptimizeNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DynamicDeoptimizeNode.java Tue Sep 16 18:41:44 2014 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DynamicDeoptimizeNode.java Tue Sep 16 18:42:23 2014 -0700 @@ -29,7 +29,7 @@ import com.oracle.graal.nodes.spi.*; @NodeInfo -public class DynamicDeoptimizeNode extends AbstractDeoptimizeNode implements LIRLowerable, Canonicalizable { +public class DynamicDeoptimizeNode extends AbstractDeoptimizeNode implements LIRLowerable, Lowerable, Canonicalizable { @Input ValueNode actionAndReason; @Input ValueNode speculation; @@ -60,6 +60,11 @@ return getSpeculation(); } + @Override + public void lower(LoweringTool tool) { + tool.getLowerer().lower(this, tool); + } + public void generate(NodeLIRBuilderTool generator) { generator.getLIRGeneratorTool().emitDeoptimize(generator.operand(actionAndReason), generator.operand(speculation), generator.state(this)); }