RFR: 8139457: Array bases are aligned at HeapWord granularity

Roman Kennke rkennke at openjdk.org
Mon Nov 21 11:07:24 UTC 2022


On Fri, 11 Nov 2022 08:17:19 GMT, Fei Yang <fyang at openjdk.org> wrote:

> Hi, you might need one extra change for riscv in order to pass this test: ./test/hotspot/jtreg/runtime/FieldLayout/ArrayBaseOffsets.java But I haven't perform full test for all these changes on riscv.
> 
> ```
> diff --git a/src/hotspot/cpu/riscv/c1_MacroAssembler_riscv.cpp b/src/hotspot/cpu/riscv/c1_MacroAssembler_riscv.cpp
> index 5989d5ab809..9dced7c53e9 100644
> --- a/src/hotspot/cpu/riscv/c1_MacroAssembler_riscv.cpp
> +++ b/src/hotspot/cpu/riscv/c1_MacroAssembler_riscv.cpp
> @@ -177,6 +177,13 @@ void C1_MacroAssembler::initialize_body(Register obj, Register len_in_bytes, int
>    sub(len_in_bytes, len_in_bytes, hdr_size_in_bytes);
>    beqz(len_in_bytes, done);
> 
> +  // Zero first 4 bytes, if start offset is not word aligned.
> +  if (!is_aligned(hdr_size_in_bytes, BytesPerWord)) {
> +    sw(zr, Address(obj, hdr_size_in_bytes));
> +    sub(len_in_bytes, len_in_bytes, BytesPerInt);
> +    hdr_size_in_bytes += BytesPerInt;
> +  }
> +
>    // Preserve obj
>    if (hdr_size_in_bytes) {
>      add(obj, obj, hdr_size_in_bytes);
> ```

Thanks for checking and providing the fix, Fei! I pushed those changes and updated the test matrix accordingly.

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

PR: https://git.openjdk.org/jdk/pull/11044


More information about the hotspot-dev mailing list