This is an automated email from the ASF dual-hosted git repository.
joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
The following commit(s) were added to refs/heads/develop by this push:
new 9602fe4 GoogDepsWriter: more use of StringBuilders to avoid creation
of too many Strings
9602fe4 is described below
commit 9602fe41849d54c6dd65e1ed7b3258aca10051e4
Author: Josh Tynjala <[email protected]>
AuthorDate: Thu Jun 27 14:10:51 2019 -0700
GoogDepsWriter: more use of StringBuilders to avoid creation of too many
Strings
---
.../compiler/internal/graph/GoogDepsWriter.java | 81 ++++++++++++++--------
1 file changed, 51 insertions(+), 30 deletions(-)
diff --git
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java
index 8ddcff8..728734c 100644
---
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java
+++
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java
@@ -47,8 +47,8 @@ import
org.apache.royale.compiler.internal.projects.CompilerProject;
import org.apache.royale.compiler.internal.projects.DefinitionPriority;
import org.apache.royale.compiler.internal.projects.DependencyGraph;
import org.apache.royale.compiler.internal.projects.RoyaleJSProject;
-import org.apache.royale.compiler.problems.MainDefinitionQNameProblem;
import org.apache.royale.compiler.problems.FileNotFoundProblem;
+import org.apache.royale.compiler.problems.MainDefinitionQNameProblem;
import org.apache.royale.compiler.problems.UnexpectedExceptionProblem;
import org.apache.royale.compiler.units.ICompilationUnit;
import org.apache.royale.swc.ISWC;
@@ -167,17 +167,23 @@ public class GoogDepsWriter {
{
ArrayList <String> deps = new
ArrayList<String>();
computeDeps(deps, gd, usedDeps);
-
sb.append("goog.addDependency('").append(relativePath(gd.filePath)).append("',
['")
-
.append(gd.className).append("'], [")
- .append(getDependencies(deps))
- .append("]);\n");
+ sb.append("goog.addDependency('")
+
.append(relativePath(gd.filePath))
+ .append("', ['")
+ .append(gd.className)
+ .append("'], [");
+ appendDependencies(deps, sb);
+ sb.append("]);\n");
}
else
{
-
sb.append("goog.addDependency('").append(relativePath(gd.filePath)).append("',
['")
- .append(gd.className).append("'], [")
- .append(getDependencies(gd.deps))
- .append("]);\n");
+ sb.append("goog.addDependency('")
+
.append(relativePath(gd.filePath))
+ .append("', ['")
+ .append(gd.className)
+ .append("'], [");
+ appendDependencies(gd.deps, sb);
+ sb.append("]);\n");
}
}
}
@@ -234,7 +240,8 @@ public class GoogDepsWriter {
restOfDeps.add(gd.className);
}
}
-
mainDeps.append(getDependencies(restOfDeps)).append("]);\n");
+ appendDependencies(restOfDeps, mainDeps);
+ mainDeps.append("]);\n");
sb.insert(0, mainDeps);
sb.insert(0, "// generated by Royale\n");
for (String dep : restOfDeps)
@@ -251,10 +258,13 @@ public class GoogDepsWriter {
continue;
ArrayList<String> deps = new
ArrayList<String>();
computeDeps(deps, gd, usedDeps);
-
sb.append("goog.addDependency('").append(relativePath(gd.filePath)).append("',
['")
- .append(gd.className).append("'], [")
- .append(getDependencies(deps))
- .append("]);\n");
+ sb.append("goog.addDependency('")
+ .append(relativePath(gd.filePath))
+ .append("', ['")
+ .append(gd.className)
+ .append("'], [");
+ appendDependencies(deps, sb);
+ sb.append("]);\n");
}
addRestOfDeps(mainDep, restOfDeps);
}
@@ -423,7 +433,9 @@ public class GoogDepsWriter {
visited.put(current.className, current);
if (removeCirculars)
+ {
removeRequires(current);
+ }
if (verbose)
{
System.out.println("Dependencies calculated for '" +
current.className + "'");
@@ -571,9 +583,13 @@ public class GoogDepsWriter {
for (int i = n - 1; i >= 0; i--)
{
String dep = restOfDeps.get(i);
- //if (!main.deps.contains(dep))
-
fileLines.add(main.fileInfo.googProvideLine + 1,
JSGoogEmitterTokens.GOOG_REQUIRE.getToken() + "('" + dep + "');");
- sourceMapConsumer =
addLineToSourceMap(sourceMapConsumer, mainFile.getName(),
main.fileInfo.googProvideLine + 1);
+ StringBuilder lineBuilder = new StringBuilder();
+
lineBuilder.append(JSGoogEmitterTokens.GOOG_REQUIRE.getToken())
+ .append("('")
+ .append(dep)
+ .append("');");
+ fileLines.add(main.fileInfo.googProvideLine +
1, lineBuilder.toString());
+ sourceMapConsumer =
addLineToSourceMap(sourceMapConsumer, mainFile.getName(),
main.fileInfo.googProvideLine + 1);
}
PrintWriter out = new PrintWriter(new
FileWriter(mainFile));
@@ -581,7 +597,7 @@ public class GoogDepsWriter {
{
out.println(s);
}
- out.close();
+ out.close();
if (sourceMapConsumer != null)
{
@@ -749,21 +765,24 @@ public class GoogDepsWriter {
if (gd.fileInfo.staticDeps != null)
{
if (lastRequireLine == -1)
- lastRequireLine = gd.fileInfo.googProvideLine +
1;
+ lastRequireLine =
gd.fileInfo.googProvideLine + 1;
for (String dep : gd.fileInfo.staticDeps)
{
if (!writtenRequires.contains(dep) && !isExternal(dep))
{
- String line =
JSGoogEmitterTokens.GOOG_REQUIRE.getToken();
- line += "('" + dep + "');";
- finalLines.add(lastRequireLine++, line);
+ StringBuilder lineBuilder = new
StringBuilder();
+
lineBuilder.append(JSGoogEmitterTokens.GOOG_REQUIRE.getToken())
+ .append("('")
+ .append(dep)
+ .append("');");
+ finalLines.add(lastRequireLine++,
lineBuilder.toString());
sourceMapConsumer =
addLineToSourceMap(sourceMapConsumer, new File(gd.filePath).getName(),
lastRequireLine);
if (verbose)
{
System.out.println("adding require for static dependency " + dep + " to " +
className);
}
}
- }
+ }
}
//if (suppressCount > 0)
//{
@@ -844,7 +863,7 @@ public class GoogDepsWriter {
sourceMapConsumer =
addLineToSourceMap(sourceMapConsumer, depFile.getName(),
gd.fileInfo.googProvideLine + 1);
PrintWriter out = new PrintWriter(new
FileWriter(depFile));
- for (String s : finalLines)
+ for (String s : finalLines)
{
out.println(s);
}
@@ -1466,18 +1485,20 @@ public class GoogDepsWriter {
{
}
- private String getDependencies(ArrayList<String> deps)
+ private void appendDependencies(ArrayList<String> deps, StringBuilder
builder)
{
- String s = "";
+ boolean hasDeps = false;
for (String dep : deps)
{
- if (s.length() > 0)
+ if (hasDeps)
{
- s += ", ";
+ builder.append(", ");
}
- s += "'" + dep + "'";
+ builder.append("''");
+ builder.append(dep);
+ builder.append("''");
+ hasDeps = true;
}
- return s;
}
String relativePath(String path)