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/05/10 14:10:14 UTC

[groovy] 01/01: Tweak `asType` and inline variables

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

sunlan pushed a commit to branch danielsun/trivial-refactoring-20220510
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 78a7864f8c2e04d656e3852accbd6c8d1e869fb7
Author: Daniel Sun <su...@apache.org>
AuthorDate: Tue May 10 22:09:38 2022 +0800

    Tweak `asType` and inline variables
---
 .../java/org/codehaus/groovy/vmplugin/v8/Selector.java   | 16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

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 5a0ccd516a..71a4133f28 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v8/Selector.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v8/Selector.java
@@ -733,8 +733,7 @@ public abstract class Selector {
             for (int i = 1; i < args.length; i++) {
                 if (args[i] instanceof Wrapper) {
                     Class<?> type = pt[i];
-                    MethodType mt = MethodType.methodType(type, Wrapper.class);
-                    handle = MethodHandles.filterArguments(handle, i, UNWRAP_METHOD.asType(mt));
+                    handle = MethodHandles.filterArguments(handle, i, UNWRAP_METHOD.asType(MethodType.methodType(type, Wrapper.class)));
                     if (LOG_ENABLED) LOG.info("added filter for Wrapper for argument at pos " + i);
                 }
             }
@@ -861,8 +860,7 @@ public abstract class Selector {
             if (handle == null || !catchException) return;
             Class<?> returnType = handle.type().returnType();
             if (returnType != Object.class) {
-                MethodType mtype = MethodType.methodType(returnType, GroovyRuntimeException.class);
-                handle = MethodHandles.catchException(handle, GroovyRuntimeException.class, UNWRAP_EXCEPTION.asType(mtype));
+                handle = MethodHandles.catchException(handle, GroovyRuntimeException.class, UNWRAP_EXCEPTION.asType(MethodType.methodType(returnType, GroovyRuntimeException.class)));
             } else {
                 handle = MethodHandles.catchException(handle, GroovyRuntimeException.class, UNWRAP_EXCEPTION);
             }
@@ -887,14 +885,12 @@ public abstract class Selector {
             if (receiver instanceof GroovyObject) {
                 GroovyObject go = (GroovyObject) receiver;
                 MetaClass mc = go.getMetaClass();
-                MethodHandle test = SAME_MC.bindTo(mc);
                 // drop dummy receiver
-                test = test.asType(MethodType.methodType(boolean.class, targetType.parameterType(0)));
+                MethodHandle test = SAME_MC.asType(MethodType.methodType(boolean.class, MetaClass.class, targetType.parameterType(0))).bindTo(mc);
                 handle = MethodHandles.guardWithTest(test, handle, fallback);
                 if (LOG_ENABLED) LOG.info("added meta class equality check");
             } else if (receiver instanceof Class) {
-                MethodHandle test = EQUALS.bindTo(receiver);
-                test = test.asType(MethodType.methodType(boolean.class, targetType.parameterType(0)));
+                MethodHandle test = EQUALS.asType(MethodType.methodType(boolean.class, Object.class, targetType.parameterType(0))).bindTo(receiver);
                 handle = MethodHandles.guardWithTest(test, handle, fallback);
                 if (LOG_ENABLED) LOG.info("added class equality check");
             }
@@ -934,9 +930,7 @@ public abstract class Selector {
                     Class<?> argClass = arg.getClass();
                     if (paramType.isPrimitive()) continue;
                     //if (Modifier.isFinal(argClass.getModifiers()) && TypeHelper.argumentClassIsParameterClass(argClass,pt[i])) continue;
-                    test = SAME_CLASS.
-                            bindTo(argClass).
-                            asType(MethodType.methodType(boolean.class, paramType));
+                    test = SAME_CLASS.asType(MethodType.methodType(boolean.class, Class.class, paramType)).bindTo(argClass);
                     if (LOG_ENABLED) LOG.info("added same class check at pos " + i);
                 }
                 Class<?>[] drops = new Class[i];