src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotCodeCacheProvider.java
Index Unified diffs Context diffs Sdiffs Frames Patch New Old Previous File Next File open Cdiff src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotCodeCacheProvider.java

src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotCodeCacheProvider.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2013, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 21,30 **** --- 21,31 ---- * questions. */ package jdk.vm.ci.hotspot; import java.util.Map; + import java.util.Objects; import jdk.vm.ci.code.BailoutException; import jdk.vm.ci.code.BytecodeFrame; import jdk.vm.ci.code.CodeCacheProvider; import jdk.vm.ci.code.CompiledCode;
*** 100,128 **** } @Override public InstalledCode installCode(ResolvedJavaMethod method, CompiledCode compiledCode, InstalledCode installedCode, SpeculationLog log, boolean isDefault) { InstalledCode resultInstalledCode; ! if (installedCode == null) { if (method == null) { // Must be a stub ! resultInstalledCode = new HotSpotRuntimeStub(((HotSpotCompiledCode) compiledCode).getName()); ! } else { ! resultInstalledCode = new HotSpotNmethod((HotSpotResolvedJavaMethod) method, ((HotSpotCompiledCode) compiledCode).getName(), isDefault); ! } } else { ! resultInstalledCode = installedCode; } ! HotSpotSpeculationLog speculationLog = (log != null && log.hasSpeculations()) ? (HotSpotSpeculationLog) log : null; ! int result = runtime.getCompilerToVM().installCode(target, (HotSpotCompiledCode) compiledCode, resultInstalledCode, speculationLog); if (result != config.codeInstallResultOk) { String resultDesc = config.getCodeInstallResultDescription(result); ! if (compiledCode instanceof HotSpotCompiledNmethod) { ! HotSpotCompiledNmethod compiledNmethod = (HotSpotCompiledNmethod) compiledCode; ! String msg = compiledNmethod.getInstallationFailureMessage(); if (msg != null) { msg = String.format("Code installation failed: %s%n%s", resultDesc, msg); } else { msg = String.format("Code installation failed: %s", resultDesc); } --- 101,146 ---- } @Override public InstalledCode installCode(ResolvedJavaMethod method, CompiledCode compiledCode, InstalledCode installedCode, SpeculationLog log, boolean isDefault) { InstalledCode resultInstalledCode; ! if (installedCode != null) { ! throw new IllegalArgumentException("InstalledCode argument must be null"); ! } ! HotSpotCompiledCode hsCompiledCode = (HotSpotCompiledCode) compiledCode; ! String name = hsCompiledCode.getName(); ! HotSpotCompiledNmethod hsCompiledNmethod = null; if (method == null) { // Must be a stub ! resultInstalledCode = new HotSpotRuntimeStub(name); } else { ! hsCompiledNmethod = (HotSpotCompiledNmethod) hsCompiledCode; ! HotSpotResolvedJavaMethodImpl hsMethod = (HotSpotResolvedJavaMethodImpl) method; ! resultInstalledCode = new HotSpotNmethod(hsMethod, name, isDefault, hsCompiledNmethod.id); } ! HotSpotSpeculationLog speculationLog = null; ! if (log != null) { ! if (log.hasSpeculations()) { ! speculationLog = (HotSpotSpeculationLog) log; ! } ! } ! byte[] speculations; ! long failedSpeculationsAddress; ! if (speculationLog != null) { ! speculations = speculationLog.getFlattenedSpeculations(true); ! failedSpeculationsAddress = speculationLog.getFailedSpeculationsAddress(); ! } else { ! speculations = new byte[0]; ! failedSpeculationsAddress = 0L; ! } ! int result = runtime.getCompilerToVM().installCode(target, (HotSpotCompiledCode) compiledCode, resultInstalledCode, failedSpeculationsAddress, speculations); if (result != config.codeInstallResultOk) { String resultDesc = config.getCodeInstallResultDescription(result); ! if (hsCompiledNmethod != null) { ! String msg = hsCompiledNmethod.getInstallationFailureMessage(); if (msg != null) { msg = String.format("Code installation failed: %s%n%s", resultDesc, msg); } else { msg = String.format("Code installation failed: %s", resultDesc); }
*** 137,147 **** return logOrDump(resultInstalledCode, compiledCode); } @Override public void invalidateInstalledCode(InstalledCode installedCode) { ! runtime.getCompilerToVM().invalidateInstalledCode(installedCode); } @Override public TargetDescription getTarget() { return target; --- 155,169 ---- return logOrDump(resultInstalledCode, compiledCode); } @Override public void invalidateInstalledCode(InstalledCode installedCode) { ! if (installedCode instanceof HotSpotNmethod) { ! runtime.getCompilerToVM().invalidateHotSpotNmethod((HotSpotNmethod) installedCode); ! } else { ! throw new IllegalArgumentException("Cannot invalidate a " + Objects.requireNonNull(installedCode).getClass().getName()); ! } } @Override public TargetDescription getTarget() { return target;
src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotCodeCacheProvider.java
Index Unified diffs Context diffs Sdiffs Frames Patch New Old Previous File Next File