# HG changeset patch # User Christian Wimmer # Date 1400637417 25200 # Node ID 120a8209389d3256db3dec4ab7df885bf5e1d6d4 # Parent 1ddee372bf62f85998cd9fb51f70fa3ed355df5f Remove overly strict assertion; avoid NullPointerException when canonicalizing invokes without a state diff -r 1ddee372bf62 -r 120a8209389d 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 Tue May 20 18:55:59 2014 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Tue May 20 18:56:57 2014 -0700 @@ -137,12 +137,10 @@ return this; } - assert targetMethod.getDeclaringClass().asExactType() == null : "should have been handled by canBeStaticallyBound"; - // check if the type of the receiver can narrow the result ValueNode receiver = receiver(); ResolvedJavaType type = StampTool.typeOrNull(receiver); - if (type != null) { + if (type != null && (invoke().stateAfter() != null || invoke().stateDuring() != null)) { // either the holder class is exact, or the receiver object has an exact type ResolvedJavaMethod resolvedMethod = type.resolveMethod(targetMethod, invoke().getContextType()); if (resolvedMethod != null && (resolvedMethod.canBeStaticallyBound() || StampTool.isExactType(receiver))) {