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/06/26 11:34:55 UTC

[groovy] 03/04: Change type `LinkedList` to `ArrayList` to accelerate iterating

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 2a101723a2bebd20283a8884a1a8bdc7e2027215
Author: Daniel Sun <su...@apache.org>
AuthorDate: Fri Jun 26 18:16:01 2020 +0800

    Change type `LinkedList` to `ArrayList` to accelerate iterating
    
    (cherry picked from commit 8c200eca1f48c1cd991b1278aba8b5f9efdc46d5)
---
 src/main/java/org/codehaus/groovy/ast/ClassNode.java              | 8 ++++----
 .../java/org/codehaus/groovy/classgen/VariableScopeVisitor.java   | 7 ++++---
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/ast/ClassNode.java b/src/main/java/org/codehaus/groovy/ast/ClassNode.java
index 4d0e12f..f6bf3e3 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassNode.java
@@ -142,7 +142,7 @@ public class ClassNode extends AnnotatedNode implements Opcodes {
     private List<ConstructorNode> constructors;
     private MapOfLists methods;
     private List<MethodNode> methodsList;
-    private LinkedList<FieldNode> fields;
+    private List<FieldNode> fields;
     private List<PropertyNode> properties;
     private Map<String, FieldNode> fieldIndex;
     private ModuleNode module;
@@ -354,7 +354,7 @@ public class ClassNode extends AnnotatedNode implements Opcodes {
             return redirect.getFields();
         lazyClassInit();
         if (fields == null)
-            fields = new LinkedList<>();
+            fields = new ArrayList<>();
         return fields;
     }
 
@@ -516,12 +516,12 @@ public class ClassNode extends AnnotatedNode implements Opcodes {
         node.setDeclaringClass(r);
         node.setOwner(r);
         if (r.fields == null)
-            r.fields = new LinkedList<>();
+            r.fields = new ArrayList<>();
         if (r.fieldIndex == null)
             r.fieldIndex = new LinkedHashMap<>();
 
         if (isFirst) {
-            r.fields.addFirst(node);
+            r.fields.add(0, node);
         } else {
             r.fields.add(node);
         }
diff --git a/src/main/java/org/codehaus/groovy/classgen/VariableScopeVisitor.java b/src/main/java/org/codehaus/groovy/classgen/VariableScopeVisitor.java
index ef22321..4ff9a18 100644
--- a/src/main/java/org/codehaus/groovy/classgen/VariableScopeVisitor.java
+++ b/src/main/java/org/codehaus/groovy/classgen/VariableScopeVisitor.java
@@ -180,9 +180,10 @@ public class VariableScopeVisitor extends ClassCodeVisitorSupport {
         for (MethodNode mn : cn.getMethods()) {
             if (name.equals(getPropertyName(mn))) {
                 PropertyNode property = new PropertyNode(name, mn.getModifiers(), ClassHelper.OBJECT_TYPE, cn, null, null, null);
-                property.getField().setHasNoRealSourcePosition(true);
-                property.getField().setSynthetic(true);
-                property.getField().setDeclaringClass(cn);
+                final FieldNode field = property.getField();
+                field.setHasNoRealSourcePosition(true);
+                field.setSynthetic(true);
+                field.setDeclaringClass(cn);
                 property.setDeclaringClass(cn);
                 return property;
             }