Revision: 6856
Author: [email protected]
Date: Wed Nov 11 16:03:42 2009
Log: Removes OptionCompilationStateRetained in favor of a new GC strategy.

Review by: bobv
http://code.google.com/p/google-web-toolkit/source/detail?r=6856

Deleted:
   
/trunk/dev/core/src/com/google/gwt/dev/util/arg/OptionCompilationStateRetained.java
Modified:
  /trunk/dev/core/src/com/google/gwt/dev/CompilePerms.java
  /trunk/dev/core/src/com/google/gwt/dev/Precompile.java
  /trunk/dev/core/src/com/google/gwt/dev/javac/StandardGeneratorContext.java
  /trunk/dev/core/src/com/google/gwt/dev/jdt/RebindPermutationOracle.java
  /trunk/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
  /trunk/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
  /trunk/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
  /trunk/user/src/com/google/gwt/junit/JUnitShell.java

=======================================
---  
/trunk/dev/core/src/com/google/gwt/dev/util/arg/OptionCompilationStateRetained.java
      
Wed Oct 28 09:10:53 2009
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may  
not
- * use this file except in compliance with the License. You may obtain a  
copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,  
WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations  
under
- * the License.
- */
-package com.google.gwt.dev.util.arg;
-
-/**
- * Option for retaining {...@link com.google.gwt.dev.javac.CompilationState}  
during
- * a compile. Does not correspond to any command line option. This is used  
by
- * hosted mode when doing a web mode compile to preserve the compilation  
state.
- */
-public interface OptionCompilationStateRetained {
-  boolean isCompilationStateRetained();
-
-  void setCompilationStateRetained(boolean retained);
-}
=======================================
--- /trunk/dev/core/src/com/google/gwt/dev/CompilePerms.java    Tue Nov 10  
20:42:30 2009
+++ /trunk/dev/core/src/com/google/gwt/dev/CompilePerms.java    Wed Nov 11  
16:03:42 2009
@@ -334,7 +334,6 @@
        File compilerWorkDir, PrecompileOptions precompilationOptions)
        throws UnableToCompleteException {
      precompilationOptions.setOptimizePrecompile(false);
-    precompilationOptions.setCompilationStateRetained(true);
      precompilationOptions.setGenDir(null);

      ModuleDef module = ModuleDefLoader.loadFromClassPath(logger,  
moduleName);
=======================================
--- /trunk/dev/core/src/com/google/gwt/dev/Precompile.java      Tue Nov 10  
20:42:30 2009
+++ /trunk/dev/core/src/com/google/gwt/dev/Precompile.java      Wed Nov 11  
16:03:42 2009
@@ -175,10 +175,6 @@
      public boolean isClassMetadataDisabled() {
        return jjsOptions.isClassMetadataDisabled();
      }
-
-    public boolean isCompilationStateRetained() {
-      return jjsOptions.isCompilationStateRetained();
-    }

      public boolean isDraftCompile() {
        return jjsOptions.isDraftCompile();
@@ -227,10 +223,6 @@
      public void setClassMetadataDisabled(boolean disabled) {
        jjsOptions.setClassMetadataDisabled(disabled);
      }
-
-    public void setCompilationStateRetained(boolean retained) {
-      jjsOptions.setCompilationStateRetained(retained);
-    }

      public void setDisableUpdateCheck(boolean disabled) {
        disableUpdateCheck = disabled;
@@ -288,8 +280,8 @@
    private static class DistillerRebindPermutationOracle implements
        RebindPermutationOracle {

-    private final CompilationState compilationState;
-    private final StandardGeneratorContext generatorContext;
+    private CompilationState compilationState;
+    private StandardGeneratorContext generatorContext;
      private final Permutation[] permutations;
      private final StaticPropertyOracle[] propertyOracles;
      private final RebindOracle[] rebindOracles;
@@ -316,6 +308,12 @@
          permutations[i] = new Permutation(i, propertyOracles[i]);
        }
      }
+
+    public void clear() {
+      generatorContext.clear();
+      compilationState = null;
+      generatorContext = null;
+    }

      public String[] getAllPossibleRebindAnswers(TreeLogger logger,
          String requestTypeName) throws UnableToCompleteException {
@@ -466,6 +464,8 @@
            module, compilationState, generatorArtifacts,
            new PropertyPermutations(module.getProperties()), genDir,
            generatorResourcesDir);
+      // Allow GC later.
+      compilationState = null;
        if (dumpSignatureFile != null) {
          // Dump early to avoid generated types.
          SignatureDumper.dumpSignatures(logger,
@@ -505,6 +505,8 @@
        DistillerRebindPermutationOracle rpo = new  
DistillerRebindPermutationOracle(
            module, compilationState, generatedArtifacts, allPermutations,
            genDir, generatorResourcesDir);
+      // Allow GC later.
+      compilationState = null;
        PerfLogger.start("Precompile");
        UnifiedAst unifiedAst = getCompiler(module).precompile(logger,  
module,
            rpo, declEntryPts, null, jjsOptions, rpo.getPermuationCount() ==  
1);
=======================================
---  
/trunk/dev/core/src/com/google/gwt/dev/javac/StandardGeneratorContext.java      
 
Wed Nov 11 07:10:41 2009
+++  
/trunk/dev/core/src/com/google/gwt/dev/javac/StandardGeneratorContext.java      
 
Wed Nov 11 16:03:42 2009
@@ -208,7 +208,7 @@

    private final Set<GeneratedUnit> committedGeneratedCups = new  
HashSet<GeneratedUnit>();

-  private final CompilationState compilationState;
+  private CompilationState compilationState;

    private Class<? extends Generator> currentGenerator;

@@ -246,6 +246,14 @@
        diskCache = new DiskCache();
      }
    }
+
+  /**
+   * Frees memory used up by compilation state.
+   */
+  public void clear() {
+    compilationState = null;
+    generators.clear();
+  }

    /**
     * Commits a pending generated type.
=======================================
--- /trunk/dev/core/src/com/google/gwt/dev/jdt/RebindPermutationOracle.java     
 
Tue Nov 10 20:42:30 2009
+++ /trunk/dev/core/src/com/google/gwt/dev/jdt/RebindPermutationOracle.java     
 
Wed Nov 11 16:03:42 2009
@@ -26,6 +26,13 @@
   */
  public interface RebindPermutationOracle {

+  /**
+   * Called when the compiler is done with this oracle, so memory can be  
freed
+   * up. After calling this method, the only legal method to call is
+   * {...@link #getAllPossibleRebindAnswers}.
+   */
+  void clear();
+
    /**
     * Always answers with at least one name.
     */
=======================================
--- /trunk/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java  Tue Aug  4  
09:54:58 2009
+++ /trunk/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java  Wed Nov 11  
16:03:42 2009
@@ -16,7 +16,6 @@
  package com.google.gwt.dev.jjs;

  import com.google.gwt.dev.util.arg.OptionAggressivelyOptimize;
-import com.google.gwt.dev.util.arg.OptionCompilationStateRetained;
  import com.google.gwt.dev.util.arg.OptionDisableCastChecking;
  import com.google.gwt.dev.util.arg.OptionDisableClassMetadata;
  import com.google.gwt.dev.util.arg.OptionDraftCompile;
@@ -24,8 +23,8 @@
  import com.google.gwt.dev.util.arg.OptionOptimizePrecompile;
  import com.google.gwt.dev.util.arg.OptionRunAsyncEnabled;
  import com.google.gwt.dev.util.arg.OptionScriptStyle;
-import com.google.gwt.dev.util.arg.OptionSoycEnabled;
  import com.google.gwt.dev.util.arg.OptionSoycDetailed;
+import com.google.gwt.dev.util.arg.OptionSoycEnabled;

  /**
   * Controls options for the {...@link JavaToJavaScriptCompiler}.
@@ -33,5 +32,5 @@
  public interface JJSOptions extends OptionAggressivelyOptimize,
      OptionDisableClassMetadata, OptionDisableCastChecking,  
OptionDraftCompile,
      OptionEnableAssertions, OptionRunAsyncEnabled, OptionScriptStyle,
-    OptionSoycEnabled, OptionSoycDetailed, OptionCompilationStateRetained,  
OptionOptimizePrecompile {
-}
+    OptionSoycEnabled, OptionSoycDetailed, OptionOptimizePrecompile {
+}
=======================================
--- /trunk/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java      Tue Aug 
  
4 09:54:58 2009
+++ /trunk/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java      Wed Nov 
 
11 16:03:42 2009
@@ -23,7 +23,6 @@
  public class JJSOptionsImpl implements JJSOptions, Serializable {

    private boolean aggressivelyOptimize = true;
-  private boolean compilationStateRetained = false;
    private boolean disableCastChecking = false;
    private boolean disableClassMetadata = false;
    private boolean draftCompile = false;
@@ -45,7 +44,6 @@
      setAggressivelyOptimize(other.isAggressivelyOptimize());
      setCastCheckingDisabled(other.isCastCheckingDisabled());
      setClassMetadataDisabled(other.isClassMetadataDisabled());
-    setCompilationStateRetained(other.isCompilationStateRetained());
      setDraftCompile(other.isDraftCompile());
      setEnableAssertions(other.isEnableAssertions());
      setOutput(other.getOutput());
@@ -69,10 +67,6 @@
    public boolean isClassMetadataDisabled() {
      return disableClassMetadata;
    }
-
-  public boolean isCompilationStateRetained() {
-    return compilationStateRetained;
-  }

    public boolean isDraftCompile() {
      return draftCompile;
@@ -109,10 +103,6 @@
    public void setClassMetadataDisabled(boolean disabled) {
      disableClassMetadata = disabled;
    }
-
-  public void setCompilationStateRetained(boolean retained) {
-    compilationStateRetained = retained;
-  }

    public void setDraftCompile(boolean draft) {
      this.draftCompile = draft;
=======================================
---  
/trunk/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java        
 
Wed Nov 11 11:58:14 2009
+++  
/trunk/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java        
 
Wed Nov 11 16:03:42 2009
@@ -424,9 +424,7 @@
          logger, allRootTypes.toArray(new String[allRootTypes.size()]),  
rpo);

      // Free up memory.
-    if (!options.isCompilationStateRetained()) {
-      module.clear();
-    }
+    rpo.clear();
      try {
        // HACK: Make i18n free its internal static state.
        Class<?> clazz = Class.forName(
@@ -435,6 +433,7 @@
        clazz.getDeclaredMethod("clear").invoke(null);
      } catch (Throwable e) {
      }
+    Memory.maybeDumpMemory("GoldenCudsBuilt");

      // Check for compilation problems. We don't log here because any  
problems
      // found here will have already been logged by AbstractCompiler.
=======================================
--- /trunk/user/src/com/google/gwt/junit/JUnitShell.java        Wed Nov 11  
15:50:48 2009
+++ /trunk/user/src/com/google/gwt/junit/JUnitShell.java        Wed Nov 11  
16:03:42 2009
@@ -911,7 +911,6 @@
        }
      }
      LegacyCompilerOptions newOptions = new GWTCompilerOptionsImpl(options);
-    newOptions.setCompilationStateRetained(true);
      if (!new GWTCompiler(newOptions).run(getTopLogger(), module)) {
        throw new UnableToCompleteException();
      }

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

Reply via email to