[foreign-memaccess+abi] RFR: 8275584: Incorrect stack spilling in CallArranger on MacOS/AArch64

Nick Gasson ngasson at openjdk.org
Fri Oct 21 15:55:27 UTC 2022


On Fri, 21 Oct 2022 15:50:01 GMT, Nick Gasson <ngasson at openjdk.org> wrote:

> This patch adds special handling for argument spilling on M1 Mac which does not follow the standard AArch64.  In the standard ABI arguments are first extended to the full 64-bit register width and then spilled but on macOS the arguments are spilled according to their original width and packed using theior natural.  @JornVernee  did most of the work to support this but there were a few issues remaining related to structspilling which I've fixed up in the last commit here.

src/hotspot/cpu/aarch64/foreignGlobals_aarch64.cpp line 134:

> 132:       assert(to_reg.segment_mask() == REG64_MASK, "only moves to 64-bit registers supported");
> 133:       switch (from_reg.stack_size()) {
> 134:         // FIXME these loads zero upper bits of the register

I'm not sure about this: I'll try creating a test next week.

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

PR: https://git.openjdk.org/panama-foreign/pull/746


More information about the panama-dev mailing list