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: {