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 2019/11/23 11:15:15 UTC
[groovy] 01/03: Trivial refactoring: create call site array with
stream and trivial edits
This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit d96f767f22e8e1e4b9af3517f6807e292b9afcba
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sat Nov 23 18:03:09 2019 +0800
Trivial refactoring: create call site array with stream and trivial edits
(cherry picked from commit 1f3ae864a9217fb86e63d85ea3e7ff968bfcbbff)
---
.../groovy/runtime/callsite/CallSiteArray.java | 83 +++++++++++-----------
1 file changed, 40 insertions(+), 43 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteArray.java b/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteArray.java
index 86005cf..5fe58fb 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteArray.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteArray.java
@@ -28,19 +28,19 @@ import org.codehaus.groovy.runtime.InvokerHelper;
import java.security.AccessController;
import java.security.PrivilegedAction;
+import java.util.stream.IntStream;
public final class CallSiteArray {
- public final CallSite[] array;
public static final Object[] NOPARAM = new Object[0];
+ public final CallSite[] array;
public final Class owner;
- public CallSiteArray(Class owner, String [] names) {
+ public CallSiteArray(Class owner, final String[] names) {
this.owner = owner;
- array = new CallSite[names.length];
- for (int i = 0; i < array.length; i++) {
- array[i] = new AbstractCallSite(this, i, names[i]);
- }
+ this.array = IntStream.range(0, names.length)
+ .mapToObj(i -> new AbstractCallSite(this, i, names[i]))
+ .toArray(CallSite[]::new);
}
public static Object defaultCall(CallSite callSite, Object receiver, Object[] args) throws Throwable {
@@ -60,7 +60,6 @@ public final class CallSiteArray {
}
private static CallSite createCallStaticSite(CallSite callSite, final Class receiver, Object[] args) {
- CallSite site;
AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
try {
Class.forName(receiver.getName(), true, receiver.getClassLoader());
@@ -70,25 +69,21 @@ public final class CallSiteArray {
return null;
});
MetaClass metaClass = InvokerHelper.getMetaClass(receiver);
- if (metaClass instanceof MetaClassImpl) {
- site = ((MetaClassImpl)metaClass).createStaticSite(callSite, args);
- }
- else
- site = new StaticMetaClassSite(callSite, metaClass);
+ CallSite site =
+ metaClass instanceof MetaClassImpl
+ ? ((MetaClassImpl) metaClass).createStaticSite(callSite, args)
+ : new StaticMetaClassSite(callSite, metaClass);
replaceCallSite(callSite, site);
return site;
}
private static CallSite createCallConstructorSite(CallSite callSite, Class receiver, Object[] args) {
- MetaClass metaClass = InvokerHelper.getMetaClass(receiver);
-
- CallSite site;
- if (metaClass instanceof MetaClassImpl) {
- site = ((MetaClassImpl)metaClass).createConstructorSite(callSite, args);
- }
- else
- site = new MetaClassConstructorSite(callSite, metaClass);
+ MetaClass metaClass = InvokerHelper.getMetaClass(receiver);
+ CallSite site =
+ metaClass instanceof MetaClassImpl
+ ? ((MetaClassImpl) metaClass).createConstructorSite(callSite, args)
+ : new MetaClassConstructorSite(callSite, metaClass);
replaceCallSite(callSite, site);
return site;
@@ -96,19 +91,18 @@ public final class CallSiteArray {
private static CallSite createCallCurrentSite(CallSite callSite, GroovyObject receiver, Object[] args, Class sender) {
CallSite site;
- if (receiver instanceof GroovyInterceptable)
- site = new PogoInterceptableSite(callSite);
- else {
+ if (receiver instanceof GroovyInterceptable) {
+ site = new PogoInterceptableSite(callSite);
+ } else {
MetaClass metaClass = receiver.getMetaClass();
- if (receiver.getClass() != metaClass.getTheClass() && !metaClass.getTheClass().isInterface()) {
+ Class theClass = metaClass.getTheClass();
+ if (receiver.getClass() != theClass && !theClass.isInterface()) {
site = new PogoInterceptableSite(callSite);
+ } else if (metaClass instanceof MetaClassImpl) {
+ site = ((MetaClassImpl) metaClass).createPogoCallCurrentSite(callSite, sender, args);
+ } else {
+ site = new PogoMetaClassSite(callSite, metaClass);
}
- else
- if (metaClass instanceof MetaClassImpl) {
- site = ((MetaClassImpl)metaClass).createPogoCallCurrentSite(callSite, sender, args);
- }
- else
- site = new PogoMetaClassSite(callSite, metaClass);
}
replaceCallSite(callSite, site);
@@ -131,15 +125,17 @@ public final class CallSiteArray {
}
ClassInfo info = ClassInfo.getClassInfo(klazz);
- if (info.hasPerInstanceMetaClasses())
- return new PerInstancePojoMetaClassSite(callSite, info);
- else
- return new PojoMetaClassSite(callSite, metaClass);
+ if (info.hasPerInstanceMetaClasses()) {
+ return new PerInstancePojoMetaClassSite(callSite, info);
+ } else {
+ return new PojoMetaClassSite(callSite, metaClass);
+ }
}
private static CallSite createPogoSite(CallSite callSite, Object receiver, Object[] args) {
- if (receiver instanceof GroovyInterceptable)
- return new PogoInterceptableSite(callSite);
+ if (receiver instanceof GroovyInterceptable) {
+ return new PogoInterceptableSite(callSite);
+ }
MetaClass metaClass = ((GroovyObject)receiver).getMetaClass();
@@ -151,13 +147,14 @@ public final class CallSiteArray {
}
private static CallSite createCallSite(CallSite callSite, Object receiver, Object[] args) {
- CallSite site;
- if (receiver == null)
- return new NullCallSite(callSite);
+ if (receiver == null) {
+ return new NullCallSite(callSite);
+ }
- if (receiver instanceof Class)
- site = createCallStaticSite(callSite, (Class) receiver, args);
- else if (receiver instanceof GroovyObject) {
+ CallSite site;
+ if (receiver instanceof Class) {
+ site = createCallStaticSite(callSite, (Class) receiver, args);
+ } else if (receiver instanceof GroovyObject) {
site = createPogoSite(callSite, receiver, args);
} else {
site = createPojoSite(callSite, receiver, args);
@@ -168,6 +165,6 @@ public final class CallSiteArray {
}
private static void replaceCallSite(CallSite oldSite, CallSite newSite) {
- oldSite.getArray().array [oldSite.getIndex()] = newSite;
+ oldSite.getArray().array[oldSite.getIndex()] = newSite;
}
}