Reduce iterator usage on hot code paths
Micro-optimize a few hot code paths which have a habit of iterating over short O(1)-access
lists.
RELNOTES: None
PiperOrigin-RevId: 171347524
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
index 979c63b..6d45726 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
@@ -481,7 +481,7 @@
// funcall_suffix ::= '(' arg_list? ')'
private Expression parseFuncallSuffix(int start, Expression function) {
- List<Argument.Passed> args = Collections.emptyList();
+ ImmutableList<Argument.Passed> args = ImmutableList.of();
expect(TokenKind.LPAREN);
int end;
if (token.kind == TokenKind.RPAREN) {
@@ -509,8 +509,8 @@
}
// arg_list ::= ( (arg ',')* arg ','? )?
- private List<Argument.Passed> parseFuncallArguments() {
- List<Argument.Passed> arguments = parseFunctionArguments(this::parseFuncallArgument);
+ private ImmutableList<Argument.Passed> parseFuncallArguments() {
+ ImmutableList<Argument.Passed> arguments = parseFunctionArguments(this::parseFuncallArgument);
try {
Argument.validateFuncallArguments(arguments);
} catch (Argument.ArgumentException e) {