Mercurial > hg > graal-compiler
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()); + } } } }