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 2020/07/12 06:15:06 UTC

[groovy] 01/01: Trivial tweak: reduce method calls of `removeAll`

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

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

commit 40a7afcf3d3d592a20d596a3a08c69022c113853
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sun Jul 12 14:14:29 2020 +0800

    Trivial tweak: reduce method calls of `removeAll`
---
 src/main/java/org/codehaus/groovy/ast/ClassNode.java | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/ast/ClassNode.java b/src/main/java/org/codehaus/groovy/ast/ClassNode.java
index 9eaf47c..b6416b0 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassNode.java
@@ -1102,11 +1102,14 @@ public class ClassNode extends AnnotatedNode implements Opcodes {
 
         // visit the method nodes added while iterating,
         // e.g. synthetic method for constructor reference
-        List<MethodNode> changedMethodList = new ArrayList<>(getMethods());
-        boolean changed = changedMethodList.removeAll(methodList);
-        if (changed) {
-            for (MethodNode mn : changedMethodList) {
-                visitor.visitMethod(mn);
+        final List<MethodNode> newMethodList = getMethods();
+        if (newMethodList.size() > methodList.size()) { // if more newMethodList found, visit them
+            List<MethodNode> changedMethodList = new ArrayList<>(newMethodList);
+            boolean changed = changedMethodList.removeAll(methodList);
+            if (changed) {
+                for (MethodNode mn : changedMethodList) {
+                    visitor.visitMethod(mn);
+                }
             }
         }
     }