# HG changeset patch # User Doug Simon # Date 1374860940 -7200 # Node ID 406d9b8bf040989384f124c7f9ad1bce33b9f650 # Parent f11a4e137aedca0dac82f8de9334b42a9bf8003a made it possible for a MacroNode to be lowered via a standard method substitution diff -r f11a4e137aed -r 406d9b8bf040 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Fri Jul 26 19:48:22 2013 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Fri Jul 26 19:49:00 2013 +0200 @@ -62,20 +62,34 @@ return returnType; } + /** + * Gets a snippet to be used for lowering this macro node. + */ @SuppressWarnings("unused") protected StructuredGraph getSnippetGraph(LoweringTool tool) { return null; } + /** + * Gets a normal method substitution to be used for lowering this macro node. This is only + * called if {@link #getSnippetGraph(LoweringTool)} return nulls. + */ + protected StructuredGraph getSubstitutionGraph(LoweringTool tool) { + return tool.getReplacements().getMethodSubstitution(getTargetMethod()); + } + @Override public void lower(LoweringTool tool, LoweringType loweringType) { - StructuredGraph snippetGraph = getSnippetGraph(tool); + StructuredGraph replacementGraph = getSnippetGraph(tool); + if (replacementGraph == null) { + replacementGraph = getSubstitutionGraph(tool); + } InvokeNode invoke = replaceWithInvoke(); assert invoke.verify(); - if (snippetGraph != null) { - InliningUtil.inline(invoke, snippetGraph, false); + if (replacementGraph != null) { + InliningUtil.inline(invoke, replacementGraph, false); } }