Revision: 10388
Author:   zun...@google.com
Date:     Thu Jun 23 16:28:29 2011
Log:      Patch for interim state of incremental compile.
If a user manually switches GwtAstBuilder on/off, cached units may
not have the AST partial data.

Review at http://gwt-code-reviews.appspot.com/1464804

http://code.google.com/p/google-web-toolkit/source/detail?r=10388

Modified:
 /trunk/dev/core/src/com/google/gwt/dev/javac/CompilationStateBuilder.java
 /trunk/dev/core/src/com/google/gwt/dev/javac/CompilationUnitArchive.java

=======================================
--- /trunk/dev/core/src/com/google/gwt/dev/javac/CompilationStateBuilder.java Mon Jun 20 09:36:25 2011 +++ /trunk/dev/core/src/com/google/gwt/dev/javac/CompilationStateBuilder.java Thu Jun 23 16:28:29 2011
@@ -340,13 +340,16 @@
    */
   public static void addArchive(CompilationUnitArchive module) {
     UnitCache unitCache = instance.unitCache;
-    for (CompilationUnit unit : module.getUnits().values()) {
- CompilationUnit cachedCompilationUnit = unitCache.find(unit.getResourcePath());
+    for (CachedCompilationUnit archivedUnit : module.getUnits().values()) {
+ if (archivedUnit.getTypesSerializedVersion() != GwtAstBuilder.getSerializationVersion()) {
+        continue;
+      }
+ CompilationUnit cachedCompilationUnit = unitCache.find(archivedUnit.getResourcePath()); // A previously cached unit might be from the persistent cache or another
-      // archive
+      // archive.
       if (cachedCompilationUnit == null
- || cachedCompilationUnit.getLastModified() < unit.getLastModified()) {
-        unitCache.addArchivedUnit(unit);
+ || cachedCompilationUnit.getLastModified() < archivedUnit.getLastModified()) {
+        unitCache.addArchivedUnit(archivedUnit);
       }
     }
   }
=======================================
--- /trunk/dev/core/src/com/google/gwt/dev/javac/CompilationUnitArchive.java Wed Jun 8 16:44:32 2011 +++ /trunk/dev/core/src/com/google/gwt/dev/javac/CompilationUnitArchive.java Thu Jun 23 16:28:29 2011
@@ -66,7 +66,7 @@
   }

   private final String topModuleName;
-  private transient Map<String, CompilationUnit> units;
+  private transient Map<String, CachedCompilationUnit> units;

   /**
* Create an archive object. Note that data is retained in memory only until
@@ -77,7 +77,7 @@
    *          {@link com.google.gwt.dev.CompileModule}.
    */
   public CompilationUnitArchive(String topModuleName) {
-    units = new TreeMap<String, CompilationUnit>();
+    units = new TreeMap<String, CachedCompilationUnit>();
     this.topModuleName = topModuleName;
   }

@@ -85,10 +85,10 @@
    * Add a compilation unit to the archive.
    */
   public void addUnit(CompilationUnit unit) {
-    units.put(unit.getResourcePath(), unit);
+    units.put(unit.getResourcePath(), unit.asCachedCompilationUnit());
   }

-  public CompilationUnit findUnit(String resourcePath) {
+  public CachedCompilationUnit findUnit(String resourcePath) {
     return units.get(resourcePath);
   }

@@ -102,7 +102,7 @@
   /**
    * Retrieve all units stored in this archive.
    */
-  public Map<String, CompilationUnit> getUnits() {
+  public Map<String, CachedCompilationUnit> getUnits() {
     return ImmutableMap.copyOf(units);
   }

@@ -119,20 +119,20 @@

private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
     stream.defaultReadObject();
-    units = new TreeMap<String, CompilationUnit>();
-    CompilationUnit unitsIn[] = (CompilationUnit[]) stream.readObject();
-    for (CompilationUnit unit : unitsIn) {
+    units = new TreeMap<String, CachedCompilationUnit>();
+ CachedCompilationUnit unitsIn[] = (CachedCompilationUnit[]) stream.readObject();
+    for (CachedCompilationUnit unit : unitsIn) {
       assert unit != null;
       addUnit(unit);
     }
   }

- // CompilationUnits are serialized as a sorted array in order to make sure the + // CachedCompilationUnits are serialized as a sorted array in order to make sure the
   // output format is deterministic.
   private void writeObject(ObjectOutputStream stream) throws IOException {
     stream.defaultWriteObject();
- CompilationUnit unitsOut[] = units.values().toArray(new CompilationUnit[units.size()]);
-    Arrays.sort(unitsOut, CompilationUnit.COMPARATOR);
+ CachedCompilationUnit unitsOut[] = units.values().toArray(new CachedCompilationUnit[units.size()]);
+    Arrays.sort(unitsOut, CachedCompilationUnit.COMPARATOR);
     stream.writeObject(unitsOut);
   }
 }

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to