Mercurial > hg > graal-compiler
changeset 22850:ed3ff844b0db
Don't mutate the arguments when trying to resolve a method handle invoke
author | Tom Rodriguez <tom.rodriguez@oracle.com> |
---|---|
date | Mon, 19 Oct 2015 17:16:18 -0700 |
parents | 72b9db37cf22 |
children | 640e0be6617b |
files | graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MethodHandleNode.java |
diffstat | 1 files changed, 4 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MethodHandleNode.java Mon Oct 19 17:14:33 2015 -0700 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MethodHandleNode.java Mon Oct 19 17:16:18 2015 -0700 @@ -166,7 +166,7 @@ * @param target the target, already loaded from the member name node * @return invoke node for the member name target */ - private static InvokeNode getTargetInvokeNode(Assumptions assumptions, IntrinsicMethod intrinsicMethod, int bci, JavaType returnType, ValueNode[] arguments, ResolvedJavaMethod target, + private static InvokeNode getTargetInvokeNode(Assumptions assumptions, IntrinsicMethod intrinsicMethod, int bci, JavaType returnType, ValueNode[] originalArguments, ResolvedJavaMethod target, ResolvedJavaMethod original) { if (target == null) { return null; @@ -180,6 +180,9 @@ final boolean isStatic = target.isStatic(); final int receiverSkip = isStatic ? 0 : 1; + // Don't mutate the passed in arguments + ValueNode[] arguments = originalArguments.clone(); + // Cast receiver to its type. if (!isStatic) { JavaType receiverType = target.getDeclaringClass();