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