< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.printer/src/org/graalvm/compiler/printer/GraphPrinterDumpHandler.java
Print this page
rev 56282 : [mq]: graal
@@ -35,17 +35,18 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.WeakHashMap;
+import org.graalvm.compiler.core.common.CompilationIdentifier;
import org.graalvm.compiler.debug.DebugContext;
import org.graalvm.compiler.debug.DebugDumpHandler;
import org.graalvm.compiler.debug.DebugDumpScope;
import org.graalvm.compiler.debug.DebugOptions;
+import org.graalvm.compiler.debug.DebugOptions.PrintGraphTarget;
import org.graalvm.compiler.debug.GraalError;
import org.graalvm.compiler.debug.TTY;
-import org.graalvm.compiler.debug.DebugOptions.PrintGraphTarget;
import org.graalvm.compiler.graph.Graph;
import org.graalvm.compiler.nodes.StructuredGraph;
import org.graalvm.compiler.options.OptionValues;
import org.graalvm.compiler.phases.contract.NodeCostUtil;
import org.graalvm.compiler.serviceprovider.GraalServices;
@@ -64,10 +65,11 @@
private static final int FAILURE_LIMIT = 8;
private final GraphPrinterSupplier printerSupplier;
protected GraphPrinter printer;
private List<String> previousInlineContext;
+ private CompilationIdentifier previousCompilationID = CompilationIdentifier.INVALID_COMPILATION_ID;
private int[] dumpIds = {};
private int failuresCount;
private Map<Graph, List<String>> inlineContextMap;
private final String jvmArguments;
private final String sunJavaCommand;
@@ -134,10 +136,26 @@
}
// Get all current JavaMethod instances in the context.
List<String> inlineContext = getInlineContext(graph);
+ if (graph instanceof StructuredGraph) {
+ CompilationIdentifier compilationID = ((StructuredGraph) graph).compilationId();
+ // If the graph to be dumped is with an invalid compilation id, it is likely derived
+ // from inlining.
+ if (compilationID != CompilationIdentifier.INVALID_COMPILATION_ID) {
+ if (previousCompilationID != CompilationIdentifier.INVALID_COMPILATION_ID && !compilationID.equals(previousCompilationID)) {
+ // Compilation ID does not match, close existing scopes.
+ for (int inlineDepth = previousInlineContext.size() - 1; inlineDepth >= 0; --inlineDepth) {
+ closeScope(debug, inlineDepth);
+ }
+ previousInlineContext = new ArrayList<>();
+ }
+ previousCompilationID = compilationID;
+ }
+ }
+
if (!inlineContext.equals(previousInlineContext)) {
Map<Object, Object> properties = new HashMap<>();
properties.put("graph", graph.toString());
addCompilationId(properties, graph);
// Check for method scopes that must be closed since the previous dump.
< prev index next >