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