Author: [email protected]
Date: Wed Mar  4 20:44:05 2009
New Revision: 4935

Modified:
    trunk/dev/core/src/com/google/gwt/dev/jjs/ast/JModVisitor.java
    trunk/dev/core/src/com/google/gwt/dev/js/ast/JsModVisitor.java

Log:
JModVisitor and JsModVisitor now allow immutable lists to be traversed  
(provided you don't actually try to modify them).  Should also be slightly  
faster.

Review by: bobv


Modified: trunk/dev/core/src/com/google/gwt/dev/jjs/ast/JModVisitor.java
==============================================================================
--- trunk/dev/core/src/com/google/gwt/dev/jjs/ast/JModVisitor.java       
(original)
+++ trunk/dev/core/src/com/google/gwt/dev/jjs/ast/JModVisitor.java      Wed Mar 
  
4 20:44:05 2009
@@ -142,9 +142,11 @@
      NodeContext ctx = new NodeContext();
      try {
        for (int i = 0, c = list.size(); i < c; ++i) {
-        ctx.replaced = false;
          (ctx.node = list.get(i)).traverse(this, ctx);
-        ((List) list).set(i, ctx.node);
+        if (ctx.replaced) {
+          ((List) list).set(i, ctx.node);
+          ctx.replaced = false;
+        }
        }
        didChange |= ctx.didChange;
      } catch (Throwable e) {

Modified: trunk/dev/core/src/com/google/gwt/dev/js/ast/JsModVisitor.java
==============================================================================
--- trunk/dev/core/src/com/google/gwt/dev/js/ast/JsModVisitor.java       
(original)
+++ trunk/dev/core/src/com/google/gwt/dev/js/ast/JsModVisitor.java      Wed Mar 
  
4 20:44:05 2009
@@ -166,8 +166,12 @@

    @Override
    protected <T extends JsVisitable<T>> void doAcceptList(List<T>  
collection) {
+    NodeContext<T> ctx = new NodeContext<T>();
      for (int i = 0, c = collection.size(); i < c; ++i) {
-      collection.set(i, new NodeContext<T>().traverse(collection.get(i)));
+      ctx.traverse(collection.get(i));
+      if (ctx.replaced) {
+        collection.set(i, ctx.node);
+      }
      }
    }


--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---

Reply via email to