Repository: groovy Updated Branches: refs/heads/GROOVY_2_5_X 021ab0fba -> ab7d39a17
Fix some potential performance issues (cherry picked from commit b8a52eb) Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/2b507b29 Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/2b507b29 Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/2b507b29 Branch: refs/heads/GROOVY_2_5_X Commit: 2b507b297b35d5827575924648b695d608e81c8e Parents: 021ab0f Author: danielsun1106 <realblue...@hotmail.com> Authored: Tue Feb 20 03:00:48 2018 +0800 Committer: danielsun1106 <realblue...@hotmail.com> Committed: Tue Feb 20 03:43:24 2018 +0800 ---------------------------------------------------------------------- .../org/codehaus/groovy/classgen/GeneratorContext.java | 2 +- .../org/codehaus/groovy/control/CompilationUnit.java | 4 +--- .../org/codehaus/groovy/control/ResolveVisitor.java | 12 ++++++------ .../org/codehaus/groovy/reflection/ReflectionCache.java | 2 +- .../codehaus/groovy/runtime/ResourceGroovyMethods.java | 4 +--- .../codehaus/groovy/tools/javac/JavacJavaCompiler.java | 3 +-- .../transform/stc/TraitTypeCheckingExtension.java | 2 +- 7 files changed, 12 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/groovy/blob/2b507b29/src/main/java/org/codehaus/groovy/classgen/GeneratorContext.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/codehaus/groovy/classgen/GeneratorContext.java b/src/main/java/org/codehaus/groovy/classgen/GeneratorContext.java index 8b8a510..da51a0a 100644 --- a/src/main/java/org/codehaus/groovy/classgen/GeneratorContext.java +++ b/src/main/java/org/codehaus/groovy/classgen/GeneratorContext.java @@ -105,7 +105,7 @@ public class GeneratorContext { } } } - if(b == null) return name.toString(); + if(b == null) return name; if (lastEscape == -1) throw new GroovyBugError("unexpected escape char control flow in "+name); b.append(name, lastEscape + 1, l); return b.toString(); http://git-wip-us.apache.org/repos/asf/groovy/blob/2b507b29/src/main/java/org/codehaus/groovy/control/CompilationUnit.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/codehaus/groovy/control/CompilationUnit.java b/src/main/java/org/codehaus/groovy/control/CompilationUnit.java index a766784..b47a653 100644 --- a/src/main/java/org/codehaus/groovy/control/CompilationUnit.java +++ b/src/main/java/org/codehaus/groovy/control/CompilationUnit.java @@ -1026,9 +1026,7 @@ public class CompilationUnit extends ProcessingUnit { private List<ClassNode> getPrimaryClassNodes(boolean sort) { List<ClassNode> unsorted = new ArrayList<ClassNode>(); for (ModuleNode module : this.ast.getModules()) { - for (ClassNode classNode : module.getClasses()) { - unsorted.add(classNode); - } + unsorted.addAll(module.getClasses()); } if (!sort) return unsorted; http://git-wip-us.apache.org/repos/asf/groovy/blob/2b507b29/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java index fe96714..922c528 100644 --- a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java +++ b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java @@ -762,7 +762,7 @@ public class ResolveVisitor extends ClassCodeExpressionTransformer { private static String lookupClassName(PropertyExpression pe) { boolean doInitialClassTest=true; - String name = ""; + StringBuilder name = new StringBuilder(32); // this loop builds a name from right to left each name part // separated by "." for (Expression it = pe; it != null; it = ((PropertyExpression) it).getObjectExpression()) { @@ -782,9 +782,9 @@ public class ResolveVisitor extends ClassCodeExpressionTransformer { // field bar. if (!testVanillaNameForClass(varName)) return null; doInitialClassTest = false; - name = varName; + name = new StringBuilder(varName); } else { - name = varName + "." + name; + name.insert(0, varName + "."); } break; } @@ -808,14 +808,14 @@ public class ResolveVisitor extends ClassCodeExpressionTransformer { // field bar. if (!testVanillaNameForClass(propertyPart)) return null; doInitialClassTest= false; - name = propertyPart; + name = new StringBuilder(propertyPart); } else { - name = propertyPart + "." + name; + name.insert(0, propertyPart + "."); } } } if (name.length() == 0) return null; - return name; + return name.toString(); } // iterate from the inner most to the outer and check for classes http://git-wip-us.apache.org/repos/asf/groovy/blob/2b507b29/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java b/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java index 372a0a5..c9ea871 100644 --- a/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java +++ b/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java @@ -47,7 +47,7 @@ public class ReflectionCache { public static String getMOPMethodName(CachedClass declaringClass, String name, boolean useThis) { TripleKeyHashMap.Entry mopNameEntry = mopNames.getOrPut(declaringClass, name, Boolean.valueOf(useThis)); if (mopNameEntry.value == null) { - mopNameEntry.value = new StringBuffer().append(useThis ? "this$" : "super$").append(declaringClass.getSuperClassDistance()).append("$").append(name).toString(); + mopNameEntry.value = new StringBuilder().append(useThis ? "this$" : "super$").append(declaringClass.getSuperClassDistance()).append("$").append(name).toString(); } return (String) mopNameEntry.value; } http://git-wip-us.apache.org/repos/asf/groovy/blob/2b507b29/src/main/java/org/codehaus/groovy/runtime/ResourceGroovyMethods.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/codehaus/groovy/runtime/ResourceGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/ResourceGroovyMethods.java index c869523..789b275 100644 --- a/src/main/java/org/codehaus/groovy/runtime/ResourceGroovyMethods.java +++ b/src/main/java/org/codehaus/groovy/runtime/ResourceGroovyMethods.java @@ -1716,9 +1716,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport { } // fill it up path with parts which were not equal - for (int i = same; i < toPathStack.length; i++) { - relativePathStack.add(toPathStack[i]); - } + relativePathStack.addAll(Arrays.asList(toPathStack).subList(same, toPathStack.length)); return getPath(relativePathStack); } http://git-wip-us.apache.org/repos/asf/groovy/blob/2b507b29/src/main/java/org/codehaus/groovy/tools/javac/JavacJavaCompiler.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/codehaus/groovy/tools/javac/JavacJavaCompiler.java b/src/main/java/org/codehaus/groovy/tools/javac/JavacJavaCompiler.java index a705ecf..bfed227 100644 --- a/src/main/java/org/codehaus/groovy/tools/javac/JavacJavaCompiler.java +++ b/src/main/java/org/codehaus/groovy/tools/javac/JavacJavaCompiler.java @@ -165,9 +165,8 @@ public class JavacJavaCompiler implements JavaCompiler { // ignore it } - StringBuilder resultPath = new StringBuilder(DefaultGroovyMethods.join((Iterable) paths, File.pathSeparator)); paras.add("-classpath"); - paras.add(resultPath.toString()); + paras.add(DefaultGroovyMethods.join((Iterable) paths, File.pathSeparator)); } // files to compile http://git-wip-us.apache.org/repos/asf/groovy/blob/2b507b29/src/main/java/org/codehaus/groovy/transform/stc/TraitTypeCheckingExtension.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/codehaus/groovy/transform/stc/TraitTypeCheckingExtension.java b/src/main/java/org/codehaus/groovy/transform/stc/TraitTypeCheckingExtension.java index 9bc93b5..4a108d9 100644 --- a/src/main/java/org/codehaus/groovy/transform/stc/TraitTypeCheckingExtension.java +++ b/src/main/java/org/codehaus/groovy/transform/stc/TraitTypeCheckingExtension.java @@ -123,7 +123,7 @@ public class TraitTypeCheckingExtension extends AbstractTypeCheckingExtension { System.arraycopy(argumentTypes, 0, newArgs, 0, newArgs.length); ClassNode inferredReturnType = inferTraitMethodReturnType(nextTrait, name, newArgs); - return Arrays.asList(makeDynamic(call, inferredReturnType)); + return Collections.singletonList(makeDynamic(call, inferredReturnType)); } private ClassNode inferTraitMethodReturnType(ClassNode nextTrait, String methodName, ClassNode[] paramTypes) {