Added functionality to map runAsync split points and fragment numbers to the methods that they are placed in. This information is accessed by SOYC and displayed in the SOYC dashboard.
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@4344 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/core/ext/linker/CompilationAnalysis.java b/dev/core/src/com/google/gwt/core/ext/linker/CompilationAnalysis.java
index b5b75d2..fc7b985 100644
--- a/dev/core/src/com/google/gwt/core/ext/linker/CompilationAnalysis.java
+++ b/dev/core/src/com/google/gwt/core/ext/linker/CompilationAnalysis.java
@@ -21,6 +21,7 @@
import com.google.gwt.core.ext.soyc.Range;
import com.google.gwt.core.ext.soyc.Story;
+import java.util.Map;
import java.util.SortedSet;
/**
@@ -76,6 +77,11 @@
public abstract Iterable<Snippet> getSnippets(int fragmentNumber);
/**
+ * Returns splitPointMap.
+ */
+ public abstract Map<Integer, String> getSplitPointMap();
+
+ /**
* Returns all Stories.
*/
public abstract SortedSet<Story> getStories();
diff --git a/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardCompilationAnalysis.java b/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardCompilationAnalysis.java
index a1fbf06..f0745a5 100644
--- a/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardCompilationAnalysis.java
+++ b/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardCompilationAnalysis.java
@@ -55,6 +55,7 @@
import java.util.Set;
import java.util.SortedSet;
import java.util.Stack;
+import java.util.TreeMap;
import java.util.TreeSet;
/**
@@ -115,17 +116,25 @@
private transient Map<Correlation, Member> membersByCorrelation = new IdentityHashMap<Correlation, Member>();
/**
+ * Map from split point numbers to the method where they were set
+ */
+ private Map<Integer, String> splitPointMap = new TreeMap<Integer, String>();
+
+ /**
* Constructed by PermutationCompiler.
*/
public StandardCompilationAnalysis(TreeLogger logger,
- List<Map<Range, SourceInfo>> sourceInfoMaps)
+ List<Map<Range, SourceInfo>> sourceInfoMaps,
+ Map<Integer, String> splitPointMap)
throws UnableToCompleteException {
super(StandardLinkerContext.class);
logger = logger.branch(TreeLogger.INFO,
"Creating CompilationAnalysis (this may take some time)");
data = new Data();
-
+
+ this.splitPointMap = splitPointMap;
+
/*
* Don't retain beyond the constructor to avoid lingering references to AST
* nodes.
@@ -198,6 +207,11 @@
}
@Override
+ public Map<Integer, String> getSplitPointMap(){
+ return splitPointMap;
+ }
+
+ @Override
public SortedSet<Story> getStories() {
return data.stories;
}
diff --git a/dev/core/src/com/google/gwt/core/linker/soyc/SoycReportLinker.java b/dev/core/src/com/google/gwt/core/linker/soyc/SoycReportLinker.java
index 4f74865..6e2d679 100644
--- a/dev/core/src/com/google/gwt/core/linker/soyc/SoycReportLinker.java
+++ b/dev/core/src/com/google/gwt/core/linker/soyc/SoycReportLinker.java
@@ -65,7 +65,6 @@
@LinkerOrder(Order.PRE)
public class SoycReportLinker extends AbstractLinker {
- int curNumIndents = 0;
public String escapeXml(String unescaped) {
String escaped = unescaped.replaceAll("\\&", "&");
@@ -161,32 +160,29 @@
if (methodAliases.size() > 0) {
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
curLine = "<aliases>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
}
for (String methodAlias : methodAliases) {
curLine = "<alias jsName=\"" + methodAlias + "\"/>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
}
if (methodAliases.size() > 0) {
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
-
+
curLine = "</aliases>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
+
}
}
@@ -205,7 +201,7 @@
for (String className : sortedClasses.keySet()) {
ClassMember classMember = sortedClasses.get(className);
curLine = "<class id=\"" + className + "\" ";
- htmlOut.printRawOpt(curLine);
+ htmlOut.printRaw(curLine);
String jsName = classMember.getJsName();
String name = className.substring(className.lastIndexOf('.') + 1);
@@ -221,8 +217,8 @@
emitFields(htmlOut, classMember);
curLine = "</class>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
}
}
@@ -232,31 +228,30 @@
if (dependencies.size() > 0) {
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
curLine = "<depends>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
+
}
for (Member dependency : dependencies) {
curLine = "<on idref=\"" + dependency.getSourceName() + "\"/>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
}
if (dependencies.size() > 0) {
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
+
curLine = "</depends>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
+
}
}
@@ -266,7 +261,7 @@
if (fields.size() > 0) {
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
+
}
for (FieldMember field : fields) {
curLine = "<field id=\"" + field.getSourceName() + "\" jsName=\""
@@ -275,13 +270,13 @@
if (curJsName == null) {
curLine = "<field id=\"" + field.getSourceName() + "\"/>";
}
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
}
if (fields.size() > 0) {
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
+
}
}
@@ -291,7 +286,7 @@
Set<FunctionMember> functions = report.getFunctions();
for (FunctionMember function : functions) {
curLine = "<function ";
- htmlOut.printRawOpt(curLine);
+ htmlOut.printRaw(curLine);
String sourceName = function.getSourceName();
String jsName = function.getJsName();
@@ -301,45 +296,44 @@
if (jsName == null) {
curLine = "id=\"" + sourceName + "\"/>";
}
- htmlOut.printRawOpt(curLine);
+ htmlOut.printRaw(curLine);
htmlOut.newline();
} else {
curLine = "id=\"" + sourceName + "\" jsName=\"" + jsName + "\">";
if (jsName == null) {
curLine = "id=\"" + sourceName + "\">";
}
- htmlOut.printRawOpt(curLine);
+ htmlOut.printRaw(curLine);
htmlOut.newline();
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
curLine = "<depends>";
- htmlOut.printRawOpt(curLine);
+ htmlOut.printRaw(curLine);
htmlOut.newline();
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
+
}
for (Member dependency : dependencies) {
curLine = "<on idref=\"" + dependency.getSourceName() + "\"/>";
- htmlOut.printRawOpt(curLine);
+ htmlOut.printRaw(curLine);
htmlOut.newline();
}
if (dependencies.size() > 0) {
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
+
curLine = "</depends>";
- htmlOut.printRawOpt(curLine);
+ htmlOut.printRaw(curLine);
htmlOut.newline();
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
+
curLine = "</function>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
}
}
}
@@ -351,12 +345,11 @@
int fragment = 0;
for (String contents : report.getCompilationResult().getJavaScript()) {
curLine = "<js fragment=\"" + fragment + "\">";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
-
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
+
for (Snippet snippet : report.getSnippets(fragment)) {
Range range = snippet.getRange();
@@ -373,17 +366,17 @@
curLine = "<storyref idref=\"story" + Integer.toString(storyId)
+ "\">" + jsCode + "</storyref>";
}
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
}
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
+
curLine = "</js>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
fragment++;
}
}
@@ -406,69 +399,69 @@
HtmlTextOutput htmlOut = new HtmlTextOutput(pw, false);
String curLine = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
- htmlOut.printRawOpt(curLine);
+ htmlOut.printRaw(curLine);
htmlOut.newline();
curLine = "<soyc-manifest>";
- htmlOut.printRawOpt(curLine);
+ htmlOut.printRaw(curLine);
htmlOut.newline();
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
+
for (Map.Entry<CompilationResult, String> entry : partialPathsByResult.entrySet()) {
curLine = "<report href=\"" + entry.getValue() + "\">";
- htmlOut.printRawOpt(curLine);
+ htmlOut.printRaw(curLine);
htmlOut.newline();
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
+
for (Map<SelectionProperty, String> map : entry.getKey().getPropertyMap()) {
if (map.size() > 0) {
curLine = "<permutation>";
- htmlOut.printRawOpt(curLine);
+ htmlOut.printRaw(curLine);
htmlOut.newline();
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
+
} else {
curLine = "<permutation/>";
- htmlOut.printRawOpt(curLine);
+ htmlOut.printRaw(curLine);
htmlOut.newline();
}
for (Map.Entry<SelectionProperty, String> propertyEntry : map.entrySet()) {
curLine = "<property name=\"" + propertyEntry.getKey().getName()
+ "\" value=\"" + propertyEntry.getValue() + "\"/>";
- htmlOut.printRawOpt(curLine);
+ htmlOut.printRaw(curLine);
htmlOut.newline();
}
if (map.size() > 0) {
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
+
curLine = "</permutation>";
- htmlOut.printRawOpt(curLine);
+ htmlOut.printRaw(curLine);
htmlOut.newline();
}
}
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
+
curLine = "</report>";
- htmlOut.printRawOpt(curLine);
+ htmlOut.printRaw(curLine);
htmlOut.newline();
}
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
+
curLine = "</soyc-manifest>";
- htmlOut.printRawOpt(curLine);
+ htmlOut.printRaw(curLine);
htmlOut.newline();
pw.close();
@@ -480,16 +473,13 @@
}
private void emitMembers(CompilationAnalysis report, HtmlTextOutput htmlOut) {
- String curLine;
-
- curLine = "<members>";
-
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+
+ String curLine = "<members>";
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
-
+
SortedMap<String, Set<ClassMember>> packageToClasses = new TreeMap<String, Set<ClassMember>>();
emitPackages(report, htmlOut, packageToClasses);
@@ -497,11 +487,9 @@
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
-
curLine = "</members>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
}
private void emitMethodDependencies(HtmlTextOutput htmlOut,
@@ -510,65 +498,58 @@
if (methodDependencies.size() > 0) {
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
-
+
curLine = "<depends>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
+
for (Member methodDependency : methodDependencies) {
curLine = "<on idref=\"" + methodDependency.getSourceName() + "\"/>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
}
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
curLine = "</depends>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
}
}
- private void emitMethodOverrides(HtmlTextOutput htmlOut,
- Set<MethodMember> methodOverrides) {
+ private void emitMethodOverrides(HtmlTextOutput htmlOut, Set<MethodMember> methodOverrides) {
String curLine;
if (methodOverrides.size() > 0) {
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
-
+
curLine = "<override>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
+
}
for (MethodMember overrideMethodMember : methodOverrides) {
curLine = "<of idref=\"" + overrideMethodMember.getSourceName() + "\"/>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
}
if (methodOverrides.size() > 0) {
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
-
+
curLine = "</override>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
}
}
@@ -578,11 +559,11 @@
if (methods.size() > 0) {
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
+
}
for (MethodMember method : methods) {
curLine = "<method ";
- htmlOut.printRawOpt(curLine);
+ htmlOut.printRaw(curLine);
String jsAtt = " jsName=\"" + method.getJsName() + "\"";
String curJsName = method.getJsName();
@@ -598,12 +579,12 @@
if ((methodOverrides.size() > 0) || (methodDependencies.size() > 0)
|| (methodAliases.size() > 0)) {
curLine = "id=\"" + method.getSourceName() + "\"" + jsAtt + ">";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
} else {
curLine = "id=\"" + method.getSourceName() + "\"" + jsAtt + "/>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
}
emitAliases(htmlOut, methodAliases);
@@ -613,50 +594,50 @@
if ((methodOverrides.size() > 0) || (methodDependencies.size() > 0)
|| (methodAliases.size() > 0)) {
curLine = "</method>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
}
}
if (methods.size() > 0) {
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
+
}
}
private void emitOverrides(HtmlTextOutput htmlOut, String curLine,
ClassMember classMember) {
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
Set<ClassMember> overrides = classMember.getOverrides();
if (overrides.size() > 0) {
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
+
curLine = "<override>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
+
}
for (ClassMember overrideClassMember : overrides) {
curLine = "<of idref=\"" + overrideClassMember.getSourceName() + "\"/>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
}
if (overrides.size() > 0) {
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
+
curLine = "</override>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
+
}
}
@@ -678,24 +659,23 @@
for (String packageName : packageToClasses.keySet()) {
curLine = "<package id=\"" + packageName + "\">";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
if (packageToClasses.get(packageName).size() > 0) {
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
+
}
emitClasses(htmlOut, packageToClasses, packageName);
if (packageToClasses.get(packageName).size() > 0) {
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
}
curLine = "</package>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
}
}
@@ -715,15 +695,35 @@
PrintWriter pw = new PrintWriter(out);
HtmlTextOutput htmlOut = new HtmlTextOutput(pw, false);
+
String curLine = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
curLine = "<soyc>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
+
+
+ Map<Integer, String> splitPointMap = new TreeMap<Integer, String>(report.getSplitPointMap());
+ if (splitPointMap.size() > 0){
+ curLine = "<splitpoints>";
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
+ htmlOut.indentIn();
+ htmlOut.indentIn();
+ for (Integer splitPointCount : splitPointMap.keySet()){
+ curLine = "<splitpoint id=\"" + splitPointCount + "\" location=\"" + splitPointMap.get(splitPointCount) + "\"/>";
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
+ }
+ htmlOut.indentOut();
+ htmlOut.indentOut();
+ curLine = "</splitpoints>";
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
+ }
emitMembers(report, htmlOut);
Map<Story, Integer> storyIds = emitStories(report, htmlOut);
@@ -731,11 +731,9 @@
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
-
curLine = "</soyc>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
pw.close();
Utility.close(out);
@@ -752,13 +750,13 @@
Map<Story, Integer> storyIds = new HashMap<Story, Integer>();
Set<Story> stories = report.getStories();
curLine = "<stories>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
if (stories.size() > 0) {
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
+
}
for (Story story : stories) {
@@ -770,88 +768,85 @@
curLine = curLine + " literal=\"" + story.getLiteralTypeName() + "\"";
}
curLine = curLine + ">";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
Set<Origin> origins = story.getSourceOrigin();
if (origins.size() > 0) {
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
+
curLine = "<origins>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
+
}
for (Origin origin : origins) {
curLine = "<origin lineNumber=\""
+ Integer.toString(origin.getLineNumber()) + "\" location=\""
+ origin.getLocation() + "\"/>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
}
if (origins.size() > 0) {
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
+
curLine = "</origins>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
}
Set<Member> correlations = story.getMembers();
if (correlations.size() > 0) {
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
curLine = "<correlations>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
htmlOut.indentIn();
htmlOut.indentIn();
- curNumIndents++;
+
}
for (Member correlation : correlations) {
curLine = "<by idref=\"" + correlation.getSourceName() + "\"/>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
}
if (correlations.size() > 0) {
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
+
curLine = "</correlations>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
}
curLine = "</story>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
}
if (stories.size() > 0) {
htmlOut.indentOut();
htmlOut.indentOut();
- curNumIndents--;
+
}
curLine = "</stories>";
- htmlOut.printRawOpt(curLine);
- htmlOut.newlineOpt();
+ htmlOut.printRaw(curLine);
+ htmlOut.newline();
return storyIds;
}
diff --git a/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java b/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
index 4d818a6..1daa7b7 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
@@ -261,7 +261,8 @@
PermutationResult toReturn = new PermutationResultImpl(js);
if (sourceInfoMaps != null) {
toReturn.getArtifacts().add(
- new StandardCompilationAnalysis(logger, sourceInfoMaps));
+ new StandardCompilationAnalysis(logger, sourceInfoMaps,
+ jprogram.getSplitPointMap()));
}
return toReturn;
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
index 081bc6a..2d8dfb4 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
@@ -37,6 +37,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.TreeMap;
import java.util.TreeSet;
/**
@@ -164,10 +165,10 @@
public final List<JClassType> codeGenTypes = new ArrayList<JClassType>();
/**
- * There is a list containing the main entry methods as well as the entry methods for
- * each split point. The main entry methods are at entry 0 of this list. Split
- * points are numbered sequentially from 1, and the entry methods for split point
- * <em>i</em> are at entry <em>i</em> of this list.
+ * There is a list containing the main entry methods as well as the entry
+ * methods for each split point. The main entry methods are at entry 0 of this
+ * list. Split points are numbered sequentially from 1, and the entry methods
+ * for split point <em>i</em> are at entry <em>i</em> of this list.
*/
public final List<List<JMethod>> entryMethods = new ArrayList<List<JMethod>>();
@@ -236,6 +237,8 @@
private Map<JReferenceType, Integer> queryIds;
+ private Map<Integer, String> splitPointMap = new TreeMap<Integer, String>();
+
private final Map<JMethod, JMethod> staticToInstanceMap = new IdentityHashMap<JMethod, JMethod>();
private final JPrimitiveType typeBoolean = new JPrimitiveType(this,
@@ -769,6 +772,10 @@
return integer.intValue();
}
+ public Map<Integer, String> getSplitPointMap() {
+ return splitPointMap;
+ }
+
public JMethod getStaticImpl(JMethod method) {
return instanceToStaticMap.get(method);
}
@@ -914,10 +921,14 @@
this.queryIds = queryIds;
}
+ public void setSplitPointMap(Map<Integer, String> splitPointMap) {
+ this.splitPointMap = splitPointMap;
+ }
+
/**
- * If <code>method</code> is a static impl method, returns the instance
- * method that <code>method</code> is the implementation of. Otherwise,
- * returns <code>null</code>.
+ * If <code>method</code> is a static impl method, returns the instance method
+ * that <code>method</code> is the implementation of. Otherwise, returns
+ * <code>null</code>.
*/
public JMethod staticImplFor(JMethod method) {
return staticToInstanceMap.get(method);
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/ReplaceRunAsyncs.java b/dev/core/src/com/google/gwt/dev/jjs/impl/ReplaceRunAsyncs.java
index 1ceb55a..bd5dc76 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/ReplaceRunAsyncs.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/ReplaceRunAsyncs.java
@@ -26,6 +26,10 @@
import com.google.gwt.dev.jjs.ast.JProgram;
import com.google.gwt.dev.jjs.ast.JType;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.TreeMap;
+
/**
* Replaces calls to
* {@link com.google.gwt.core.client.GWT#runAsync(com.google.gwt.core.client.RunAsyncCallback)}"
@@ -34,6 +38,8 @@
public class ReplaceRunAsyncs {
private class AsyncCreateVisitor extends JModVisitor {
private JMethod currentMethod;
+ private Map<Integer, String> splitPointMap = new TreeMap<Integer, String>();
+ private Map<String, Integer> methodCount = new HashMap<String, Integer>();
private int entryCount = 1;
@Override
@@ -46,7 +52,17 @@
int entryNumber = entryCount++;
logger.log(TreeLogger.INFO, "Assigning split point #" + entryNumber
+ " in method " + fullMethodDescription(currentMethod));
-
+
+ String methodDescription = fullMethodDescription(currentMethod);
+ if (methodCount.containsKey(methodDescription)){
+ methodCount.put(methodDescription, methodCount.get(methodDescription)+1);
+ methodDescription += "#" + Integer.toString(methodCount.get(methodDescription));
+ }
+ else{
+ methodCount.put(methodDescription, 1);
+ }
+ splitPointMap.put(entryNumber, methodDescription);
+
JClassType loader = getFragmentLoader(entryNumber);
JMethod loadMethod = getRunAsyncMethod(loader);
assert loadMethod != null;
@@ -89,6 +105,9 @@
AsyncCreateVisitor visitor = new AsyncCreateVisitor();
visitor.accept(program);
setNumEntriesInAsyncFragmentLoader(visitor.entryCount);
+ program.setSplitPointMap(visitor.splitPointMap);
+
+
return visitor.entryCount;
}