On Wed, 6 Sep 2023 16:10:27 GMT, Roger Riggs <[email protected]> wrote:
> I'd be more comfortable replacing the use of Unsafe with either the ByteArray
> functions or VarHandles. Using VarHandles will enable future optimizations,
> whereas Unsafe is a primitive tool and is brittle.
I also agree that using VarHandler is better, but using VarHandler in
StringLatin1 causes exception, as follows:
final class StringLatin1 {
private static final VarHandle SHORT =
MethodHandles.byteArrayViewVarHandle(short[].class, ByteOrder.LITTLE_ENDIAN);
}
make images
Building target 'images' in configuration 'macosx-aarch64-server-release'
Compiling up to 3452 files for java.base
Updating support/src.zip
Updating images/sec-bin.zip
Optimizing the exploded image
Error occurred during initialization of VM
java.lang.ExceptionInInitializerError
at java.lang.invoke.VarHandle.<clinit>(java.base/VarHandle.java:2246)
at
java.lang.invoke.VarHandles.byteArrayViewHandle(java.base/VarHandles.java:258)
at
java.lang.invoke.MethodHandles.byteArrayViewVarHandle(java.base/MethodHandles.java:4553)
at java.lang.StringLatin1.<clinit>(java.base/StringLatin1.java:84)
at java.lang.String.equals(java.base/String.java:1863)
at
java.util.ImmutableCollections$Set12.<init>(java.base/ImmutableCollections.java:797)
at java.util.Set.of(java.base/Set.java:487)
at
jdk.internal.reflect.Reflection.<clinit>(java.base/Reflection.java:58)
at
java.security.AccessController.doPrivileged(java.base/AccessController.java:319)
at
java.lang.reflect.AccessibleObject.<clinit>(java.base/AccessibleObject.java:524)
Caused by: java.lang.NullPointerException
at
java.lang.invoke.MethodHandleStatics.<clinit>(java.base/MethodHandleStatics.java:70)
at java.lang.invoke.VarHandle.<clinit>(java.base/VarHandle.java:2246)
at
java.lang.invoke.VarHandles.byteArrayViewHandle(java.base/VarHandles.java:258)
at
java.lang.invoke.MethodHandles.byteArrayViewVarHandle(java.base/MethodHandles.java:4553)
at java.lang.StringLatin1.<clinit>(java.base/StringLatin1.java:84)
at java.lang.String.equals(java.base/String.java:1863)
at
java.util.ImmutableCollections$Set12.<init>(java.base/ImmutableCollections.java:797)
at java.util.Set.of(java.base/Set.java:487)
at
jdk.internal.reflect.Reflection.<clinit>(java.base/Reflection.java:58)
at
java.security.AccessController.doPrivileged(java.base/AccessController.java:319)
at
java.lang.reflect.AccessibleObject.<clinit>(java.base/AccessibleObject.java:524)
-------------
PR Comment: https://git.openjdk.org/jdk/pull/14699#issuecomment-1708760741