src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/ForeignCallStub.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.hotspot/src/org/graalvm/compiler/hotspot/stubs/ForeignCallStub.java
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/ForeignCallStub.java
Print this page
*** 45,56 ****
import org.graalvm.compiler.nodes.ConstantNode;
import org.graalvm.compiler.nodes.InvokeNode;
import org.graalvm.compiler.nodes.ParameterNode;
import org.graalvm.compiler.nodes.ReturnNode;
import org.graalvm.compiler.nodes.StructuredGraph;
- import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions;
import org.graalvm.compiler.nodes.ValueNode;
import org.graalvm.compiler.replacements.GraphKit;
import org.graalvm.compiler.replacements.nodes.ReadRegisterNode;
import org.graalvm.compiler.word.Word;
import org.graalvm.compiler.word.WordTypes;
--- 45,57 ----
import org.graalvm.compiler.nodes.ConstantNode;
import org.graalvm.compiler.nodes.InvokeNode;
import org.graalvm.compiler.nodes.ParameterNode;
import org.graalvm.compiler.nodes.ReturnNode;
import org.graalvm.compiler.nodes.StructuredGraph;
import org.graalvm.compiler.nodes.ValueNode;
+ import org.graalvm.compiler.options.OptionValues;
+ import org.graalvm.compiler.phases.common.RemoveValueProxyPhase;
import org.graalvm.compiler.replacements.GraphKit;
import org.graalvm.compiler.replacements.nodes.ReadRegisterNode;
import org.graalvm.compiler.word.Word;
import org.graalvm.compiler.word.WordTypes;
*** 97,109 ****
* @param reexecutable specifies if the stub call can be re-executed without (meaningful) side
* effects. Deoptimization will not return to a point before a stub call that cannot
* be re-executed.
* @param killedLocations the memory locations killed by the stub call
*/
! public ForeignCallStub(HotSpotJVMCIRuntimeProvider runtime, HotSpotProviders providers, long address, ForeignCallDescriptor descriptor, boolean prependThread, Transition transition,
boolean reexecutable, LocationIdentity... killedLocations) {
! super(providers, HotSpotForeignCallLinkageImpl.create(providers.getMetaAccess(), providers.getCodeCache(), providers.getWordTypes(), providers.getForeignCalls(), descriptor, 0L,
PRESERVES_REGISTERS, JavaCall, JavaCallee, transition, reexecutable, killedLocations));
this.jvmciRuntime = runtime;
this.prependThread = prependThread;
Class<?>[] targetParameterTypes = createTargetParameters(descriptor);
ForeignCallDescriptor targetSig = new ForeignCallDescriptor(descriptor.getName() + ":C", descriptor.getResultType(), targetParameterTypes);
--- 98,111 ----
* @param reexecutable specifies if the stub call can be re-executed without (meaningful) side
* effects. Deoptimization will not return to a point before a stub call that cannot
* be re-executed.
* @param killedLocations the memory locations killed by the stub call
*/
! public ForeignCallStub(OptionValues options, HotSpotJVMCIRuntimeProvider runtime, HotSpotProviders providers, long address, ForeignCallDescriptor descriptor, boolean prependThread,
! Transition transition,
boolean reexecutable, LocationIdentity... killedLocations) {
! super(options, providers, HotSpotForeignCallLinkageImpl.create(providers.getMetaAccess(), providers.getCodeCache(), providers.getWordTypes(), providers.getForeignCalls(), descriptor, 0L,
PRESERVES_REGISTERS, JavaCall, JavaCallee, transition, reexecutable, killedLocations));
this.jvmciRuntime = runtime;
this.prependThread = prependThread;
Class<?>[] targetParameterTypes = createTargetParameters(descriptor);
ForeignCallDescriptor targetSig = new ForeignCallDescriptor(descriptor.getName() + ":C", descriptor.getResultType(), targetParameterTypes);
*** 222,232 ****
protected StructuredGraph getGraph(CompilationIdentifier compilationId) {
WordTypes wordTypes = providers.getWordTypes();
Class<?>[] args = linkage.getDescriptor().getArgumentTypes();
boolean isObjectResult = !LIRKind.isValue(linkage.getOutgoingCallingConvention().getReturn());
! StructuredGraph graph = new StructuredGraph(toString(), null, AllowAssumptions.NO, compilationId);
graph.disableUnsafeAccessTracking();
GraphKit kit = new GraphKit(graph, providers, wordTypes, providers.getGraphBuilderPlugins());
ParameterNode[] params = createParameters(kit, args);
--- 224,234 ----
protected StructuredGraph getGraph(CompilationIdentifier compilationId) {
WordTypes wordTypes = providers.getWordTypes();
Class<?>[] args = linkage.getDescriptor().getArgumentTypes();
boolean isObjectResult = !LIRKind.isValue(linkage.getOutgoingCallingConvention().getReturn());
! StructuredGraph graph = new StructuredGraph.Builder(options).name(toString()).compilationId(compilationId).build();
graph.disableUnsafeAccessTracking();
GraphKit kit = new GraphKit(graph, providers, wordTypes, providers.getGraphBuilderPlugins());
ParameterNode[] params = createParameters(kit, args);
*** 243,252 ****
--- 245,256 ----
Debug.dump(Debug.INFO_LOG_LEVEL, graph, "Initial stub graph");
}
kit.inlineInvokes();
+ new RemoveValueProxyPhase().apply(graph);
+
if (Debug.isDumpEnabled(Debug.INFO_LOG_LEVEL)) {
Debug.dump(Debug.INFO_LOG_LEVEL, graph, "Stub graph before compilation");
}
return graph;
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/ForeignCallStub.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File