< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/PEGraphDecoder.java
Print this page
*** 351,361 ****
public void push(JavaKind kind, ValueNode value) {
throw unimplemented();
}
@Override
! public void handleReplacedInvoke(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] args, boolean inlineEverything) {
throw unimplemented();
}
@Override
public void handleReplacedInvoke(CallTargetNode callTarget, JavaKind resultType) {
--- 351,361 ----
public void push(JavaKind kind, ValueNode value) {
throw unimplemented();
}
@Override
! public Invoke handleReplacedInvoke(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] args, boolean inlineEverything) {
throw unimplemented();
}
@Override
public void handleReplacedInvoke(CallTargetNode callTarget, JavaKind resultType) {
*** 587,603 ****
} else {
return loopExplosionPlugin.loopExplosionKind(method);
}
}
public void decode(ResolvedJavaMethod method, boolean isSubstitution, boolean trackNodeSourcePosition) {
! PEMethodScope methodScope = new PEMethodScope(graph, null, null, lookupEncodedGraph(method, null, null, isSubstitution, trackNodeSourcePosition), method, null, 0, loopExplosionPlugin, null);
! decode(createInitialLoopScope(methodScope, null));
! cleanupGraph(methodScope);
!
! debug.dump(DebugContext.VERBOSE_LEVEL, graph, "After graph cleanup");
! assert graph.verify();
try {
/* Check that the control flow graph can be computed, to catch problems early. */
assert CFGVerifier.verify(ControlFlowGraph.compute(graph, true, true, true, true));
} catch (Throwable ex) {
--- 587,609 ----
} else {
return loopExplosionPlugin.loopExplosionKind(method);
}
}
+ @SuppressWarnings("try")
public void decode(ResolvedJavaMethod method, boolean isSubstitution, boolean trackNodeSourcePosition) {
! try (DebugContext.Scope scope = debug.scope("PEGraphDecode", graph)) {
! EncodedGraph encodedGraph = lookupEncodedGraph(method, null, null, isSubstitution, trackNodeSourcePosition);
! PEMethodScope methodScope = new PEMethodScope(graph, null, null, encodedGraph, method, null, 0, loopExplosionPlugin, null);
! decode(createInitialLoopScope(methodScope, null));
! cleanupGraph(methodScope);
!
! debug.dump(DebugContext.VERBOSE_LEVEL, graph, "After graph cleanup");
! assert graph.verify();
! } catch (Throwable t) {
! throw debug.handle(t);
! }
try {
/* Check that the control flow graph can be computed, to catch problems early. */
assert CFGVerifier.verify(ControlFlowGraph.compute(graph, true, true, true, true));
} catch (Throwable ex) {
*** 735,749 ****
--- 741,763 ----
}
Invoke invoke = invokeData.invoke;
ResolvedJavaMethod targetMethod = callTarget.targetMethod();
+ if (loopScope.methodScope.encodedGraph.isCallToOriginal(targetMethod)) {
+ return false;
+ }
+
InvocationPlugin invocationPlugin = getInvocationPlugin(targetMethod);
if (invocationPlugin == null) {
return false;
}
+ if (loopScope.methodScope.encodedGraph.isCallToOriginal(targetMethod)) {
+ return false;
+ }
+
ValueNode[] arguments = callTarget.arguments().toArray(new ValueNode[0]);
FixedWithNextNode invokePredecessor = (FixedWithNextNode) invoke.asNode().predecessor();
/*
* Remove invoke from graph so that invocation plugin can append nodes to the predecessor.
< prev index next >