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