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 <[email protected]> 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); + } } } }
