--- old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.printer/src/org/graalvm/compiler/printer/CFGPrinterObserver.java 2017-08-28 14:09:43.000000000 -0700 +++ new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.printer/src/org/graalvm/compiler/printer/CFGPrinterObserver.java 2017-08-28 14:09:43.000000000 -0700 @@ -37,6 +37,7 @@ import org.graalvm.compiler.bytecode.BytecodeDisassembler; import org.graalvm.compiler.code.CompilationResult; import org.graalvm.compiler.code.DisassemblerProvider; +import org.graalvm.compiler.core.common.CompilationIdentifier; import org.graalvm.compiler.core.common.alloc.Trace; import org.graalvm.compiler.core.common.alloc.TraceBuilderResult; import org.graalvm.compiler.core.common.cfg.AbstractBlockBase; @@ -72,6 +73,7 @@ private CFGPrinter cfgPrinter; private File cfgFile; private JavaMethod curMethod; + private CompilationIdentifier curCompilation; private List curDecorators = Collections.emptyList(); @Override @@ -92,6 +94,7 @@ */ private boolean checkMethodScope(DebugContext debug) { JavaMethod method = null; + CompilationIdentifier compilation = null; ArrayList decorators = new ArrayList<>(); for (Object o : debug.context()) { if (o instanceof JavaMethod) { @@ -102,22 +105,33 @@ if (graph.method() != null) { method = graph.method(); decorators.clear(); + compilation = graph.compilationId(); } } else if (o instanceof DebugDumpScope) { DebugDumpScope debugDumpScope = (DebugDumpScope) o; if (debugDumpScope.decorator) { decorators.add(debugDumpScope.name); } + } else if (o instanceof CompilationResult) { + CompilationResult compilationResult = (CompilationResult) o; + compilation = compilationResult.getCompilationId(); } } - if (method == null) { + if (method == null && compilation == null) { return false; } - if (!method.equals(curMethod) || !curDecorators.equals(decorators)) { - cfgPrinter.printCompilation(method); + if (compilation != null) { + if (!compilation.equals(curCompilation) || !curDecorators.equals(decorators)) { + cfgPrinter.printCompilation(compilation); + } + } else { + if (!method.equals(curMethod) || !curDecorators.equals(decorators)) { + cfgPrinter.printCompilation(method); + } } + curCompilation = compilation; curMethod = method; curDecorators = decorators; return true; @@ -277,6 +291,7 @@ cfgPrinter = null; curDecorators = Collections.emptyList(); curMethod = null; + curCompilation = null; } }