Restores logging for recursive unit invalidation.

Review by: bobv

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@7259 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/javac/CompilationStateBuilder.java b/dev/core/src/com/google/gwt/dev/javac/CompilationStateBuilder.java
index 49646ca..4d523fe 100644
--- a/dev/core/src/com/google/gwt/dev/javac/CompilationStateBuilder.java
+++ b/dev/core/src/com/google/gwt/dev/javac/CompilationStateBuilder.java
@@ -185,11 +185,11 @@
     return instance;
   }
 
-  private static void invalidateUnitsWithInvalidRefs(
+  private static void invalidateUnitsWithInvalidRefs(TreeLogger logger,
       Map<String, CompilationUnit> resultUnits, Set<ContentId> set) {
     Set<CompilationUnit> validResultUnits = new HashSet<CompilationUnit>(
         resultUnits.values());
-    CompilationUnitInvalidator.retainValidUnits(validResultUnits, set);
+    CompilationUnitInvalidator.retainValidUnits(logger, validResultUnits, set);
     for (Entry<String, CompilationUnit> entry : resultUnits.entrySet()) {
       CompilationUnit unit = entry.getValue();
       if (unit.isCompiled() && !validResultUnits.contains(unit)) {
@@ -260,7 +260,8 @@
     }
 
     // Winnow the reusable set of units down to those still valid.
-    CompilationUnitInvalidator.retainValidUnits(resultUnits.values());
+    CompilationUnitInvalidator.retainValidUnits(TreeLogger.NULL,
+        resultUnits.values());
 
     // Compile everything else.
     CompileMoreLater compileMoreLater = new CompileMoreLater();
@@ -279,7 +280,7 @@
     compileMoreLater.compile(logger, builders, resultUnits);
 
     // Invalidate units with invalid refs.
-    invalidateUnitsWithInvalidRefs(resultUnits,
+    invalidateUnitsWithInvalidRefs(logger, resultUnits,
         Collections.<ContentId> emptySet());
     return new CompilationState(logger, resultUnits.values(), compileMoreLater);
   }
@@ -306,8 +307,8 @@
     }
 
     // Winnow the reusable set of units down to those still valid.
-    CompilationUnitInvalidator.retainValidUnits(resultUnits.values(),
-        compileMoreLater.getValidDependencies());
+    CompilationUnitInvalidator.retainValidUnits(TreeLogger.NULL,
+        resultUnits.values(), compileMoreLater.getValidDependencies());
     for (CompilationUnit validUnit : resultUnits.values()) {
       compileMoreLater.addValidUnit(validUnit);
       // Report any existing errors as if the unit were recompiled.
@@ -323,7 +324,7 @@
     }
 
     compileMoreLater.compile(logger, builders, resultUnits);
-    invalidateUnitsWithInvalidRefs(resultUnits,
+    invalidateUnitsWithInvalidRefs(logger, resultUnits,
         compileMoreLater.getValidDependencies());
     return resultUnits.values();
   }
diff --git a/dev/core/src/com/google/gwt/dev/javac/CompilationUnitInvalidator.java b/dev/core/src/com/google/gwt/dev/javac/CompilationUnitInvalidator.java
index a317d3b..1ec0d4f 100644
--- a/dev/core/src/com/google/gwt/dev/javac/CompilationUnitInvalidator.java
+++ b/dev/core/src/com/google/gwt/dev/javac/CompilationUnitInvalidator.java
@@ -55,12 +55,15 @@
     }
   }
 
-  public static void retainValidUnits(Collection<CompilationUnit> units) {
-    retainValidUnits(units, Collections.<ContentId> emptySet());
+  public static void retainValidUnits(TreeLogger logger,
+      Collection<CompilationUnit> units) {
+    retainValidUnits(logger, units, Collections.<ContentId> emptySet());
   }
 
-  public static void retainValidUnits(Collection<CompilationUnit> units,
-      Set<ContentId> knownValidRefs) {
+  public static void retainValidUnits(TreeLogger logger,
+      Collection<CompilationUnit> units, Set<ContentId> knownValidRefs) {
+    logger = logger.branch(TreeLogger.TRACE, "Removing invalidated units");
+
     // Assume all units are valid at first.
     Set<CompilationUnit> currentlyValidUnits = new HashSet<CompilationUnit>();
     Set<ContentId> currentlyValidRefs = new HashSet<ContentId>(knownValidRefs);
@@ -74,14 +77,19 @@
     boolean changed;
     do {
       changed = false;
-      iterating : for (Iterator<CompilationUnit> it = currentlyValidUnits.iterator(); it.hasNext();) {
+      for (Iterator<CompilationUnit> it = currentlyValidUnits.iterator(); it.hasNext();) {
         CompilationUnit unitToCheck = it.next();
+        TreeLogger branch = null;
         for (ContentId ref : unitToCheck.getDependencies()) {
           if (!currentlyValidRefs.contains(ref)) {
-            it.remove();
-            currentlyValidRefs.remove(unitToCheck.getContentId());
-            changed = true;
-            continue iterating;
+            if (branch == null) {
+              branch = logger.branch(TreeLogger.DEBUG, "Compilation unit '"
+                  + unitToCheck + "' is removed due to invalid reference(s):");
+              it.remove();
+              currentlyValidRefs.remove(unitToCheck.getContentId());
+              changed = true;
+            }
+            branch.log(TreeLogger.DEBUG, ref.get());
           }
         }
       }