You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2022/08/28 18:35:32 UTC

[groovy] branch GROOVY_4_0_X updated: Trivial tweak for checking conditions

This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch GROOVY_4_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/GROOVY_4_0_X by this push:
     new 4e6a8615e5 Trivial tweak for checking conditions
4e6a8615e5 is described below

commit 4e6a8615e5dffaba92da7c23833ea1473e03a47a
Author: Daniel Sun <su...@apache.org>
AuthorDate: Mon Aug 29 02:33:25 2022 +0800

    Trivial tweak for checking conditions
    
    (cherry picked from commit 4e3cba9dcb3aef5ff8b19515a65da8e39b035917)
---
 .../java/org/codehaus/groovy/runtime/InvokerHelper.java    |  2 +-
 .../java/org/codehaus/groovy/vmplugin/v8/Selector.java     | 14 ++++----------
 2 files changed, 5 insertions(+), 11 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/runtime/InvokerHelper.java b/src/main/java/org/codehaus/groovy/runtime/InvokerHelper.java
index e39de8d48c..3f7086be64 100644
--- a/src/main/java/org/codehaus/groovy/runtime/InvokerHelper.java
+++ b/src/main/java/org/codehaus/groovy/runtime/InvokerHelper.java
@@ -586,7 +586,7 @@ public class InvokerHelper {
 
         // it's an instance; check if it's a Java one
         if (!(object instanceof GroovyObject)) {
-            if (null != object && object.getClass().isArray() && "clone".equals(methodName) && (null == arguments || arguments.getClass().isArray() && 0 == ((Object[]) arguments).length)) {
+            if ("clone".equals(methodName) && null != object && object.getClass().isArray() && (null == arguments || arguments.getClass().isArray() && 0 == ((Object[]) arguments).length)) {
                 return ArrayUtil.cloneArray((Object[]) object);
             }
 
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v8/Selector.java b/src/main/java/org/codehaus/groovy/vmplugin/v8/Selector.java
index 2ab2de48fd..8549380140 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v8/Selector.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v8/Selector.java
@@ -674,18 +674,12 @@ public abstract class Selector {
             }
         }
 
-        private static final Method OBJECT_CLONE_METHOD;
-        static {
-            try {
-                OBJECT_CLONE_METHOD = Object.class.getDeclaredMethod("clone");
-            } catch (NoSuchMethodException e) {
-                throw new GroovyBugError(e); // should never happen
-            }
-        }
         private MethodHandle correctClassForNameAndUnReflectOtherwise(Method m) throws IllegalAccessException {
-            if (m.getDeclaringClass() == Class.class && m.getName().equals("forName") && m.getParameterTypes().length == 1) {
+            final String methodName = m.getName();
+            final int parameterCount = m.getParameterTypes().length;
+            if (parameterCount == 1 && methodName.equals("forName") && m.getDeclaringClass() == Class.class) {
                 return MethodHandles.insertArguments(CLASS_FOR_NAME, 1, true, sender.getClassLoader());
-            } else if (null != args && args.getClass().isArray() && OBJECT_CLONE_METHOD.equals(m)) {
+            } else if (parameterCount == 0 && methodName.equals("clone") && null != args && args.getClass().isArray()) {
                 return ArrayUtil.getCloneArrayMethodHandle();
             } else {
                 return LOOKUP.unreflect(m);