On Wed, 6 Sep 2023 16:10:27 GMT, Roger Riggs <rri...@openjdk.org> 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