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
-~----------~----~----~----~------~----~------~--~---