# HG changeset patch # User Christian Wimmer # Date 1354647012 28800 # Node ID 3a2f8b313bc5319b064d5ec7bce0f7a7efbaadc8 # Parent 04632e376bd8c81ea8a498ba42fc9e1d8d0e7ac4 Allow VM-specific lowering of FixedGuardNode diff -r 04632e376bd8 -r 3a2f8b313bc5 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java Tue Dec 04 10:49:18 2012 -0800 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java Tue Dec 04 10:50:12 2012 -0800 @@ -617,6 +617,10 @@ ReadNode hub = graph.add(new ReadNode(object, location, StampFactory.forKind(wordKind()))); hub.dependencies().add(guard); graph.replaceFixed(loadHub, hub); + } else if (n instanceof FixedGuardNode) { + FixedGuardNode node = (FixedGuardNode) n; + ValueAnchorNode newAnchor = graph.add(new ValueAnchorNode(tool.createGuard(node.condition(), node.getReason(), node.getAction(), node.isNegated(), node.getLeafGraphId()))); + graph.replaceFixedWithFixed(node, newAnchor); } else if (n instanceof CheckCastNode) { checkcastSnippets.lower((CheckCastNode) n, tool); } else if (n instanceof CheckCastDynamicNode) { diff -r 04632e376bd8 -r 3a2f8b313bc5 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java Tue Dec 04 10:49:18 2012 -0800 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java Tue Dec 04 10:50:12 2012 -0800 @@ -25,7 +25,6 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.graph.*; -import com.oracle.graal.nodes.extended.*; import com.oracle.graal.nodes.spi.*; import com.oracle.graal.nodes.type.*; @@ -60,6 +59,22 @@ this.reason = deoptReason; } + public DeoptimizationReason getReason() { + return reason; + } + + public DeoptimizationAction getAction() { + return action; + } + + public boolean isNegated() { + return negated; + } + + public long getLeafGraphId() { + return leafGraphId; + } + @Override public String toString(Verbosity verbosity) { if (verbosity == Verbosity.Name && negated) { @@ -93,8 +108,7 @@ @Override public void lower(LoweringTool tool) { - ValueAnchorNode newAnchor = graph().add(new ValueAnchorNode(tool.createGuard(condition, reason, action, negated, leafGraphId))); - ((StructuredGraph) graph()).replaceFixedWithFixed(this, newAnchor); + tool.getRuntime().lower(this, tool); } @Override