changeset 10908:6caff31de51c

Truffle: ReplaceIntrinsicsPhase should also handle macro substitutions.
author Andreas Woess <andreas.woess@jku.at>
date Mon, 29 Jul 2013 13:39:59 +0200
parents 42ab15e31736
children 2151775dfd98
files graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/ReplaceIntrinsicsPhase.java
diffstat 1 files changed, 9 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/ReplaceIntrinsicsPhase.java	Mon Jul 29 12:11:59 2013 +0200
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/ReplaceIntrinsicsPhase.java	Mon Jul 29 13:39:59 2013 +0200
@@ -47,10 +47,16 @@
             if (methodCallTarget.isAlive()) {
                 InvokeKind invokeKind = methodCallTarget.invokeKind();
                 if (invokeKind == InvokeKind.Static || invokeKind == InvokeKind.Special) {
-                    StructuredGraph inlineGraph = replacements.getMethodSubstitution(methodCallTarget.targetMethod());
-                    if (inlineGraph != null) {
-                        InliningUtil.inline(methodCallTarget.invoke(), inlineGraph, false);
+                    Class<? extends FixedWithNextNode> macroSubstitution = replacements.getMacroSubstitution(methodCallTarget.targetMethod());
+                    if (macroSubstitution != null) {
+                        InliningUtil.inlineMacroNode(methodCallTarget.invoke(), methodCallTarget.targetMethod(), graph, macroSubstitution);
                         Debug.dump(graph, "After inlining %s", methodCallTarget.targetMethod().toString());
+                    } else {
+                        StructuredGraph inlineGraph = replacements.getMethodSubstitution(methodCallTarget.targetMethod());
+                        if (inlineGraph != null) {
+                            InliningUtil.inline(methodCallTarget.invoke(), inlineGraph, true);
+                            Debug.dump(graph, "After inlining %s", methodCallTarget.targetMethod().toString());
+                        }
                     }
                 }
             }