# HG changeset patch # User Andreas Woess # Date 1379448227 -7200 # Node ID 7e661dbea359ad9624972690d7ce93f34c31e63b # Parent 7aed6a236e0bdb6d5719a1b0e5a063399afbe0d7 Truffle: always expand methods with virtual frame receiver. diff -r 7aed6a236e0b -r 7e661dbea359 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Tue Sep 17 14:26:28 2013 -0400 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Tue Sep 17 22:03:47 2013 +0200 @@ -138,7 +138,7 @@ Debug.dump(graph, "Before inlining"); // Make sure frame does not escape. - expandTree(config, graph, newFrameNode, assumptions); + expandTree(graph, assumptions); new VerifyFrameDoesNotEscapePhase().apply(graph, false); @@ -200,14 +200,14 @@ return graph; } - private void expandTree(@SuppressWarnings("unused") GraphBuilderConfiguration config, StructuredGraph graph, @SuppressWarnings("unused") NewFrameNode newFrameNode, Assumptions assumptions) { + private void expandTree(StructuredGraph graph, Assumptions assumptions) { PhaseContext context = new PhaseContext(metaAccessProvider, assumptions, replacements); boolean changed; do { changed = false; for (MethodCallTargetNode methodCallTargetNode : graph.getNodes(MethodCallTargetNode.class)) { InvokeKind kind = methodCallTargetNode.invokeKind(); - if (kind == InvokeKind.Static || (kind == InvokeKind.Special && methodCallTargetNode.receiver().isConstant())) { + if (kind == InvokeKind.Static || (kind == InvokeKind.Special && (methodCallTargetNode.receiver().isConstant() || methodCallTargetNode.receiver() instanceof NewFrameNode))) { if (TruffleInlinePrinter.getValue()) { InlinePrinterProcessor.addInlining(MethodHolder.getNewTruffleExecuteMethod(methodCallTargetNode)); }