Revision: 6898
Author: [email protected]
Date: Fri Nov 13 15:37:33 2009
Log: Fix generators being interleaved between threads, since most  
generators are
not thread-safe.

Patch by: jat
Review by: spoon (desk), scottb (TBR), bobv(TBR)

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

Modified:
  /trunk/dev/core/src/com/google/gwt/dev/shell/ShellModuleSpaceHost.java

=======================================
--- /trunk/dev/core/src/com/google/gwt/dev/shell/ShellModuleSpaceHost.java      
 
Tue Nov 10 20:42:30 2009
+++ /trunk/dev/core/src/com/google/gwt/dev/shell/ShellModuleSpaceHost.java      
 
Fri Nov 13 15:37:33 2009
@@ -31,6 +31,9 @@
   */
  public class ShellModuleSpaceHost implements ModuleSpaceHost {

+  // TODO(jat): hack to try and serialize rebinds
+  private static final Object rebindLock = new Object[0];
+
    protected final CompilationState compilationState;

    protected final File genDir;
@@ -111,13 +114,15 @@

    public String rebind(TreeLogger logger, String sourceTypeName)
        throws UnableToCompleteException {
-    checkForModuleSpace();
-    return rebindOracle.rebind(logger, sourceTypeName, new  
ArtifactAcceptor() {
-      public void accept(TreeLogger logger, ArtifactSet  
newlyGeneratedArtifacts)
-          throws UnableToCompleteException {
-        artifactAcceptor.accept(logger, newlyGeneratedArtifacts);
-      }
-    });
+    synchronized (rebindLock) {
+      checkForModuleSpace();
+      return rebindOracle.rebind(logger, sourceTypeName, new  
ArtifactAcceptor() {
+        public void accept(TreeLogger logger, ArtifactSet  
newlyGeneratedArtifacts)
+        throws UnableToCompleteException {
+          artifactAcceptor.accept(logger, newlyGeneratedArtifacts);
+        }
+      });
+    }
    }

    private void checkForModuleSpace() {

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

Reply via email to