# HG changeset patch # User Bernhard Urban # Date 1389385328 -3600 # Node ID bb8ea5fb4a2de8a9f59dc942f518e8e52ada3c44 # Parent 3def004aaa2dd79b86c3f8b2089c8d61d4bf4507 MacroNode: apply SnippetFrameStateCleanPhase for nested MacroNodes diff -r 3def004aaa2d -r bb8ea5fb4a2d 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 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;