Integrated: 8265518: C1: Intrinsic support for Preconditions.checkIndex

Yi Yang yyang at openjdk.java.net
Sat Jun 12 01:06:58 UTC 2021


On Thu, 22 Apr 2021 06:55:41 GMT, Yi Yang <yyang at openjdk.org> wrote:

> The JDK codebase re-created many variants of checkIndex(`grep -I -r 'cehckIndex' jdk/`). A notable variant is java.nio.Buffer.checkIndex, which annotated with @IntrinsicCandidate and it only has a corresponding C1 intrinsic version.
> 
> In fact, there is an utility method `jdk.internal.util.Preconditions.checkIndex`(wrapped by java.lang.Objects.checkIndex) that behaves the same as these variants of checkIndex, we can replace these re-created variants of checkIndex by Objects.checkIndex, it would significantly reduce duplicated code and enjoys performance improvement because Preconditions.checkIndex is @IntrinsicCandidate and it has a corresponding intrinsic method in HotSpot.
> 
> But, the problem is currently HotSpot only implements the C2 version of Preconditions.checkIndex. To reuse it global-widely in JDK code, I think we can firstly implement its C1 counterpart. There are also a few kinds of stuff we can do later:
> 
> 1. Replace all variants of checkIndex by Objects.checkIndex in the whole JDK codebase.
> 2. Remove Buffer.checkIndex and obsolete/deprecate InlineNIOCheckIndex flag
> 
> Testing: cds, compiler and jdk

This pull request has now been integrated.

Changeset: 5cee23a9
Author:    Yi Yang <yyang at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/5cee23a9ed0b7fe2657be7492d9c1f78fcd02ebf
Stats:     347 lines in 11 files changed: 250 ins; 78 del; 19 mod

8265518: C1: Intrinsic support for Preconditions.checkIndex

Reviewed-by: dfuchs, iveresov

-------------

PR: https://git.openjdk.java.net/jdk/pull/3615


More information about the nio-dev mailing list