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.

I recommend documenting that this class is intended to be usable at early 
startup so we don't accidentally introduce features like lambda into the code.

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

> 33:  * using {@linkplain java.nio.ByteOrder#BIG_ENDIAN big endian order} 
> (aka. "network order").
> 34:  * <p>
> 35:  * All methods in this class will throw an {@linkplain 
> NullPointerException} if {@code null} is

Do the Unsafe methods throw NPE on null array argument?

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

> 41:     }
> 42: 
> 43:     static final Unsafe UNSAFE = Unsafe.getUnsafe();

I recommend documenting the reason to use Unsafe (early startup) and comment 
that regular users should use VarHandle instead.

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

PR Review: https://git.openjdk.org/jdk/pull/14636#pullrequestreview-1496438253
PR Review Comment: https://git.openjdk.org/jdk/pull/14636#discussion_r1240653787
PR Review Comment: https://git.openjdk.org/jdk/pull/14636#discussion_r1240653425

Reply via email to