# HG changeset patch # User Thomas Wuerthinger # Date 1397769942 -7200 # Node ID ec7d8b646b9fd5a792ff848f8989336352abab84 # Parent d59f48be0ed6a35ac78a2a1aa5d25b0189af05b3 Truffle: Fixed display of installed code size. diff -r d59f48be0ed6 -r ec7d8b646b9f graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CodeCacheProvider.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CodeCacheProvider.java Thu Apr 17 23:16:21 2014 +0200 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CodeCacheProvider.java Thu Apr 17 23:25:42 2014 +0200 @@ -38,8 +38,8 @@ * @param method a method to which the executable code is begin added * @param compResult the compilation result to be added * @param speculationLog the speculation log to be used - * @return a reference to the compiled and ready-to-run code or null if the code installation - * failed + * @return a reference to the compiled and ready-to-run code or throws a + * {@link BailoutException} if the code installation failed */ InstalledCode addMethod(ResolvedJavaMethod method, CompilationResult compResult, SpeculationLog speculationLog, InstalledCode predefinedInstalledCode); diff -r d59f48be0ed6 -r ec7d8b646b9f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotCodeCacheProvider.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotCodeCacheProvider.java Thu Apr 17 23:16:21 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotCodeCacheProvider.java Thu Apr 17 23:25:42 2014 +0200 @@ -228,7 +228,7 @@ } CodeInstallResult result = runtime.getCompilerToVM().installCode(new HotSpotCompiledNmethod(target, hotspotMethod, compResult), installedCode, log); if (result != CodeInstallResult.OK) { - return null; + throw new BailoutException("Code installation failed: " + result); } return logOrDump(installedCode, compResult); } diff -r d59f48be0ed6 -r ec7d8b646b9f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java Thu Apr 17 23:16:21 2014 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java Thu Apr 17 23:25:42 2014 +0200 @@ -27,6 +27,7 @@ import static com.oracle.graal.truffle.TruffleCompilerOptions.*; import java.util.*; + import com.oracle.graal.api.code.*; import com.oracle.graal.api.code.Assumptions.Assumption; import com.oracle.graal.api.code.CallingConvention.Type; @@ -101,7 +102,7 @@ public static final DebugTimer CompilationTime = Debug.timer("CompilationTime"); public static final DebugTimer CodeInstallationTime = Debug.timer("CodeInstallation"); - public InstalledCode compileMethodImpl(final OptimizedCallTarget compilable) { + public void compileMethodImpl(final OptimizedCallTarget compilable) { final StructuredGraph graph; if (TraceTruffleCompilation.getValue()) { @@ -115,21 +116,16 @@ } if (Thread.currentThread().isInterrupted()) { - return null; + return; } long timePartialEvaluationFinished = System.nanoTime(); int nodeCountPartialEval = graph.getNodeCount(); - InstalledCode compiledMethod = compileMethodHelper(graph, assumptions, compilable.toString(), compilable.getSpeculationLog(), compilable); + CompilationResult compilationResult = compileMethodHelper(graph, assumptions, compilable.toString(), compilable.getSpeculationLog(), compilable); long timeCompilationFinished = System.nanoTime(); int nodeCountLowered = graph.getNodeCount(); - if (!compiledMethod.isValid()) { - throw new BailoutException("Could not install method, code cache is full!"); - } - if (TraceTruffleCompilation.getValue()) { - byte[] code = compiledMethod.getCode(); int calls = OptimizedCallUtils.countCalls(compilable); int inlinedCalls = OptimizedCallUtils.countCallsInlined(compilable); int dispatchedCalls = calls - inlinedCalls; @@ -141,19 +137,18 @@ (timeCompilationFinished - timePartialEvaluationFinished) / 1e6)); properties.put("CallNodes", String.format("I %5d/D %5d", inlinedCalls, dispatchedCalls)); properties.put("GraalNodes", String.format("%5d/%5d", nodeCountPartialEval, nodeCountLowered)); - properties.put("CodeSize", code != null ? code.length : 0); + properties.put("CodeSize", compilationResult.getTargetCodeSize()); properties.put("Source", formatSourceSection(compilable.getRootNode().getSourceSection())); OptimizedCallTargetLog.logOptimizingDone(compilable, properties); } - return compiledMethod; } private static String formatSourceSection(SourceSection sourceSection) { return sourceSection != null ? sourceSection.toString() : "n/a"; } - public InstalledCode compileMethodHelper(StructuredGraph graph, Assumptions assumptions, String name, SpeculationLog speculationLog, InstalledCode predefinedInstalledCode) { + public CompilationResult compileMethodHelper(StructuredGraph graph, Assumptions assumptions, String name, SpeculationLog speculationLog, InstalledCode predefinedInstalledCode) { try (Scope s = Debug.scope("TruffleFinal")) { Debug.dump(graph, "After TruffleTier"); } catch (Throwable e) { @@ -201,7 +196,7 @@ if (Debug.isLogEnabled()) { Debug.log(providers.getCodeCache().disassemble(result, installedCode)); } - return installedCode; + return result; } private PhaseSuite createGraphBuilderSuite() {