< 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 >