RFR: 8139457: Array bases are aligned at HeapWord granularity
Fei Yang
fyang at openjdk.org
Mon Nov 21 11:07:24 UTC 2022
On Fri, 11 Nov 2022 10:08:08 GMT, Roman Kennke <rkennke 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.
With my proposed fix, I don't think you need the following change made in file: src/hotspot/cpu/riscv/macroAssembler_riscv.cpp
#ifdef ASSERT
{
Label L;
- andi(t0, len, BytesPerWord - 1);
+ andi(t0, len, BytesPerInt - 1);
beqz(t0, L);
- stop("len is not a multiple of BytesPerWord");
+ stop("len is not a multiple of BytesPerInt");
bind(L);
}
#endif // ASSERT
Could you please remove this change from this PR? I am running some tests on my linux-riscv64 platform.
-------------
PR: https://git.openjdk.org/jdk/pull/11044
More information about the hotspot-dev
mailing list