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