Skip to content

Commit c521658

Browse files
raph-amiardHugoGGuerrier
authored andcommitted
Perf: Don't go through abstract iterator in selector call
1 parent f2d41fb commit c521658

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

lkql_jit/language/src/main/java/com/adacore/lkql_jit/nodes/patterns/SelectorCall.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -215,13 +215,11 @@ private boolean isAll(
215215
BasePattern pattern
216216
) {
217217
// Iterate on nodes
218-
Iterator iterator = selectorListValue.iterator();
219-
while (iterator.hasNext()) {
220-
Object value = iterator.next();
221-
if (!pattern.executeValue(frame, value)) return false;
218+
for (int i = 0; i < selectorListValue.size(); i++) {
219+
if (!pattern.executeValue(frame, selectorListValue.get(i))) return false;
222220
}
223221

224-
// Return validation of all nodes
222+
// Return true if all nodes verify the pattern
225223
return true;
226224
}
227225

@@ -238,10 +236,12 @@ private boolean isAny(
238236
LKQLSelectorList selectorListValue,
239237
BasePattern pattern
240238
) {
241-
// Iterate on nodes
242-
Iterator iterator = selectorListValue.iterator();
239+
// Iterate on nodes.
240+
// Here we use an iterator to compute the iterator list content in a
241+
// lazy way.
242+
var iterator = selectorListValue.iterator();
243243
while (iterator.hasNext()) {
244-
Object val = iterator.next();
244+
var val = iterator.next();
245245
if (pattern.executeValue(frame, val)) return true;
246246
}
247247

0 commit comments

Comments
 (0)