Author: [email protected]
Date: Wed May 20 14:35:08 2009
New Revision: 5447
Added:
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/DependencyRecorder.java
- copied, changed from r5414,
/branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/DependencyRecorderImpl.java
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/SplitPointRecorder.java
- copied, changed from r5414,
/branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/SplitPointRecorderImpl.java
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/StoryRecorder.java
- copied, changed from r5414,
/branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/StoryRecorderImpl.java
Removed:
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/SplitPointRecorder.java
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/StoryRecorder.java
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/DependencyRecorderImpl.java
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/SplitPointRecorderImpl.java
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/StoryRecorderImpl.java
Modified:
branches/snapshot-2009.05.12-r5406/branch-info.txt
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/AbstractLinker.java
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/CompilationAnalysis.java
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/SyntheticArtifact.java
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardCompilationAnalysis.java
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/linker/SoycReportLinker.java
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
Log:
Merging trunk c5445 into this branch.
Modified: branches/snapshot-2009.05.12-r5406/branch-info.txt
==============================================================================
--- branches/snapshot-2009.05.12-r5406/branch-info.txt (original)
+++ branches/snapshot-2009.05.12-r5406/branch-info.txt Wed May 20 14:35:08
2009
@@ -6,3 +6,4 @@
/branches/snapshot-2009.05.12-r5406 was created (r5412) as a straight copy
from /trunk/@5406
Merges:
+/trunk c5445 was merged into this branch
Modified:
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/AbstractLinker.java
==============================================================================
---
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/AbstractLinker.java
(original)
+++
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/AbstractLinker.java
Wed May 20 14:35:08 2009
@@ -38,7 +38,7 @@
*/
protected final SyntheticArtifact emitBytes(TreeLogger logger, byte[]
what,
String partialPath) throws UnableToCompleteException {
- return new SyntheticArtifact(logger, getClass(), partialPath, what);
+ return new SyntheticArtifact(getClass(), partialPath, what);
}
/**
@@ -53,7 +53,7 @@
*/
protected final SyntheticArtifact emitBytes(TreeLogger logger, byte[]
what,
String partialPath, long lastModified) throws
UnableToCompleteException {
- return new SyntheticArtifact(logger, getClass(), partialPath, what,
lastModified);
+ return new SyntheticArtifact(getClass(), partialPath, what,
lastModified);
}
/**
Modified:
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/CompilationAnalysis.java
==============================================================================
---
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/CompilationAnalysis.java
(original)
+++
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/CompilationAnalysis.java
Wed May 20 14:35:08 2009
@@ -17,8 +17,6 @@
import com.google.gwt.core.ext.Linker;
-import java.io.File;
-
/**
* Represents analysis data for a CompilationResult.
*/
@@ -31,17 +29,17 @@
/**
* @return a file of dependencies
*/
- public abstract File getDepFile();
+ public abstract EmittedArtifact getDepFile();
/**
* @return a file of split points
*/
- public abstract File getSplitPointsFile();
+ public abstract EmittedArtifact getSplitPointsFile();
/**
* @return a file of stories
*/
- public abstract File getStoriesFile();
+ public abstract EmittedArtifact getStoriesFile();
@Override
public final int hashCode() {
@@ -50,9 +48,9 @@
assert (getStoriesFile() != null);
assert (getSplitPointsFile() != null);
- return 17 * (37 + getDepFile().getName().hashCode())
- + (37 + getStoriesFile().getName().hashCode())
- + (37 + getSplitPointsFile().getName().hashCode());
+ return 17 * (37 + getDepFile().getPartialPath().hashCode())
+ + (37 + getStoriesFile().getPartialPath().hashCode())
+ + (37 + getSplitPointsFile().getPartialPath().hashCode());
}
@Override
@@ -64,15 +62,16 @@
return 1;
} else if ((getDepFile() != null) && (o.getDepFile() == null)) {
return -1;
- } else if (getDepFile().getName().compareTo(o.getDepFile().getName())
== 0) {
+ } else if (getDepFile().getPartialPath().compareTo(
+ o.getDepFile().getPartialPath()) == 0) {
if ((getStoriesFile() == null) && (o.getStoriesFile() == null)) {
return 0;
} else if ((getStoriesFile() == null) && (o.getStoriesFile() !=
null)) {
return 1;
} else if ((getStoriesFile() != null) && (o.getStoriesFile() ==
null)) {
return -1;
- } else if (getStoriesFile().getName().compareTo(
- o.getStoriesFile().getName()) == 0) {
+ } else if (getStoriesFile().getPartialPath().compareTo(
+ o.getStoriesFile().getPartialPath()) == 0) {
if ((getSplitPointsFile() == null) && (o.getSplitPointsFile() ==
null)) {
return 0;
}
@@ -82,15 +81,16 @@
&& (o.getSplitPointsFile() == null)) {
return -1;
} else {
- return getSplitPointsFile().getName().compareTo(
- o.getSplitPointsFile().getName());
+ return getSplitPointsFile().getPartialPath().compareTo(
+ o.getSplitPointsFile().getPartialPath());
}
} else {
- return getStoriesFile().getName().compareTo(
- o.getStoriesFile().getName());
+ return getStoriesFile().getPartialPath().compareTo(
+ o.getStoriesFile().getPartialPath());
}
} else {
- return getDepFile().getName().compareTo(o.getDepFile().getName());
+ return getDepFile().getPartialPath().compareTo(
+ o.getDepFile().getPartialPath());
}
}
Modified:
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/SyntheticArtifact.java
==============================================================================
---
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/SyntheticArtifact.java
(original)
+++
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/SyntheticArtifact.java
Wed May 20 14:35:08 2009
@@ -19,9 +19,14 @@
import com.google.gwt.core.ext.TreeLogger;
import com.google.gwt.core.ext.UnableToCompleteException;
import com.google.gwt.dev.util.DiskCache;
+import com.google.gwt.dev.util.Util;
import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
import java.io.OutputStream;
/**
@@ -31,14 +36,14 @@
private static final DiskCache diskCache = new DiskCache();
private final long lastModified;
- private final long token;
+ private transient long token;
- SyntheticArtifact(TreeLogger logger, Class<? extends Linker> linkerType,
+ public SyntheticArtifact(Class<? extends Linker> linkerType,
String partialPath, byte[] data) {
- this(logger, linkerType, partialPath, data,
System.currentTimeMillis());
+ this(linkerType, partialPath, data, System.currentTimeMillis());
}
- SyntheticArtifact(TreeLogger logger, Class<? extends Linker> linkerType,
+ public SyntheticArtifact(Class<? extends Linker> linkerType,
String partialPath, byte[] data, long lastModified) {
super(linkerType, partialPath);
assert data != null;
@@ -61,5 +66,18 @@
public void writeTo(TreeLogger logger, OutputStream out)
throws UnableToCompleteException {
diskCache.writeTo(token, out);
+ }
+
+ private void readObject(ObjectInputStream stream) throws IOException,
+ ClassNotFoundException {
+ stream.defaultReadObject();
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ Util.copyNoClose(stream, baos);
+ token = diskCache.writeByteArray(baos.toByteArray());
+ }
+
+ private void writeObject(ObjectOutputStream stream) throws IOException {
+ stream.defaultWriteObject();
+ diskCache.writeTo(token, stream);
}
}
Modified:
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardCompilationAnalysis.java
==============================================================================
---
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardCompilationAnalysis.java
(original)
+++
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardCompilationAnalysis.java
Wed May 20 14:35:08 2009
@@ -15,11 +15,9 @@
*/
package com.google.gwt.core.ext.linker.impl;
-import com.google.gwt.core.ext.TreeLogger;
-import com.google.gwt.core.ext.UnableToCompleteException;
import com.google.gwt.core.ext.linker.CompilationAnalysis;
-
-import java.io.File;
+import com.google.gwt.core.ext.linker.SyntheticArtifact;
+import com.google.gwt.core.linker.SoycReportLinker;
/**
* An implementation of CompilationAnalysis. This class transforms
SourceInfos
@@ -29,48 +27,54 @@
public class StandardCompilationAnalysis extends CompilationAnalysis {
/**
+ * A SOYC artifact. The existence of this class is an implementation
detail.
+ */
+ public static class SoycArtifact extends SyntheticArtifact {
+ public SoycArtifact(String partialPath, byte[] bytes) {
+ super(SoycReportLinker.class, partialPath, bytes);
+ setPrivate(true);
+ }
+ }
+
+ /**
* File containing method-level control-flow dependencies (corresponding
to
* the current report).
*/
- private File depFile;
+ private SoycArtifact depFile;
/**
* File containing split points.
*/
- private File splitPointsFile;
+ private SoycArtifact splitPointsFile;
/**
* File containing stories.
*/
- private File storiesFile;
+ private SoycArtifact storiesFile;
/**
* Constructed by PermutationCompiler.
*/
- public StandardCompilationAnalysis(TreeLogger logger, File depFile,
- File storiesFile, File splitPointsFile) throws
UnableToCompleteException {
+ public StandardCompilationAnalysis(SoycArtifact dependencies,
+ SoycArtifact stories, SoycArtifact splitPoints) {
super(StandardLinkerContext.class);
- logger = logger.branch(TreeLogger.INFO, "Creating
CompilationAnalysis");
-
- this.depFile = depFile;
- this.storiesFile = storiesFile;
- this.splitPointsFile = splitPointsFile;
-
- logger.log(TreeLogger.INFO, "Done");
+ this.depFile = dependencies;
+ this.storiesFile = stories;
+ this.splitPointsFile = splitPoints;
}
@Override
- public File getDepFile() {
+ public SoycArtifact getDepFile() {
return depFile;
}
@Override
- public File getSplitPointsFile() {
+ public SoycArtifact getSplitPointsFile() {
return splitPointsFile;
}
@Override
- public File getStoriesFile() {
+ public SoycArtifact getStoriesFile() {
return storiesFile;
}
}
Copied:
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/DependencyRecorder.java
(from r5414,
/branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/DependencyRecorderImpl.java)
==============================================================================
---
/branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/DependencyRecorderImpl.java
(original)
+++
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/DependencyRecorder.java
Wed May 20 14:35:08 2009
@@ -13,7 +13,6 @@
* License for the specific language governing permissions and limitations
under
* the License.
*/
-
package com.google.gwt.core.ext.soyc.impl;
import com.google.gwt.core.ext.TreeLogger;
@@ -23,8 +22,7 @@
import com.google.gwt.dev.util.HtmlTextOutput;
import com.google.gwt.util.tools.Utility;
-import java.io.File;
-import java.io.FileOutputStream;
+import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -33,13 +31,24 @@
/**
* The control-flow dependency recorder for SOYC.
*/
-public class DependencyRecorderImpl implements
+public class DependencyRecorder implements
ControlFlowAnalyzer.DependencyRecorder {
+ /**
+ * Used to record dependencies of a program.
+ */
+ public static void recordDependencies(TreeLogger logger, OutputStream
out,
+ JProgram jprogram) {
+ new DependencyRecorder().recordDependenciesImpl(logger, out, jprogram);
+ }
+
private HtmlTextOutput htmlOut;
private PrintWriter pw;
private OutputStreamWriter writer;
+ private DependencyRecorder() {
+ }
+
/**
* Used to record the dependencies of a specific method.
*
@@ -48,20 +57,14 @@
*/
public void methodIsLiveBecause(JMethod liveMethod,
ArrayList<JMethod> dependencyChain) {
- printMethodDependency(liveMethod, dependencyChain);
+ printMethodDependency(dependencyChain);
}
/**
* Used to record dependencies of a program.
- *
- * @param jprogram
- * @param workDir
- * @param permutationId
- * @param logger
- * @return The file that the dependencies are recorded in
*/
- public File recordDependencies(JProgram jprogram, File workDir,
- int permutationId, TreeLogger logger) {
+ protected void recordDependenciesImpl(TreeLogger logger, OutputStream
out,
+ JProgram jprogram) {
logger = logger.branch(TreeLogger.INFO,
"Creating Dependencies file for SOYC");
@@ -69,12 +72,8 @@
ControlFlowAnalyzer dependencyAnalyzer = new
ControlFlowAnalyzer(jprogram);
dependencyAnalyzer.setDependencyRecorder(this);
- File appendDepFile = new File(workDir, "dependencies" + permutationId
- + ".xml.gz");
try {
- FileOutputStream stream = new FileOutputStream(appendDepFile, true);
- writer = new OutputStreamWriter(new
GZIPOutputStream(stream), "UTF-8");
- appendDepFile.getParentFile().mkdirs();
+ writer = new OutputStreamWriter(new GZIPOutputStream(out), "UTF-8");
pw = new PrintWriter(writer);
htmlOut = new HtmlTextOutput(pw, false);
} catch (Throwable e) {
@@ -90,8 +89,6 @@
Utility.close(writer);
logger.log(TreeLogger.INFO, "Done");
-
- return appendDepFile;
}
/**
@@ -100,8 +97,7 @@
* @param liveMethod
* @param dependencyChain
*/
- private void printMethodDependency(JMethod liveMethod,
- ArrayList<JMethod> dependencyChain) {
+ private void printMethodDependency(ArrayList<JMethod> dependencyChain) {
String curLine;
for (int i = dependencyChain.size() - 1; i >= 0; i--) {
JMethod curMethod = dependencyChain.get(i);
Copied:
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/SplitPointRecorder.java
(from r5414,
/branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/SplitPointRecorderImpl.java)
==============================================================================
---
/branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/SplitPointRecorderImpl.java
(original)
+++
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/SplitPointRecorder.java
Wed May 20 14:35:08 2009
@@ -13,17 +13,14 @@
* License for the specific language governing permissions and limitations
under
* the License.
*/
-
package com.google.gwt.core.ext.soyc.impl;
import com.google.gwt.core.ext.TreeLogger;
-import com.google.gwt.core.ext.soyc.SplitPointRecorder;
import com.google.gwt.dev.jjs.ast.JProgram;
import com.google.gwt.dev.util.HtmlTextOutput;
import com.google.gwt.util.tools.Utility;
-import java.io.File;
-import java.io.FileOutputStream;
+import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Map;
@@ -32,37 +29,26 @@
/**
* Records split points to a file for SOYC reports.
*/
-public class SplitPointRecorderImpl implements SplitPointRecorder {
-
- private FileOutputStream stream;
- private OutputStreamWriter writer;
- private PrintWriter pw;
- private HtmlTextOutput htmlOut;
+public class SplitPointRecorder {
/**
* Used to record (runAsync) split points of a program.
*
* @param jprogram
- * @param workDir
- * @param permutationId
+ * @param out
* @param logger
- * @return The file that the dependencies are recorded in
*/
- public File recordSplitPoints(JProgram jprogram, File workDir,
- int permutationId, TreeLogger logger) {
+ public static void recordSplitPoints(JProgram jprogram, OutputStream out,
+ TreeLogger logger) {
logger = logger.branch(TreeLogger.INFO,
"Creating Split Point Map file for SOYC");
- File splitPointsFile = new File(workDir, "splitPoints"
- + Integer.toString(permutationId) + ".xml.gz");
try {
- stream = new FileOutputStream(splitPointsFile, true);
- writer = new OutputStreamWriter(new
GZIPOutputStream(stream), "UTF-8");
- splitPointsFile.getParentFile().mkdirs();
- pw = new PrintWriter(writer);
- htmlOut = new HtmlTextOutput(pw, false);
-
+ OutputStreamWriter writer = new OutputStreamWriter(new
GZIPOutputStream(
+ out), "UTF-8");
+ PrintWriter pw = new PrintWriter(writer);
+ HtmlTextOutput htmlOut = new HtmlTextOutput(pw, false);
String curLine = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
htmlOut.printRaw(curLine);
htmlOut.newline();
@@ -107,7 +93,8 @@
} catch (Throwable e) {
logger.log(TreeLogger.ERROR, "Could not open dependency file.", e);
}
+ }
- return splitPointsFile;
+ private SplitPointRecorder() {
}
}
Copied:
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/StoryRecorder.java
(from r5414,
/branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/StoryRecorderImpl.java)
==============================================================================
---
/branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/StoryRecorderImpl.java
(original)
+++
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/StoryRecorder.java
Wed May 20 14:35:08 2009
@@ -13,7 +13,6 @@
* License for the specific language governing permissions and limitations
under
* the License.
*/
-
package com.google.gwt.core.ext.soyc.impl;
import com.google.gwt.core.ext.TreeLogger;
@@ -22,7 +21,6 @@
import com.google.gwt.core.ext.soyc.Member;
import com.google.gwt.core.ext.soyc.Range;
import com.google.gwt.core.ext.soyc.Story;
-import com.google.gwt.core.ext.soyc.StoryRecorder;
import com.google.gwt.core.ext.soyc.Story.Origin;
import com.google.gwt.dev.jjs.Correlation;
import com.google.gwt.dev.jjs.SourceInfo;
@@ -30,13 +28,11 @@
import com.google.gwt.dev.jjs.ast.JDeclaredType;
import com.google.gwt.dev.jjs.ast.JField;
import com.google.gwt.dev.jjs.ast.JMethod;
-import com.google.gwt.dev.jjs.ast.JProgram;
import com.google.gwt.dev.js.ast.JsFunction;
import com.google.gwt.dev.util.HtmlTextOutput;
import com.google.gwt.util.tools.Utility;
-import java.io.File;
-import java.io.FileOutputStream;
+import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Arrays;
@@ -54,7 +50,7 @@
/**
* Records {...@link Story}s to a file for SOYC.
*/
-public class StoryRecorderImpl implements StoryRecorder {
+public class StoryRecorder {
/**
* Associates a SourceInfo with a Range.
@@ -69,6 +65,14 @@
}
}
+ /**
+ * Used to record dependencies of a program.
+ */
+ public static void recordStories(TreeLogger logger, OutputStream out,
+ List<Map<Range, SourceInfo>> sourceInfoMaps, String[] js) {
+ new StoryRecorder().recordStoriesImpl(logger, out, sourceInfoMaps, js);
+ }
+
private int curHighestFragment = 0;
private HtmlTextOutput htmlOut;
private String[] js;
@@ -92,33 +96,20 @@
private Map<Story, Integer> storyIds = new HashMap<Story, Integer>();
- private FileOutputStream stream;
-
private OutputStreamWriter writer;
- /**
- * Used to record dependencies of a program.
- *
- * @param jprogram
- * @param workDir
- * @param permutationId
- * @param logger
- * @return The file that the dependencies are recorded in
- */
- public File recordStories(JProgram jprogram, File workDir, int
permutationId,
- TreeLogger logger, List<Map<Range, SourceInfo>> sourceInfoMaps,
- String[] js) {
+ private StoryRecorder() {
+ }
+
+ protected void recordStoriesImpl(TreeLogger logger, OutputStream out,
+ List<Map<Range, SourceInfo>> sourceInfoMaps, String[] js) {
logger = logger.branch(TreeLogger.INFO, "Creating Stories file for
SOYC");
this.js = js;
- File storiesFile = new File(workDir, "stories"
- + Integer.toString(permutationId) + ".xml.gz");
try {
- stream = new FileOutputStream(storiesFile, true);
- writer = new OutputStreamWriter(new
GZIPOutputStream(stream), "UTF-8");
- storiesFile.getParentFile().mkdirs();
+ writer = new OutputStreamWriter(new GZIPOutputStream(out), "UTF-8");
pw = new PrintWriter(writer);
htmlOut = new HtmlTextOutput(pw, false);
@@ -185,8 +176,6 @@
} catch (Throwable e) {
logger.log(TreeLogger.ERROR, "Could not open dependency file.", e);
}
-
- return storiesFile;
}
private void analyzeFragment(MemberFactory memberFactory,
Modified:
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/linker/SoycReportLinker.java
==============================================================================
---
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/linker/SoycReportLinker.java
(original)
+++
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/linker/SoycReportLinker.java
Wed May 20 14:35:08 2009
@@ -20,52 +20,16 @@
import com.google.gwt.core.ext.TreeLogger;
import com.google.gwt.core.ext.UnableToCompleteException;
import com.google.gwt.core.ext.linker.ArtifactSet;
-import com.google.gwt.core.ext.linker.EmittedArtifact;
import com.google.gwt.core.ext.linker.LinkerOrder;
import com.google.gwt.core.ext.linker.LinkerOrder.Order;
import com.google.gwt.core.ext.linker.impl.StandardCompilationAnalysis;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
/**
* Converts SOYC report files into emitted private artifacts.
*/
@LinkerOrder(Order.POST)
public class SoycReportLinker extends Linker {
- private static class SoycArtifact extends EmittedArtifact {
- private final File file;
-
- public SoycArtifact(String partialPath, File file) {
- super(SoycReportLinker.class, partialPath);
- this.file = file;
- }
-
- @Override
- public InputStream getContents(TreeLogger logger)
- throws UnableToCompleteException {
- try {
- return new FileInputStream(file);
- } catch (IOException e) {
- logger.log(TreeLogger.ERROR, "Unable to open file", e);
- throw new UnableToCompleteException();
- }
- }
-
- @Override
- public long getLastModified() {
- return file.lastModified();
- }
-
- @Override
- public boolean isPrivate() {
- return true;
- }
- }
-
@Override
public String getDescription() {
return "Emit SOYC artifacts";
@@ -76,14 +40,9 @@
ArtifactSet artifacts) throws UnableToCompleteException {
ArtifactSet results = new ArtifactSet(artifacts);
for (StandardCompilationAnalysis soycFiles :
artifacts.find(StandardCompilationAnalysis.class)) {
- File depFile = soycFiles.getDepFile();
- results.add(new SoycArtifact(depFile.getName(), depFile));
-
- File storiesFile = soycFiles.getStoriesFile();
- results.add(new SoycArtifact(storiesFile.getName(), storiesFile));
-
- File splitPointsFile = soycFiles.getSplitPointsFile();
- results.add(new SoycArtifact(splitPointsFile.getName(),
splitPointsFile));
+ results.add(soycFiles.getDepFile());
+ results.add(soycFiles.getStoriesFile());
+ results.add(soycFiles.getSplitPointsFile());
}
return results;
}
Modified:
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
==============================================================================
---
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
(original)
+++
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
Wed May 20 14:35:08 2009
@@ -16,15 +16,14 @@
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;
import com.google.gwt.dev.util.arg.OptionEnableAssertions;
-import com.google.gwt.dev.util.arg.OptionCompilationStateRetained;
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.OptionWorkDir;
/**
* Controls options for the {...@link JavaToJavaScriptCompiler}.
@@ -32,5 +31,5 @@
public interface JJSOptions extends OptionAggressivelyOptimize,
OptionDisableClassMetadata, OptionDisableCastChecking,
OptionDraftCompile,
OptionEnableAssertions, OptionRunAsyncEnabled, OptionScriptStyle,
- OptionSoycEnabled, OptionCompilationStateRetained, OptionWorkDir {
+ OptionSoycEnabled, OptionCompilationStateRetained {
}
Modified:
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
==============================================================================
---
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
(original)
+++
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
Wed May 20 14:35:08 2009
@@ -15,7 +15,6 @@
*/
package com.google.gwt.dev.jjs;
-import java.io.File;
import java.io.Serializable;
/**
@@ -32,7 +31,6 @@
private JsOutputOption output = JsOutputOption.OBFUSCATED;
private boolean runAsyncEnabled = true;
private boolean soycEnabled = false;
- private File workDir;
public JJSOptionsImpl() {
}
@@ -51,17 +49,12 @@
setOutput(other.getOutput());
setRunAsyncEnabled(other.isRunAsyncEnabled());
setSoycEnabled(other.isSoycEnabled());
- setWorkDir(other.getWorkDir());
}
public JsOutputOption getOutput() {
return output;
}
- public File getWorkDir() {
- return workDir;
- }
-
public boolean isAggressivelyOptimize() {
return aggressivelyOptimize;
}
@@ -128,9 +121,5 @@
public void setSoycEnabled(boolean enabled) {
soycEnabled = enabled;
- }
-
- public void setWorkDir(File workDir) {
- this.workDir = workDir;
}
}
Modified:
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
==============================================================================
---
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
(original)
+++
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
Wed May 20 14:35:08 2009
@@ -21,12 +21,11 @@
import com.google.gwt.core.ext.linker.SymbolData;
import com.google.gwt.core.ext.linker.impl.StandardCompilationAnalysis;
import com.google.gwt.core.ext.linker.impl.StandardSymbolData;
+import
com.google.gwt.core.ext.linker.impl.StandardCompilationAnalysis.SoycArtifact;
import com.google.gwt.core.ext.soyc.Range;
-import com.google.gwt.core.ext.soyc.SplitPointRecorder;
-import com.google.gwt.core.ext.soyc.StoryRecorder;
-import com.google.gwt.core.ext.soyc.impl.DependencyRecorderImpl;
-import com.google.gwt.core.ext.soyc.impl.SplitPointRecorderImpl;
-import com.google.gwt.core.ext.soyc.impl.StoryRecorderImpl;
+import com.google.gwt.core.ext.soyc.impl.DependencyRecorder;
+import com.google.gwt.core.ext.soyc.impl.SplitPointRecorder;
+import com.google.gwt.core.ext.soyc.impl.StoryRecorder;
import com.google.gwt.dev.PermutationResult;
import com.google.gwt.dev.cfg.ModuleDef;
import com.google.gwt.dev.jdt.RebindPermutationOracle;
@@ -112,7 +111,6 @@
import org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
import java.io.ByteArrayOutputStream;
-import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
@@ -319,24 +317,31 @@
PermutationResult toReturn = new PermutationResultImpl(js,
makeSymbolMap(symbolTable));
+
if (sourceInfoMaps != null) {
+ // Free up memory.
+ symbolTable = null;
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
// get method dependencies
- DependencyRecorderImpl dr = new DependencyRecorderImpl();
- File depFile = dr.recordDependencies(jprogram,
options.getWorkDir(),
- permutationId, logger);
-
- StoryRecorder sr = new StoryRecorderImpl();
- File storyFile = sr.recordStories(jprogram, options.getWorkDir(),
- permutationId, logger, sourceInfoMaps, js);
-
- SplitPointRecorder spr = new SplitPointRecorderImpl();
- File splitPointsFile = spr.recordSplitPoints(jprogram,
- options.getWorkDir(), permutationId, logger);
+ StoryRecorder.recordStories(logger, baos, sourceInfoMaps, js);
+ SoycArtifact stories = new SoycArtifact("stories" + permutationId
+ + ".xml.gz", baos.toByteArray());
+ // Free up memory.
+ js = null;
+
+ baos.reset();
+ DependencyRecorder.recordDependencies(logger, baos, jprogram);
+ SoycArtifact dependencies = new SoycArtifact("dependencies"
+ + permutationId + ".xml.gz", baos.toByteArray());
+
+ baos.reset();
+ SplitPointRecorder.recordSplitPoints(jprogram, baos, logger);
+ SoycArtifact splitPoints = new SoycArtifact("splitPoints"
+ + permutationId + ".xml.gz", baos.toByteArray());
toReturn.getArtifacts().add(
- new StandardCompilationAnalysis(logger, depFile, storyFile,
- splitPointsFile));
+ new StandardCompilationAnalysis(dependencies, stories,
splitPoints));
}
return toReturn;
} catch (Throwable e) {
--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---