RFR: 8310929: Optimization for Integer.toString [v20]

温绍锦 duke at openjdk.org
Wed Sep 6 16:54:47 UTC 2023


On Wed, 6 Sep 2023 16:10:27 GMT, Roger Riggs <rriggs at 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


More information about the core-libs-dev mailing list