# HG changeset patch # User Tom Rodriguez # Date 1403571749 25200 # Node ID 5605c5e37a1eb942104616a3375daf58c5b40a79 # Parent b92cad49bcc0b3f13ff49923439279602b904281 use InvokeKind.Special for array methods diff -r b92cad49bcc0 -r 5605c5e37a1e 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 Mon Jun 23 18:01:30 2014 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Mon Jun 23 18:02:29 2014 -0700 @@ -141,9 +141,12 @@ ValueNode receiver = receiver(); ResolvedJavaType type = StampTool.typeOrNull(receiver); if (type != null && (invoke().stateAfter() != null || invoke().stateDuring() != null)) { - // either the holder class is exact, or the receiver object has an exact type + /* + * either the holder class is exact, or the receiver object has an exact type, or + * it's an array type + */ ResolvedJavaMethod resolvedMethod = type.resolveMethod(targetMethod, invoke().getContextType()); - if (resolvedMethod != null && (resolvedMethod.canBeStaticallyBound() || StampTool.isExactType(receiver))) { + if (resolvedMethod != null && (resolvedMethod.canBeStaticallyBound() || StampTool.isExactType(receiver) || type.isArray())) { invokeKind = InvokeKind.Special; targetMethod = resolvedMethod; return this;