aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java b/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
index 15fb66abd4..541413f4c1 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java
@@ -319,7 +319,7 @@ public final class EvalUtils {
for (Map.Entry<?, ?> entries : dict.entrySet()) {
list.add(entries.getKey());
}
- return ImmutableList.copyOf(list);
+ return ImmutableList.copyOf(list);
}
// For determinism, we sort the keys.
try {
@@ -512,7 +512,10 @@ public final class EvalUtils {
}
start = clampRangeEndpoint(start, length, step < 0);
end = clampRangeEndpoint(end, length, step < 0);
- ImmutableList.Builder<Integer> indices = ImmutableList.builder();
+ // precise computation is slightly more involved, but since it can overshoot only by a single
+ // element it's fine
+ final int expectedMaxSize = Math.abs(start - end) / Math.abs(step) + 1;
+ ImmutableList.Builder<Integer> indices = ImmutableList.builderWithExpectedSize(expectedMaxSize);
for (int current = start; step > 0 ? current < end : current > end; current += step) {
indices.add(current);
}