RFR: 8350095: RISC-V: Refactor string_compare [v6]
Fei Yang
fyang at openjdk.org
Tue Feb 25 12:01:53 UTC 2025
On Tue, 25 Feb 2025 11:28:36 GMT, Hamlin Li <mli at openjdk.org> wrote:
>> Hi,
>> Can you help to review this patch?
>>
>> Currently, `string_compare` code is a bit complicated, main reasons include:
>> 1. it has 2 piece of code respectively for LU and UL case, this is not necessary, basically LU and UL behaviour quite similar.
>> 2. it mixed LL/UU and LU/UL case together, better to separate them, as they are quite different from each other.
>>
>> This is not good for code reading and maintaining.
>>
>>
>> So, this patch does following refactoring:
>> 1. merge LU and UL code into one, i.e. remove UL code.
>> 2. seperate the code into 2 methods: LL/UU and LU/UL.
>> 3. some other misc improvement.
>>
>> I could do the following refactoring in another following pr, as in this pr I'm just moving code and removing code, it's easier to do it and review it. In particular the first one, as it needs to rewrite the existing code for UL/LU case.
>> 1. move alignment code of `generate_compare_long_string_different_encoding` upwards to `string_compare_long_LU`.
>> 2. make `SHORT_STRING` case simpler.
>>
>>
>>
>> Thanks
>
> Hamlin Li has updated the pull request incrementally with one additional commit since the last revision:
>
> clean 3
src/hotspot/cpu/riscv/c2_MacroAssembler_riscv.cpp line 1408:
> 1406: addi(str1, str1, 4);
> 1407: addi(str2, str2, 4);
> 1408: subi(cnt2, cnt2, minCharsInWord / 2);
Ah, I just realized that the check at [1] is discarded. Suppose this is LL case and input `cnt2` is 9, `cnt2` will be 5 after this `subi` instruction. This means the remaining number of latin chars is 5, so the two 8-byte loads at L1421 and L1422 will exceed the boundary. Maybe we should also consider moving the check at [2] to a proper place?
[1] https://github.com/openjdk/jdk/blob/master/src/hotspot/cpu/riscv/c2_MacroAssembler_riscv.cpp#L1445
[2] https://github.com/openjdk/jdk/blob/master/src/hotspot/cpu/riscv/c2_MacroAssembler_riscv.cpp#L1457
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/23633#discussion_r1969624989
More information about the hotspot-compiler-dev
mailing list