Mercurial > hg > graal-compiler
changeset 13606:bb8ea5fb4a2d
MacroNode: apply SnippetFrameStateCleanPhase for nested MacroNodes
author | Bernhard Urban <bernhard.urban@jku.at> |
---|---|
date | Fri, 10 Jan 2014 21:22:08 +0100 |
parents | 3def004aaa2d |
children | caf8c19e3506 |
files | graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java |
diffstat | 1 files changed, 8 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Fri Jan 10 21:18:57 2014 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Fri Jan 10 21:22:08 2014 +0100 @@ -38,6 +38,7 @@ import com.oracle.graal.nodes.spi.*; import com.oracle.graal.phases.common.*; import com.oracle.graal.phases.tiers.*; +import com.oracle.graal.replacements.*; public class MacroNode extends AbstractMemoryCheckpoint implements Lowerable, MemoryCheckpoint.Single { @@ -86,6 +87,13 @@ protected StructuredGraph getLoweredSubstitutionGraph(LoweringTool tool) { StructuredGraph methodSubstitution = tool.getReplacements().getMethodSubstitution(getTargetMethod()); if (methodSubstitution != null) { + if (stateAfter() == null) { + /* + * handles the case of a MacroNode inside a snippet used for another MacroNode + * lowering + */ + new SnippetFrameStateCleanupPhase().apply(methodSubstitution); + } return lowerReplacement(methodSubstitution.copy(), tool); } return null;