Files
sdk/runtime/vm
Alexander Markov d84b374683 [vm] Improve bounds check elimination in range analysis
* Infer range for CheckArrayBound and GenericCheckBound instructions.
* Extend Constraint instruction to non-Smi values bounded by list
  length.
* Unwrap UnboxInt64 during canonicalization of range boundaries.
* Use symbolic range for UnboxInt64 of list length.

As a result, bounds check can be eliminated in a loop over a growable
list:
```
  for (int i = 0; i < a.length; ++i) {
    final value = a[i];
    ...
  }
```

TEST=runtime/tests/vm/dart/regress_56726_il_test.dart
Fixes https://github.com/dart-lang/sdk/issues/56726

Change-Id: Ic56df18f6fbf26abf91d6ecbff24d68678dccb60
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/386522
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2024-09-27 13:28:59 +00:00
..
2024-07-23 10:43:43 +00:00
2024-08-28 08:52:19 +00:00
2024-04-17 19:14:41 +00:00
2023-03-06 22:06:59 +00:00
2023-06-23 20:35:00 +00:00
2023-09-12 16:22:19 +00:00
2023-06-23 20:35:00 +00:00
2023-06-23 20:35:00 +00:00
2023-06-23 20:35:00 +00:00
2024-09-18 21:07:59 +00:00
2022-09-12 12:33:57 +00:00
2022-09-12 12:33:57 +00:00
2024-09-11 12:51:23 +00:00
2024-09-11 12:51:23 +00:00
2024-08-23 07:03:15 +00:00
2023-10-20 19:45:49 +00:00
2023-06-23 20:35:00 +00:00
2024-04-17 19:14:41 +00:00
2024-03-20 20:08:13 +00:00
2024-04-17 19:14:41 +00:00
2024-04-17 19:14:41 +00:00
2024-09-25 16:53:52 +00:00
2024-08-23 07:03:15 +00:00
2024-03-20 20:08:13 +00:00
2024-04-17 19:14:41 +00:00
2024-04-17 19:14:41 +00:00
2022-12-29 10:18:02 +00:00
2024-08-23 07:03:15 +00:00
2024-08-23 07:03:15 +00:00
2023-01-06 07:48:22 +00:00
2022-07-29 18:11:01 +00:00
2024-04-17 19:14:41 +00:00
2024-04-17 19:14:41 +00:00
2024-03-20 20:08:13 +00:00
2022-09-10 15:12:35 +00:00
2024-04-17 19:14:41 +00:00