Reviewers: jbrosenberg, tobyr,
Description:
Turns on reading from archives by default.
Adds an optimization to CompileModule to not load multiple files.
Lowers the priority of some error messages so they don't fill
the screen with useless output when TRACE is turned on.
Please review this at http://gwt-code-reviews.appspot.com/1461801/
Affected files:
M dev/core/src/com/google/gwt/dev/CompileModule.java
M dev/core/src/com/google/gwt/dev/DevModeBase.java
M dev/core/src/com/google/gwt/dev/Precompile.java
M dev/core/src/com/google/gwt/dev/cfg/ModuleDefLoader.java
M dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java
M dev/core/src/com/google/gwt/dev/javac/CompilationStateBuilder.java
M dev/core/src/com/google/gwt/dev/javac/UnitCacheFactory.java
Index: dev/core/src/com/google/gwt/dev/CompileModule.java
===================================================================
--- dev/core/src/com/google/gwt/dev/CompileModule.java (revision 10342)
+++ dev/core/src/com/google/gwt/dev/CompileModule.java (working copy)
@@ -186,6 +186,8 @@
*/
public boolean run(final TreeLogger logger) throws
UnableToCompleteException {
+ Set<String> alreadyLoadedArchives = new HashSet<String>();
+
// TODO(zundel): There is an optimal order to compile these modules in.
// Modify ModuleDefLoader to be able to figure that out and sort them
for
// us.
@@ -211,10 +213,14 @@
}
for (URL archiveURL : archiveURLs) {
+ String archiveURLstring = archiveURL.toString();
+ if (alreadyLoadedArchives.contains(archiveURLstring)) {
+ continue;
+ }
+ alreadyLoadedArchives.add(archiveURLstring);
SpeedTracerLogger.Event loadArchive =
-
SpeedTracerLogger.start(CompilerEventType.LOAD_ARCHIVE, "dependentModule",
archiveURL
- .toString());
-
+
SpeedTracerLogger.start(CompilerEventType.LOAD_ARCHIVE, "dependentModule",
archiveURL
+ .toString());
try {
CompilationUnitArchive archive =
CompilationUnitArchive.createFromURL(archiveURL);
// Pre-populate CompilationStateBuilder with .gwtar files
Index: dev/core/src/com/google/gwt/dev/DevModeBase.java
===================================================================
--- dev/core/src/com/google/gwt/dev/DevModeBase.java (revision 10342)
+++ dev/core/src/com/google/gwt/dev/DevModeBase.java (working copy)
@@ -103,9 +103,7 @@
ModuleDef moduleDef = loadModule(logger, moduleName, true);
assert (moduleDef != null);
- if (Boolean.valueOf(System.getProperty("gwt.usearchives"))) {
- Precompile.preloadArchives(logger, moduleDef);
- }
+ ArchivePreloader.preloadArchives(logger, moduleDef);
CompilationState compilationState =
moduleDef.getCompilationState(logger, !options.isStrict());
Index: dev/core/src/com/google/gwt/dev/Precompile.java
===================================================================
--- dev/core/src/com/google/gwt/dev/Precompile.java (revision 10342)
+++ dev/core/src/com/google/gwt/dev/Precompile.java (working copy)
@@ -29,9 +29,7 @@
import com.google.gwt.dev.cfg.ModuleDefLoader;
import com.google.gwt.dev.cfg.PropertyPermutations;
import com.google.gwt.dev.javac.CompilationState;
-import com.google.gwt.dev.javac.CompilationStateBuilder;
import com.google.gwt.dev.javac.CompilationUnit;
-import com.google.gwt.dev.javac.CompilationUnitArchive;
import com.google.gwt.dev.jjs.AbstractCompiler;
import com.google.gwt.dev.jjs.JJSOptions;
import com.google.gwt.dev.jjs.JavaScriptCompiler;
@@ -47,9 +45,7 @@
import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger.Event;
import java.io.File;
-import java.io.IOException;
import java.lang.management.ManagementFactory;
-import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -244,9 +240,7 @@
// doesn't block when the library is accessed for the first time.
new GraphicsInitThread().start();
- if (Boolean.valueOf(System.getProperty("gwt.usearchives"))) {
- preloadArchives(logger, module);
- }
+ ArchivePreloader.preloadArchives(logger, module);
try {
CompilationState compilationState =
@@ -339,36 +333,6 @@
return null;
} finally {
precompileEvent.end();
- }
- }
-
- /**
- * Load any .gwtar files into the cache before building CompilationState.
- */
- static void preloadArchives(TreeLogger logger, ModuleDef module) {
- SpeedTracerLogger.Event loadArchive =
SpeedTracerLogger.start(CompilerEventType.LOAD_ARCHIVE);
- try {
- Collection<URL> archiveURLs =
module.getAllCompilationUnitArchiveURLs();
- if (logger.isLoggable(TreeLogger.TRACE) && archiveURLs != null) {
- for (URL archiveURL : archiveURLs) {
- logger.log(TreeLogger.TRACE, "Found archived module: " +
archiveURL);
- }
- }
-
- for (URL archiveURL : archiveURLs) {
- try {
- CompilationUnitArchive archive =
CompilationUnitArchive.createFromURL(archiveURL);
- // Pre-populate CompilationStateBuilder with .gwt files
- CompilationStateBuilder.addArchive(archive);
- } catch (IOException ex) {
- logger.log(TreeLogger.WARN, "Unable to read: " + archiveURL + ".
Skipping: " + ex);
- } catch (ClassNotFoundException ex) {
- logger.log(TreeLogger.WARN, "Incompatible archived module: " +
archiveURL
- + ". Skipping: " + ex);
- }
- }
- } finally {
- loadArchive.end();
}
}
Index: dev/core/src/com/google/gwt/dev/cfg/ModuleDefLoader.java
===================================================================
--- dev/core/src/com/google/gwt/dev/cfg/ModuleDefLoader.java (revision
10342)
+++ dev/core/src/com/google/gwt/dev/cfg/ModuleDefLoader.java (working copy)
@@ -211,10 +211,9 @@
@Override
public void load(TreeLogger logger, String moduleName, ModuleDef
moduleDef)
throws UnableToCompleteException {
+ logger.log(TreeLogger.TRACE, "Loading module '" + moduleName
+ "'");
for (String inherit : inherits) {
- TreeLogger branch = logger.branch(TreeLogger.TRACE,
- "Loading inherited module '" + inherit + "'", null);
- nestedLoad(branch, inherit, moduleDef);
+ nestedLoad(logger, inherit, moduleDef);
}
}
};
@@ -223,23 +222,25 @@
/**
* Loads a new module into <code>moduleDef</code> as an included module.
*
- * @param logger Logs the process.
+ * @param parentLogger Logs the process.
* @param moduleName The module to load.
* @param moduleDef The module to add the new module to.
* @throws UnableToCompleteException
*/
- void nestedLoad(TreeLogger logger, String moduleName, ModuleDef
moduleDef)
+ void nestedLoad(TreeLogger parentLogger, String moduleName, ModuleDef
moduleDef)
throws UnableToCompleteException {
if (alreadyLoadedModules.contains(moduleName)) {
- if (logger.isLoggable(TreeLogger.TRACE)) {
- logger.log(TreeLogger.TRACE, "Module '" + moduleName
+ if (parentLogger.isLoggable(TreeLogger.SPAM)) {
+ parentLogger.branch(TreeLogger.SPAM, "Module '" + moduleName
+ "' has already been loaded and will be skipped", null);
}
return;
- } else {
- alreadyLoadedModules.add(moduleName);
- }
+ }
+
+ TreeLogger logger = parentLogger.branch(TreeLogger.DEBUG,
+ "Loading inherited module '" + moduleName + "'", null);
+ alreadyLoadedModules.add(moduleName);
// Find the specified module using the classpath.
//
@@ -249,8 +250,8 @@
if (moduleURL != null) {
String externalForm = moduleURL.toExternalForm();
- if (logger.isLoggable(TreeLogger.TRACE)) {
- logger.log(TreeLogger.TRACE, "Module location: " + externalForm,
null);
+ if (logger.isLoggable(TreeLogger.DEBUG)) {
+ logger.log(TreeLogger.DEBUG, "Module location: " + externalForm,
null);
}
try {
if ((!(externalForm.startsWith("jar:file")))
@@ -271,10 +272,8 @@
}
}
if (moduleURL == null) {
- String msg = "Unable to find '"
- + resName
- + "' on your classpath; could be a typo, or maybe you forgot to
include a classpath entry for source?";
- logger.log(TreeLogger.ERROR, msg, null);
+ logger.log(TreeLogger.ERROR,"Unable to find '" + resName + "' on
your classpath; "
+ + "could be a typo, or maybe you forgot to include a classpath
entry for source?");
throw new UnableToCompleteException();
}
Index: dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java
===================================================================
--- dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java (revision
10342)
+++ dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java (working copy)
@@ -490,7 +490,7 @@
@SuppressWarnings("unused") // called reflectively
protected Schema __inherits_begin(String name)
throws UnableToCompleteException {
- TreeLogger branch = logger.branch(TreeLogger.TRACE,
+ TreeLogger branch = logger.branch(TreeLogger.DEBUG,
"Loading inherited module '" + name + "'", null);
loader.nestedLoad(branch, name, moduleDef);
return null;
Index: dev/core/src/com/google/gwt/dev/javac/CompilationStateBuilder.java
===================================================================
--- dev/core/src/com/google/gwt/dev/javac/CompilationStateBuilder.java
(revision 10342)
+++ dev/core/src/com/google/gwt/dev/javac/CompilationStateBuilder.java
(working copy)
@@ -315,7 +315,7 @@
// Sort, then report all errors (re-report for cached units).
Collections.sort(resultUnits, CompilationUnit.COMPARATOR);
- logger = logger.branch(TreeLogger.DEBUG, "Validating newly compiled
units");
+ logger = logger.branch(TreeLogger.DEBUG, "Validating units:");
int errorCount = 0;
for (CompilationUnit unit : resultUnits) {
if (CompilationProblemReporter.reportErrors(logger, unit,
suppressErrors)) {
@@ -440,7 +440,7 @@
builders.add(builder);
}
if (logger.isLoggable(TreeLogger.TRACE)) {
- logger.log(TreeLogger.TRACE, "Found " + cachedUnits.size() + "
cached units. Used "
+ logger.log(TreeLogger.TRACE, "Found " + cachedUnits.size() + "
cached/archived units. Used "
+ cachedUnits.size() + " / " + resources.size() + " units from
cache.");
}
Index: dev/core/src/com/google/gwt/dev/javac/UnitCacheFactory.java
===================================================================
--- dev/core/src/com/google/gwt/dev/javac/UnitCacheFactory.java (revision
10342)
+++ dev/core/src/com/google/gwt/dev/javac/UnitCacheFactory.java (working
copy)
@@ -51,7 +51,8 @@
if (propertyCacheDir != null) {
cacheDir = new File(propertyCacheDir);
} else if (cacheDir == null) {
- logger.log(TreeLogger.TRACE, "To enable persistent unit caching,
specify the -Dgwt.persistentunitcachedir=<dir> system property.");
+ logger.log(TreeLogger.TRACE, "Persistent caching disabled - no
directory specified.\n"
+ + "To enable persistent unit caching use
-Dgwt.persistentunitcachedir=<dir>");
}
if (cacheDir != null) {
try {
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors