RFR: 8357289: Break down the String constructor into smaller methods [v8]
Chen Liang
liach at openjdk.org
Wed Jun 25 22:32:30 UTC 2025
On Wed, 25 Jun 2025 00:13:56 GMT, Shaojin Wen <swen at openjdk.org> wrote:
>> Through JVM Option +PrintInlining, we found that String has a constructor codeSize of 852, which is too large. This caused failed to inline.
>>
>> The following is the output information of PrintInlining:
>>
>> @ 9 java.lang.String::<init> (12 bytes) inline (hot)
>> !m @ 1 java.nio.charset.Charset::defaultCharset (52 bytes) inline (hot)
>> ! @ 8 java.lang.String::<init> (852 bytes) failed to inline: hot method too big
>>
>>
>> In Java code, the big method that cannot be inlined is the following constructor
>>
>>
>> String(Charset charset, byte[] bytes, int offset, int length) {}
>>
>> The above String constructor is too large; break it down into smaller methods with a codeSize under 325 to allow them to be inlined by the C2.
>
> Shaojin Wen has updated the pull request incrementally with one additional commit since the last revision:
>
> code format, from @RogerRiggs
For startup time, I believe this should have little impact: String itself, without allocation of its storage array, should be as expensive as generic record objects. This should have similar impact of declaring new records (minimal), and in addition, this doesn't introduce new classes, so there will be even less of an effect.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/25290#issuecomment-3006424715
More information about the core-libs-dev
mailing list