# HG changeset patch # User redestad # Date 1459251090 -7200 # Tue Mar 29 13:31:30 2016 +0200 # Node ID 802e763326034a9404e518ed716b427d11d1f364 # Parent 271faffbe204f7fc89192c190df3899adafaabcb 8152951: Avoid calculating the reverse of StringConcatFactory$Recipe elements Reviewed-by: shade diff --git a/src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java b/src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java --- a/src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java +++ b/src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java @@ -255,7 +255,6 @@ */ 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 @@ 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 @@ // 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: {