RFR: 8372410: ThreadFactory used by Thread.Builder::factory uses non-optimal VarHandle

Francesco Nigro duke at openjdk.org
Mon Nov 24 17:50:05 UTC 2025


On Mon, 24 Nov 2025 17:17:37 GMT, Chen Liang <liach at openjdk.org> wrote:

>> This is boosting VirtualThread allocations while using https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Thread.Builder.OfVirtual.html#name(java.lang.String,long)
>> 
>> The pattern has been discovered on https://github.com/quarkusio/quarkus/issues/51201 and narrowed down in https://github.com/franz1981/java-puzzles/commit/5cb4216e8d56cdc6c3c23629419158550cbd9068
>> 
>> which, on my machine (Ryzen 7950 w fixed frequency at 4.2 GHz):
>> 
>> Benchmark                                                                Mode  Cnt   Score   Error  Units
>> VarHandlePolymorphicSignatureSensitivity.rightVarHandle                  avgt   10   1.852 ± 0.007  ns/op
>> VarHandlePolymorphicSignatureSensitivity.rightVarHandleConcatIndy        avgt   10   9.891 ± 0.103  ns/op
>> VarHandlePolymorphicSignatureSensitivity.wrongVarHandle                  avgt   10  10.430 ± 0.045  ns/op
>> VarHandlePolymorphicSignatureSensitivity.wrongVarHandleConcatIndy        avgt   10  19.312 ± 0.619  ns/op
>> 
>> where the `right` indy shows:
>> <img width="1915" height="469" alt="image" src="https://github.com/user-attachments/assets/4c836389-492b-4cc6-94a3-849f8cf6ea09" />
>> 
>> vs the `wrong` one:
>> <img width="1915" height="469" alt="image" src="https://github.com/user-attachments/assets/73765060-8e95-42a2-a03a-4f53f927a8b8" />
>
> This is not the first time this VarHandle problem is hit - see #16451

This has bitten me lot of times @liach 😢 
Including others while reading/writing oop fields into arrays too; it would be nice to get an option to fail fast with an exception enabled via diagnostic args eg EnableStrictPolymorphicSignature
Although Javac should be able to detect it too, thinking about it twice

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

PR Comment: https://git.openjdk.org/jdk/pull/28475#issuecomment-3572001102


More information about the core-libs-dev mailing list