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