src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/target/Backend.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
hotspot Cdiff src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/target/Backend.java
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/target/Backend.java
Print this page
*** 20,38 ****
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package org.graalvm.compiler.core.target;
import org.graalvm.compiler.asm.Assembler;
import org.graalvm.compiler.code.CompilationResult;
import org.graalvm.compiler.core.common.CompilationIdentifier;
import org.graalvm.compiler.core.common.LIRKind;
import org.graalvm.compiler.core.common.alloc.RegisterAllocationConfig;
import org.graalvm.compiler.core.common.spi.ForeignCallDescriptor;
import org.graalvm.compiler.core.common.spi.ForeignCallsProvider;
! import org.graalvm.compiler.debug.Debug;
! import org.graalvm.compiler.debug.Debug.Scope;
import org.graalvm.compiler.lir.LIR;
import org.graalvm.compiler.lir.asm.CompilationResultBuilder;
import org.graalvm.compiler.lir.asm.CompilationResultBuilderFactory;
import org.graalvm.compiler.lir.framemap.FrameMap;
import org.graalvm.compiler.lir.framemap.FrameMapBuilder;
--- 20,39 ----
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package org.graalvm.compiler.core.target;
+ import java.util.ArrayList;
+
import org.graalvm.compiler.asm.Assembler;
import org.graalvm.compiler.code.CompilationResult;
import org.graalvm.compiler.core.common.CompilationIdentifier;
import org.graalvm.compiler.core.common.LIRKind;
import org.graalvm.compiler.core.common.alloc.RegisterAllocationConfig;
import org.graalvm.compiler.core.common.spi.ForeignCallDescriptor;
import org.graalvm.compiler.core.common.spi.ForeignCallsProvider;
! import org.graalvm.compiler.debug.DebugContext;
import org.graalvm.compiler.lir.LIR;
import org.graalvm.compiler.lir.asm.CompilationResultBuilder;
import org.graalvm.compiler.lir.asm.CompilationResultBuilderFactory;
import org.graalvm.compiler.lir.framemap.FrameMap;
import org.graalvm.compiler.lir.framemap.FrameMapBuilder;
*** 58,69 ****
import jdk.vm.ci.meta.JavaKind;
import jdk.vm.ci.meta.MetaAccessProvider;
import jdk.vm.ci.meta.ResolvedJavaMethod;
import jdk.vm.ci.meta.SpeculationLog;
- import java.util.ArrayList;
-
/**
* Represents a compiler backend for Graal.
*/
public abstract class Backend implements TargetProvider, ValueKindFactory<LIRKind> {
--- 59,68 ----
*** 153,178 ****
* to the VM for code installation.
*/
protected abstract CompiledCode createCompiledCode(ResolvedJavaMethod method, CompilationRequest compilationRequest, CompilationResult compilationResult);
/**
! * @see #createInstalledCode(ResolvedJavaMethod, CompilationRequest, CompilationResult,
! * SpeculationLog, InstalledCode, boolean)
*/
! public InstalledCode createInstalledCode(ResolvedJavaMethod method, CompilationResult compilationResult,
SpeculationLog speculationLog, InstalledCode predefinedInstalledCode, boolean isDefault) {
! return createInstalledCode(method, null, compilationResult, speculationLog, predefinedInstalledCode, isDefault);
}
/**
! * @see #createInstalledCode(ResolvedJavaMethod, CompilationRequest, CompilationResult,
! * SpeculationLog, InstalledCode, boolean, Object[])
*/
@SuppressWarnings("try")
! public InstalledCode createInstalledCode(ResolvedJavaMethod method, CompilationRequest compilationRequest, CompilationResult compilationResult,
SpeculationLog speculationLog, InstalledCode predefinedInstalledCode, boolean isDefault) {
! return createInstalledCode(method, compilationRequest, compilationResult, speculationLog, predefinedInstalledCode, isDefault, null);
}
/**
* Installs code based on a given compilation result.
*
--- 152,177 ----
* to the VM for code installation.
*/
protected abstract CompiledCode createCompiledCode(ResolvedJavaMethod method, CompilationRequest compilationRequest, CompilationResult compilationResult);
/**
! * @see #createInstalledCode(DebugContext, ResolvedJavaMethod, CompilationRequest,
! * CompilationResult, SpeculationLog, InstalledCode, boolean, Object[])
*/
! public InstalledCode createInstalledCode(DebugContext debug, ResolvedJavaMethod method, CompilationResult compilationResult,
SpeculationLog speculationLog, InstalledCode predefinedInstalledCode, boolean isDefault) {
! return createInstalledCode(debug, method, null, compilationResult, speculationLog, predefinedInstalledCode, isDefault, null);
}
/**
! * @see #createInstalledCode(DebugContext, ResolvedJavaMethod, CompilationRequest,
! * CompilationResult, SpeculationLog, InstalledCode, boolean, Object[])
*/
@SuppressWarnings("try")
! public InstalledCode createInstalledCode(DebugContext debug, ResolvedJavaMethod method, CompilationRequest compilationRequest, CompilationResult compilationResult,
SpeculationLog speculationLog, InstalledCode predefinedInstalledCode, boolean isDefault) {
! return createInstalledCode(debug, method, compilationRequest, compilationResult, speculationLog, predefinedInstalledCode, isDefault, null);
}
/**
* Installs code based on a given compilation result.
*
*** 186,208 ****
* @param speculationLog the speculation log to be used
* @param isDefault specifies if the installed code should be made the default implementation of
* {@code compRequest.getMethod()}. The default implementation for a method is the
* code executed for standard calls to the method. This argument is ignored if
* {@code compRequest == null}.
! * @param context a custom debug context to use for the code installation.
* @return a reference to the compiled and ready-to-run installed code
* @throws BailoutException if the code installation failed
*/
@SuppressWarnings("try")
! public InstalledCode createInstalledCode(ResolvedJavaMethod method, CompilationRequest compilationRequest, CompilationResult compilationResult,
SpeculationLog speculationLog, InstalledCode predefinedInstalledCode, boolean isDefault, Object[] context) {
Object[] debugContext = context != null ? context : new Object[]{getProviders().getCodeCache(), method, compilationResult};
CodeInstallationTask[] tasks = new CodeInstallationTask[codeInstallationTaskFactories.size()];
for (int i = 0; i < codeInstallationTaskFactories.size(); i++) {
tasks[i] = codeInstallationTaskFactories.get(i).create();
}
! try (Scope s = Debug.scope("CodeInstall", debugContext)) {
for (CodeInstallationTask task : tasks) {
task.preProcess(compilationResult);
}
CompiledCode compiledCode = createCompiledCode(method, compilationRequest, compilationResult);
--- 185,208 ----
* @param speculationLog the speculation log to be used
* @param isDefault specifies if the installed code should be made the default implementation of
* {@code compRequest.getMethod()}. The default implementation for a method is the
* code executed for standard calls to the method. This argument is ignored if
* {@code compRequest == null}.
! * @param context a custom debug context to use for the code installation
* @return a reference to the compiled and ready-to-run installed code
* @throws BailoutException if the code installation failed
*/
@SuppressWarnings("try")
! public InstalledCode createInstalledCode(DebugContext debug, ResolvedJavaMethod method, CompilationRequest compilationRequest, CompilationResult compilationResult,
SpeculationLog speculationLog, InstalledCode predefinedInstalledCode, boolean isDefault, Object[] context) {
Object[] debugContext = context != null ? context : new Object[]{getProviders().getCodeCache(), method, compilationResult};
CodeInstallationTask[] tasks = new CodeInstallationTask[codeInstallationTaskFactories.size()];
for (int i = 0; i < codeInstallationTaskFactories.size(); i++) {
tasks[i] = codeInstallationTaskFactories.get(i).create();
}
! try (DebugContext.Scope s2 = debug.scope("CodeInstall", debugContext);
! DebugContext.Activation a = debug.activate()) {
for (CodeInstallationTask task : tasks) {
task.preProcess(compilationResult);
}
CompiledCode compiledCode = createCompiledCode(method, compilationRequest, compilationResult);
*** 220,230 ****
installedCode.invalidate();
throw t;
}
return installedCode;
} catch (Throwable e) {
! throw Debug.handle(e);
}
}
/**
* Installs code based on a given compilation result.
--- 220,230 ----
installedCode.invalidate();
throw t;
}
return installedCode;
} catch (Throwable e) {
! throw debug.handle(e);
}
}
/**
* Installs code based on a given compilation result.
*** 234,245 ****
* @param compilationRequest the request or {@code null}
* @param compilationResult the code to be compiled
* @return a reference to the compiled and ready-to-run installed code
* @throws BailoutException if the code installation failed
*/
! public InstalledCode addInstalledCode(ResolvedJavaMethod method, CompilationRequest compilationRequest, CompilationResult compilationResult) {
! return createInstalledCode(method, compilationRequest, compilationResult, null, null, false);
}
/**
* Installs code based on a given compilation result and sets it as the default code to be used
* when {@code method} is invoked.
--- 234,245 ----
* @param compilationRequest the request or {@code null}
* @param compilationResult the code to be compiled
* @return a reference to the compiled and ready-to-run installed code
* @throws BailoutException if the code installation failed
*/
! public InstalledCode addInstalledCode(DebugContext debug, ResolvedJavaMethod method, CompilationRequest compilationRequest, CompilationResult compilationResult) {
! return createInstalledCode(debug, method, compilationRequest, compilationResult, null, null, false);
}
/**
* Installs code based on a given compilation result and sets it as the default code to be used
* when {@code method} is invoked.
*** 248,259 ****
* input to {@code compResult} was not a {@link ResolvedJavaMethod}
* @param compilationResult the code to be compiled
* @return a reference to the compiled and ready-to-run installed code
* @throws BailoutException if the code installation failed
*/
! public InstalledCode createDefaultInstalledCode(ResolvedJavaMethod method, CompilationResult compilationResult) {
! return createInstalledCode(method, compilationResult, null, null, true);
}
/**
* Emits the code for a given graph.
*
--- 248,259 ----
* input to {@code compResult} was not a {@link ResolvedJavaMethod}
* @param compilationResult the code to be compiled
* @return a reference to the compiled and ready-to-run installed code
* @throws BailoutException if the code installation failed
*/
! public InstalledCode createDefaultInstalledCode(DebugContext debug, ResolvedJavaMethod method, CompilationResult compilationResult) {
! return createInstalledCode(debug, method, compilationResult, null, null, true);
}
/**
* Emits the code for a given graph.
*
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/target/Backend.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File