From 3312808cdbedf4bf41588cc45cea447d578574e2 Mon Sep 17 00:00:00 2001 From: Claes Redestad Date: Tue, 29 Mar 2016 18:27:33 +0200 Subject: [PATCH] 8152951: Avoid calculating the reverse of StringConcatFactory$Recipe elements Reviewed-by: shade, vlivanov --- .../java/lang/invoke/StringConcatFactory.java | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/jdk/src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java b/jdk/src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java index 75776cde90c..f94746a71fa 100644 --- a/jdk/src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java +++ b/jdk/src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java @@ -255,7 +255,6 @@ public final class StringConcatFactory { */ private static final class Recipe { private final List elements; - private final List elementsRev; public Recipe(String src, Object[] constants) { List el = new ArrayList<>(); @@ -294,19 +293,13 @@ public final class StringConcatFactory { el.add(new RecipeElement(acc.toString())); } - elements = new ArrayList<>(el); - Collections.reverse(el); - elementsRev = el; + elements = el; } - public Collection getElements() { + public List getElements() { return elements; } - public Collection getElementsReversed() { - return elementsRev; - } - @Override public boolean equals(Object o) { if (this == o) return true; @@ -1310,7 +1303,9 @@ public final class StringConcatFactory { // Compose append calls. This is done in reverse because the application order is // reverse as well. - for (RecipeElement el : recipe.getElementsReversed()) { + List elements = recipe.getElements(); + for (int i = elements.size() - 1; i >= 0; i--) { + RecipeElement el = elements.get(i); MethodHandle appender; switch (el.getTag()) { case CONST: {