Author: [email protected]
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
-~----------~----~----~----~------~----~------~--~---