# HG changeset patch # User Christian Wimmer # Date 1444855923 25200 # Node ID 2f752d0432d24a8314c97a261c30e5d852b55491 # Parent 4f441a977c8fd5d66000f87bad943907807b03d3 Allow SafepointNode to be lowered using snippet diff -r 4f441a977c8f -r 2f752d0432d2 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 Wed Oct 14 21:12:18 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Wed Oct 14 13:52:03 2015 -0700 @@ -101,6 +101,7 @@ import com.oracle.graal.nodes.Invoke; import com.oracle.graal.nodes.LoweredCallTargetNode; import com.oracle.graal.nodes.ParameterNode; +import com.oracle.graal.nodes.SafepointNode; import com.oracle.graal.nodes.StartNode; import com.oracle.graal.nodes.StructuredGraph; import com.oracle.graal.nodes.UnwindNode; @@ -286,7 +287,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 AbstractDeoptimizeNode || n instanceof UnwindNode || n instanceof RemNode) { + } else if (n instanceof AbstractDeoptimizeNode || n instanceof UnwindNode || n instanceof RemNode || n instanceof SafepointNode) { /* No lowering, we generate LIR directly for these nodes. */ } else if (n instanceof ClassGetHubNode) { lowerClassGetHubNode((ClassGetHubNode) n, tool); diff -r 4f441a977c8f -r 2f752d0432d2 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SafepointNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SafepointNode.java Wed Oct 14 21:12:18 2015 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SafepointNode.java Wed Oct 14 13:52:03 2015 -0700 @@ -26,13 +26,15 @@ import com.oracle.graal.graph.NodeClass; import com.oracle.graal.nodeinfo.NodeInfo; import com.oracle.graal.nodes.spi.LIRLowerable; +import com.oracle.graal.nodes.spi.Lowerable; +import com.oracle.graal.nodes.spi.LoweringTool; import com.oracle.graal.nodes.spi.NodeLIRBuilderTool; /** * Marks a position in the graph where a safepoint should be emitted. */ @NodeInfo -public final class SafepointNode extends DeoptimizingFixedWithNextNode implements LIRLowerable { +public final class SafepointNode extends DeoptimizingFixedWithNextNode implements Lowerable, LIRLowerable { public static final NodeClass TYPE = NodeClass.create(SafepointNode.class); @@ -41,6 +43,11 @@ } @Override + public void lower(LoweringTool tool) { + tool.getLowerer().lower(this, tool); + } + + @Override public void generate(NodeLIRBuilderTool gen) { gen.visitSafepointNode(this); }