On Fri, 2 Oct 2026 02:57:53 GMT, Kangcheng Xu <[email protected]> wrote:
>> Hi, >> >> This PR adds intrinsics to `Preconditions.checkFromToIndex()` and >> `Preconditions.checkFromIndexSize()` to produced optimized IR that uses >> `RangeCheck` node instead of implicit comparisons. >> `Preconditions.checkIndex()` is also refactored (without additional >> optimizations) to use the same helper function. >> >> Some common patterns where calling `checkFromToIndex` or >> `checkFromIndexSize` in a loop can have range checks in main loop eliminated >> completely and, therefore, enables empty loop removal. >> >> IR and correctness tests are included and passing. Additional tests on >> `Preconditions.checkIndex()` were also added. >> >> Thanks! >> >> --------- >> - [x] I confirm that I make this contribution in accordance with the >> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). > > Kangcheng Xu has updated the pull request with a new target base due to a > merge or a rebase. The pull request now contains 48 commits: > > - Merge branch 'master' into check-index-sub-range > - fix type widening, add comments > - explicit nullptr check, add type cast, add clarifications in comments > - simplify logic by allowing deopt with size == 0 > - remove left over code > - Merge branch 'master' into check-index-sub-range > - Merge branch 'master' into check-index-sub-range > - fix TestRangeCheck > - enable intrinsic control for release builds > - fix TestOpaqueConstantBoolNodes > - ... and 38 more: https://git.openjdk.org/jdk/compare/01b36384...55f42e15 src/hotspot/share/opto/library_call.cpp line 1346: > 1344: assert(bt == T_INT || bt == T_LONG, ""); > 1345: > 1346: if (too_many_traps(Deoptimization::Reason_intrinsic) || > too_many_traps(Deoptimization::Reason_range_check)) { Similar to #33428, you should not invalidate a compilation if the uncommon trap will throw an exception anyway. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/31138#discussion_r4310209156
