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();