RFR: 8307352: AARCH64: Improve itable_stub [v2]
Boris Ulasevich
bulasevich at openjdk.org
Mon Aug 7 08:19:38 UTC 2023
On Wed, 19 Jul 2023 09:19:11 GMT, Evgeny Astigeevich <eastigeevich at openjdk.org> wrote:
>> Boris Ulasevich has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains one commit:
>>
>> 8307352: AARCH64: Improve itable_stub
>
> src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp line 1253:
>
>> 1251: // } while (temp_itbl_klass != 0);
>> 1252: // goto L_no_such_interface // Not found.
>> 1253: Label L_scan_holder;
>
> `L_search_holder_class`?
OK
> src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp line 1274:
>
>> 1272: // }
>> 1273: // } while (temp_itbl_klass != 0);
>> 1274: // goto L_no_such_interface // Not found.
>
> How about the following variant, it will have back jumps to one point instead of two points:
>
> bind(L_loop_scan_resolved);
> ldr(temp_itbl_klass, Address(pre(scan_temp, scan_step)));
> bind(L_loop_scan_resolved_entry);
> cbz(temp_itbl_klass, L_no_such_interface);
> cmp(resolved_klass, temp_itbl_klass);
> br(Assembler::EQ, L_resolved_found);
> cmp(holder_klass, temp_itbl_klass);
> br(Assembler::NE, L_loop_scan_resolved);
> mov(holder_offset, scan_temp);
> b(L_loop_scan_resolved);
Right. This variant is more natural and has the same performance. Thanks!
> src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp line 1283:
>
>> 1281: bind(L_loop_scan_resolved);
>> 1282: ldr(temp_itbl_klass, Address(pre(scan_temp, scan_step)));
>> 1283: bind(L_loop_scan_resolved_entry);
>
> Is the indentation of `bind` correct?
fixed. thanks!
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13792#discussion_r1285535106
PR Review Comment: https://git.openjdk.org/jdk/pull/13792#discussion_r1285534663
PR Review Comment: https://git.openjdk.org/jdk/pull/13792#discussion_r1285535608
More information about the hotspot-dev
mailing list