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());
}
}
}