On Sat, 24 Jun 2023 06:42:18 GMT, Glavo <d...@openjdk.org> wrote:

> `ByteArray` and `ByteArrayLittleEndian` are very useful tool classes that can 
> be used in many places to performance tuning.
> 
> Currently they are implemented by `VarHandle`, so using them may have some 
> impact on startup time.
> 
> This PR reimplements them using `Unsafe`, which reduces the impact on startup 
> time.

Changes requested by liach (Author).

The reimplementation allows parts that invoke package depend on to utilize 
faster byte array access, namely bytecode generation and Classfile API; which 
IMO is more important than the reduction on startup time.

Created an issue at https://bugs.openjdk.org/browse/JDK-8310843.
I look forward to this improvement, for it can potentially be used by the 
Classfile API to speed up Classfile parsing and writing.

src/java.base/share/classes/jdk/internal/util/ByteArray.java line 47:

> 45: 
> 46:     private static final BiFunction<String, List<Number>, 
> ArrayIndexOutOfBoundsException>
> 47:             OOBEF = 
> Preconditions.outOfBoundsExceptionFormatter(ArrayIndexOutOfBoundsException::new);

Can't this be replaced by `Preconditions.AIOBBE_FORMATTER`? And this lambda 
expression prevents this class to be used before java.lang.invoke 
initialization.

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

PR Review: https://git.openjdk.org/jdk/pull/14636#pullrequestreview-1496433457
PR Comment: https://git.openjdk.org/jdk/pull/14636#issuecomment-1605319678
PR Comment: https://git.openjdk.org/jdk/pull/14636#issuecomment-1605325374
PR Review Comment: https://git.openjdk.org/jdk/pull/14636#discussion_r1240649846

Reply via email to