From commits-return-8513-archive-asf-public=cust-asf.ponee.io@groovy.apache.org Fri May 10 14:53:29 2019 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [207.244.88.153]) by mx-eu-01.ponee.io (Postfix) with SMTP id 7B19F180763 for ; Fri, 10 May 2019 16:53:29 +0200 (CEST) Received: (qmail 40163 invoked by uid 500); 10 May 2019 14:53:28 -0000 Mailing-List: contact commits-help@groovy.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@groovy.apache.org Delivered-To: mailing list commits@groovy.apache.org Received: (qmail 40126 invoked by uid 99); 10 May 2019 14:53:28 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 10 May 2019 14:53:28 +0000 Received: by gitbox.apache.org (ASF Mail Server at gitbox.apache.org, from userid 33) id AC520872FE; Fri, 10 May 2019 14:53:28 +0000 (UTC) Date: Fri, 10 May 2019 14:53:30 +0000 To: "commits@groovy.apache.org" Subject: [groovy] 02/03: Revert "GROOVY-9111: Reduce the cost of transforming meta method(closes #925)" MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit From: sunlan@apache.org In-Reply-To: <155750000847.30589.12567851929885435776@gitbox.apache.org> References: <155750000847.30589.12567851929885435776@gitbox.apache.org> X-Git-Host: gitbox.apache.org X-Git-Repo: groovy X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Rev: b8a5567ead17d90f2951a08b27a76fb3ad52d444 X-Git-NotificationType: diff X-Git-Multimail-Version: 1.5.dev Auto-Submitted: auto-generated Message-Id: <20190510145328.AC520872FE@gitbox.apache.org> This is an automated email from the ASF dual-hosted git repository. sunlan pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/groovy.git commit b8a5567ead17d90f2951a08b27a76fb3ad52d444 Author: Daniel Sun AuthorDate: Fri May 10 22:43:44 2019 +0800 Revert "GROOVY-9111: Reduce the cost of transforming meta method(closes #925)" This reverts commit 7753124d --- src/main/groovy/groovy/lang/MetaClassImpl.java | 2 +- .../java/org/codehaus/groovy/runtime/callsite/CallSiteHelper.java | 7 +------ src/main/java/org/codehaus/groovy/vmplugin/VMPlugin.java | 7 ++----- src/main/java/org/codehaus/groovy/vmplugin/v5/Java5.java | 7 +++++++ src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java | 5 +---- 5 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/main/groovy/groovy/lang/MetaClassImpl.java b/src/main/groovy/groovy/lang/MetaClassImpl.java index 84c806e..171bf7c 100644 --- a/src/main/groovy/groovy/lang/MetaClassImpl.java +++ b/src/main/groovy/groovy/lang/MetaClassImpl.java @@ -1276,7 +1276,7 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass { } if (method != null) { - MetaMethod transformedMetaMethod = CallSiteHelper.transformMetaMethod(this, method, () -> MetaClassHelper.convertToTypeArray(arguments), MetaClassImpl.class); + MetaMethod transformedMetaMethod = CallSiteHelper.transformMetaMethod(this, method, MetaClassHelper.convertToTypeArray(arguments), MetaClassImpl.class); return transformedMetaMethod.doMethodInvoke(object, arguments); } else { return invokePropertyOrMissing(object, methodName, originalArguments, fromInsideClass, isCallToSuper); diff --git a/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteHelper.java b/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteHelper.java index 1d6cdef..016c537 100644 --- a/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteHelper.java +++ b/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteHelper.java @@ -23,16 +23,11 @@ import groovy.lang.MetaMethod; import org.codehaus.groovy.vmplugin.VMPlugin; import org.codehaus.groovy.vmplugin.VMPluginFactory; -import java.util.function.Supplier; - public class CallSiteHelper { private static final VMPlugin VM_PLUGIN = VMPluginFactory.getPlugin(); public static MetaMethod transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, Class[] params, Class caller) { - return transformMetaMethod(metaClass, metaMethod, () -> params, caller); + return VM_PLUGIN.transformMetaMethod(metaClass, metaMethod, params, caller); } - public static MetaMethod transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, Supplier[]> paramsSupplier, Class caller) { - return VM_PLUGIN.transformMetaMethod(metaClass, metaMethod, paramsSupplier, caller); - } } diff --git a/src/main/java/org/codehaus/groovy/vmplugin/VMPlugin.java b/src/main/java/org/codehaus/groovy/vmplugin/VMPlugin.java index 170d5a1..2848615 100644 --- a/src/main/java/org/codehaus/groovy/vmplugin/VMPlugin.java +++ b/src/main/java/org/codehaus/groovy/vmplugin/VMPlugin.java @@ -26,7 +26,6 @@ import org.codehaus.groovy.ast.CompileUnit; import java.lang.reflect.AccessibleObject; import java.lang.reflect.Method; -import java.util.function.Supplier; /** * Interface to access VM version based actions. @@ -89,11 +88,9 @@ public interface VMPlugin { * * @param metaClass meta class * @param metaMethod the original meta method - * @param paramsSupplier parameter types supplier + * @param params parameter types * @param caller caller type * @return the transformed meta method */ - default MetaMethod transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, Supplier[]> paramsSupplier, Class caller) { - return metaMethod; - } + MetaMethod transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, Class[] params, Class caller); } diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v5/Java5.java b/src/main/java/org/codehaus/groovy/vmplugin/v5/Java5.java index 58c6ea3..b8182d1 100644 --- a/src/main/java/org/codehaus/groovy/vmplugin/v5/Java5.java +++ b/src/main/java/org/codehaus/groovy/vmplugin/v5/Java5.java @@ -18,6 +18,8 @@ */ package org.codehaus.groovy.vmplugin.v5; +import groovy.lang.MetaClass; +import groovy.lang.MetaMethod; import org.codehaus.groovy.GroovyBugError; import org.codehaus.groovy.ast.AnnotatedNode; import org.codehaus.groovy.ast.AnnotationNode; @@ -582,6 +584,11 @@ public class Java5 implements VMPlugin { } } + @Override + public MetaMethod transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, Class[] params, Class caller) { + return metaMethod; + } + private static final Permission ACCESS_PERMISSION = new ReflectPermission("suppressAccessChecks"); } diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java b/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java index c348121..882d900 100644 --- a/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java +++ b/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java @@ -50,7 +50,6 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; -import java.util.function.Supplier; import java.util.stream.Collectors; /** @@ -173,7 +172,7 @@ public class Java9 extends Java8 { } @Override - public MetaMethod transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, Supplier[]> paramsSupplier, Class caller) { + public MetaMethod transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, Class[] params, Class caller) { if (!(metaMethod instanceof CachedMethod)) { return metaMethod; } @@ -204,7 +203,6 @@ public class Java9 extends Java8 { classList.add(theClass); classList.addAll(superclassList); - Class[] params = paramsSupplier.get(); for (Class sc : classList) { Optional optionalMetaMethod = getAccessibleMetaMethod(metaMethod, params, caller, sc); if (optionalMetaMethod.isPresent()) { @@ -221,7 +219,6 @@ public class Java9 extends Java8 { // e.g. StringBuilder sb = new StringBuilder(); sb.setLength(0); // `setLength` is the method of `AbstractStringBuilder`, which is `package-private` if (declaringClass.isAssignableFrom(theClass)) { - Class[] params = paramsSupplier.get(); Optional optionalMetaMethod = getAccessibleMetaMethod(metaMethod, params, caller, theClass); if (optionalMetaMethod.isPresent()) { return optionalMetaMethod.get();