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

Reply via email to