Author: sco...@google.com Date: Thu Apr 2 13:42:06 2009 New Revision: 5165
Modified: trunk/dev/core/src/com/google/gwt/dev/javac/CompilationState.java trunk/dev/core/src/com/google/gwt/dev/javac/JavaSourceOracle.java trunk/dev/core/src/com/google/gwt/dev/javac/impl/JavaSourceOracleImpl.java trunk/dev/core/src/com/google/gwt/dev/resource/ResourceOracle.java trunk/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java trunk/dev/core/test/com/google/gwt/dev/javac/MockJavaSourceOracle.java trunk/dev/core/test/com/google/gwt/dev/javac/impl/MockResourceOracle.java trunk/dev/core/test/com/google/gwt/dev/shell/StandardGeneratorContextTest.java Log: Free up more memory from ResourceOracle, JavaSourceOracle, and more CompilationState during a compile. Review by: jat Modified: trunk/dev/core/src/com/google/gwt/dev/javac/CompilationState.java ============================================================================== --- trunk/dev/core/src/com/google/gwt/dev/javac/CompilationState.java (original) +++ trunk/dev/core/src/com/google/gwt/dev/javac/CompilationState.java Thu Apr 2 13:42:06 2009 @@ -138,9 +138,12 @@ it.remove(); } } + unitMap.clear(); updateExposedUnits(); jdtCompiler = null; mediator = new TypeOracleMediator(); + sourceOracle.clear(); + invalidatorState = new CompilationUnitInvalidator.InvalidatorState(); } /** Modified: trunk/dev/core/src/com/google/gwt/dev/javac/JavaSourceOracle.java ============================================================================== --- trunk/dev/core/src/com/google/gwt/dev/javac/JavaSourceOracle.java (original) +++ trunk/dev/core/src/com/google/gwt/dev/javac/JavaSourceOracle.java Thu Apr 2 13:42:06 2009 @@ -51,6 +51,12 @@ public interface JavaSourceOracle { /** + * Frees up all existing resources and transient internal state. The + * underlying ResourceOracle must be refreshed to be valid again. + */ + void clear(); + + /** * Returns an unmodifiable set of fully-qualified class names with constant * lookup time. */ Modified: trunk/dev/core/src/com/google/gwt/dev/javac/impl/JavaSourceOracleImpl.java ============================================================================== --- trunk/dev/core/src/com/google/gwt/dev/javac/impl/JavaSourceOracleImpl.java (original) +++ trunk/dev/core/src/com/google/gwt/dev/javac/impl/JavaSourceOracleImpl.java Thu Apr 2 13:42:06 2009 @@ -141,6 +141,15 @@ this.oracle = oracle; } + public void clear() { + cachedResources = Collections.emptySet(); + exposedClassNames = Collections.emptySet(); + exposedSourceFiles = Collections.emptySet(); + exposedSourceMap = Collections.emptyMap(); + sourceFiles.clear(); + oracle.clear(); + } + public Set<String> getClassNames() { refresh(); return exposedClassNames; Modified: trunk/dev/core/src/com/google/gwt/dev/resource/ResourceOracle.java ============================================================================== --- trunk/dev/core/src/com/google/gwt/dev/resource/ResourceOracle.java (original) +++ trunk/dev/core/src/com/google/gwt/dev/resource/ResourceOracle.java Thu Apr 2 13:42:06 2009 @@ -56,6 +56,13 @@ public interface ResourceOracle { /** + * Frees up all existing resources and transient internal state. All returned + * collections will be empty after this call until this ResoruceOracle is + * refreshed. + */ + void clear(); + + /** * Returns an unmodifiable set of unique abstract path names with constant * lookup time. */ Modified: trunk/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java ============================================================================== --- trunk/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java (original) +++ trunk/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java Thu Apr 2 13:42:06 2009 @@ -270,6 +270,13 @@ this(getAllClassPathEntries(logger, classLoader)); } + public void clear() { + exposedPathNames = Collections.emptySet(); + exposedResourceMap = Collections.emptyMap(); + exposedResources = Collections.emptySet(); + internalMap = Collections.emptyMap(); + } + public Set<String> getPathNames() { return exposedPathNames; } Modified: trunk/dev/core/test/com/google/gwt/dev/javac/MockJavaSourceOracle.java ============================================================================== --- trunk/dev/core/test/com/google/gwt/dev/javac/MockJavaSourceOracle.java (original) +++ trunk/dev/core/test/com/google/gwt/dev/javac/MockJavaSourceOracle.java Thu Apr 2 13:42:06 2009 @@ -38,6 +38,9 @@ add(sourceFiles); } + public void clear() { + } + public Set<String> getClassNames() { return exportedMap.keySet(); } Modified: trunk/dev/core/test/com/google/gwt/dev/javac/impl/MockResourceOracle.java ============================================================================== --- trunk/dev/core/test/com/google/gwt/dev/javac/impl/MockResourceOracle.java (original) +++ trunk/dev/core/test/com/google/gwt/dev/javac/impl/MockResourceOracle.java Thu Apr 2 13:42:06 2009 @@ -38,6 +38,9 @@ add(resources); } + public void clear() { + } + public Set<String> getPathNames() { return exportedMap.keySet(); } Modified: trunk/dev/core/test/com/google/gwt/dev/shell/StandardGeneratorContextTest.java ============================================================================== --- trunk/dev/core/test/com/google/gwt/dev/shell/StandardGeneratorContextTest.java (original) +++ trunk/dev/core/test/com/google/gwt/dev/shell/StandardGeneratorContextTest.java Thu Apr 2 13:42:06 2009 @@ -57,6 +57,9 @@ public MockCompilationState() { super(TreeLogger.NULL, new JavaSourceOracle() { + public void clear() { + } + public Set<String> getClassNames() { return Collections.emptySet(); } @@ -123,12 +126,12 @@ public InputStream openContents() { return new ByteArrayInputStream(Util.getBytes("w00t!")); } - + @Override public boolean wasRerooted() { return false; } - + }; } return null; --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---