Mercurial > hg > graal-jvmci-8
changeset 16174:5605c5e37a1e
use InvokeKind.Special for array methods
author | Tom Rodriguez <tom.rodriguez@oracle.com> |
---|---|
date | Mon, 23 Jun 2014 18:02:29 -0700 |
parents | b92cad49bcc0 |
children | 3ee8c2cb629c |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java |
diffstat | 1 files changed, 5 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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;