Mercurial > hg > graal-jvmci-8
changeset 13125:c65150049959
Allow DeoptimizeNode and UnwindNode to be lowered
author | Christian Wimmer <christian.wimmer@oracle.com> |
---|---|
date | Fri, 22 Nov 2013 11:57:38 -0800 |
parents | aa9be8414779 |
children | c07055d2c66e |
files | graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotLoweringProvider.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnwindNode.java |
diffstat | 3 files changed, 14 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotLoweringProvider.java Fri Nov 22 11:56:46 2013 -0800 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotLoweringProvider.java Fri Nov 22 11:57:38 2013 -0800 @@ -520,6 +520,8 @@ boxingSnippets.lower((BoxNode) n, tool); } else if (n instanceof UnboxNode) { boxingSnippets.lower((UnboxNode) n, tool); + } else if (n instanceof DeoptimizeNode || n instanceof UnwindNode) { + /* No lowering, we generate LIR directly for these nodes. */ } else { assert false : "Node implementing Lowerable not handled: " + n; throw GraalInternalError.shouldNotReachHere();
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java Fri Nov 22 11:56:46 2013 -0800 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java Fri Nov 22 11:57:38 2013 -0800 @@ -27,7 +27,7 @@ import com.oracle.graal.nodes.spi.*; @NodeInfo(shortName = "Deopt", nameTemplate = "Deopt {p#reason/s}") -public class DeoptimizeNode extends AbstractDeoptimizeNode implements LIRLowerable { +public class DeoptimizeNode extends AbstractDeoptimizeNode implements Lowerable, LIRLowerable { private final DeoptimizationAction action; private final DeoptimizationReason reason; @@ -54,6 +54,11 @@ } @Override + public void lower(LoweringTool tool) { + tool.getLowerer().lower(this, tool); + } + + @Override public void generate(LIRGeneratorTool gen) { gen.emitDeoptimize(gen.getMetaAccess().encodeDeoptActionAndReason(action, reason, speculationId), this); }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnwindNode.java Fri Nov 22 11:56:46 2013 -0800 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnwindNode.java Fri Nov 22 11:57:38 2013 -0800 @@ -29,7 +29,7 @@ /** * Unwinds the current frame to an exception handler in the caller frame. */ -public final class UnwindNode extends ControlSinkNode implements LIRLowerable { +public final class UnwindNode extends ControlSinkNode implements Lowerable, LIRLowerable { @Input private ValueNode exception; @@ -44,6 +44,11 @@ } @Override + public void lower(LoweringTool tool) { + tool.getLowerer().lower(this, tool); + } + + @Override public void generate(LIRGeneratorTool gen) { gen.emitUnwind(gen.operand(exception())); }