Skip to content

Commit 8900105

Browse files
l46kokcopybara-github
authored andcommitted
Check for presence of optional indices to prevent autoboxing
PiperOrigin-RevId: 645119230
1 parent b289871 commit 8900105

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

runtime/src/main/java/dev/cel/runtime/DefaultInterpreter.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -711,7 +711,6 @@ private IntermediateResult evalBooleanNonstrict(ExecutionFrame frame, CelExpr ex
711711

712712
private IntermediateResult evalList(ExecutionFrame frame, CelExpr unusedExpr, CelList listExpr)
713713
throws InterpreterException {
714-
715714
CallArgumentChecker argChecker = CallArgumentChecker.create(frame.getResolver());
716715
List<Object> result = new ArrayList<>(listExpr.elements().size());
717716

@@ -726,7 +725,11 @@ private IntermediateResult evalList(ExecutionFrame frame, CelExpr unusedExpr, Ce
726725

727726
argChecker.checkArg(evaluatedElement);
728727
Object value = evaluatedElement.value();
729-
if (optionalIndicesSet.contains(i) && !isUnknownValue(value)) {
728+
if (!optionalIndicesSet
729+
.isEmpty() // Performance optimization to prevent autoboxing when there's no
730+
// optionals.
731+
&& optionalIndicesSet.contains(i)
732+
&& !isUnknownValue(value)) {
730733
Optional<?> optionalVal = (Optional<?>) value;
731734
if (!optionalVal.isPresent()) {
732735
continue;

0 commit comments

Comments
 (0)