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

Reply via email to