# HG changeset patch # User Gilles Duboscq # Date 1430321330 -7200 # Node ID 754f2b20d8bc43053d254826e6b9f09db3f3c992 # Parent 271eee87201c3d224b5ca5b727f241ab0d14acf1 Skip invokes with a placeholder framestate in MethodCallTargetNode.simplify diff -r 271eee87201c -r 754f2b20d8bc graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Wed Apr 29 15:27:00 2015 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Wed Apr 29 17:28:50 2015 +0200 @@ -22,6 +22,7 @@ */ package com.oracle.graal.nodes.java; +import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.api.meta.Assumptions.AssumptionResult; import com.oracle.graal.compiler.common.type.*; @@ -149,6 +150,11 @@ @Override public void simplify(SimplifierTool tool) { // attempt to devirtualize the call + if (invoke().getContextMethod() == null) { + // avoid invokes that have placeholder bcis: they do not have a valid contextType + assert (invoke().stateAfter() != null && BytecodeFrame.isPlaceholderBci(invoke().stateAfter().bci)) || BytecodeFrame.isPlaceholderBci(invoke().stateDuring().bci); + return; + } ResolvedJavaType contextType = (invoke().stateAfter() == null && invoke().stateDuring() == null) ? null : invoke().getContextType(); ResolvedJavaMethod specialCallTarget = findSpecialCallTarget(invokeKind, receiver(), targetMethod, contextType); if (specialCallTarget != null) {