On Thu, 5 Nov 2020 15:47:31 GMT, Roland Westrelin <rol...@openjdk.org> wrote:
>> This change add 3 new methods in Objects: >> >> public static long checkIndex(long index, long length) >> public static long checkFromToIndex(long fromIndex, long toIndex, long >> length) >> public static long checkFromIndexSize(long fromIndex, long size, long length) >> >> This mirrors the int utility methods that were added by JDK-8135248 >> with the same motivations. >> >> As is the case with the int checkIndex(), the long checkIndex() method >> is JIT compiled as an intrinsic. It allows the JIT to compile >> checkIndex to an unsigned comparison and properly recognize it as >> a range check that then becomes a candidate for the existing range check >> optimizations. This has proven to be important for panama's >> MemorySegment API and a prototype of this change (with some extra c2 >> improvements) showed that panama micro benchmark results improve >> significantly. >> >> This change includes: >> >> - the API change >> - the C2 intrinsic >> - tests for the API and the C2 intrinsic >> >> This is a joint work with Paul who reviewed and reworked the API change >> and filled the CSR. > > Roland Westrelin has updated the pull request with a new target base due to a > merge or a rebase. The pull request now contains ten commits: > > - Jorn's comments > - Update headers and add intrinsic to Graal test ignore list > - move compiler test and add bug to test > - non x86_64 arch support > - c2 test case > - intrinsic > - Use overloads of method names. > > Simplify internally to avoid overload resolution > issues, leverging List<Number> for the exception > mapper. > - Vladimir's comments > - checkLongIndex C2 changes look good, except for new code block in inline_preconditions_checkIndex could use a comment. src/hotspot/share/opto/library_call.cpp line 1015: > 1013: Deoptimization::Action_make_not_entrant); > 1014: } > 1015: A comment here explaining what the code below is doing would be helpful. ------------- Changes requested by dlong (Reviewer). PR: https://git.openjdk.java.net/jdk/pull/1003