RFR: 8341708: Optimize safepoint poll encoding with smaller poll data offset [v2]

David Holmes dholmes at openjdk.org
Wed Oct 16 06:30:18 UTC 2024


On Thu, 10 Oct 2024 09:12:43 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> See the bug for discussion. We can optimize the encoding for safepoint polls by making sure the polling data is at small offset in `Thread`. There is already the area where we pull data like this for better encoding.
>> 
>> Code density improves on x86_64, can be seen with just `-Xcomp -XX:+CITime`:
>> 
>> 
>> # Before
>>   nmethod code size         :  7107136 bytes
>>   nmethod code size         :  7107120 bytes
>>   nmethod code size         :  7107136 bytes
>> 
>> # After (-0.25%)
>>   nmethod code size         :  7088896 bytes
>>   nmethod code size         :  7088896 bytes
>>   nmethod code size         :  7088864 bytes
>> 
>> 
>> Additional testing:
>>  - [x] Ad-hoc code density checks
>>  - [x] Linux x86_64 server fastdebug, `all`
>
> Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Shuffle things around: keep the accessors in JavaThread

src/hotspot/share/runtime/javaThread.hpp line 603:

> 601:                       byte_offset_of(SafepointMechanism::ThreadData, _polling_word);
> 602:     // At least on x86_64, safepoint polls encode the offset as disp8 imm.
> 603:     assert(in_bytes(offset) < 128, "Offset >= 128");

Did you test all platforms for this? The x86 comment seems out of place in shared code.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/21405#discussion_r1802436801


More information about the hotspot-runtime-dev mailing list