changeset 13600:32ba70c49d27

Replacements: try to inline MacroNodes first
author Bernhard Urban <bernhard.urban@jku.at>
date Fri, 10 Jan 2014 14:18:12 +0100
parents 29b1b216d20a
children fd522e725ee5
files graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java
diffstat 1 files changed, 5 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java	Fri Jan 10 15:03:22 2014 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java	Fri Jan 10 14:18:12 2014 +0100
@@ -419,6 +419,10 @@
                         afterInline(graph, originalGraph, null);
                         substituteCallsOriginal = true;
                     } else {
+                        Class<? extends FixedWithNextNode> macroNodeClass = InliningUtil.getMacroNodeClass(ReplacementsImpl.this, callee);
+                        if (macroNodeClass != null) {
+                            InliningUtil.inlineMacroNode(callTarget.invoke(), callee, graph, macroNodeClass);
+                        } else {
                         StructuredGraph intrinsicGraph = InliningUtil.getIntrinsicGraph(ReplacementsImpl.this, callee);
                         if ((callTarget.invokeKind() == InvokeKind.Static || callTarget.invokeKind() == InvokeKind.Special) &&
                                         (policy.shouldInline(callee, methodToParse) || (intrinsicGraph != null && policy.shouldUseReplacement(callee, methodToParse)))) {
@@ -440,6 +444,7 @@
                         }
                     }
                 }
+                }
 
                 afterInlining(graph);