RFR: 8266609: AArch64: include FP/LR space in LIR_Assembler::initial_frame_size_in_bytes()

Nick Gasson ngasson at openjdk.java.net
Thu May 6 10:09:09 UTC 2021


LIR_Assembler::initial_frame_size_in_bytes() returns the frame size
without the additional 2*wordSize needed to store FP/LR (i.e. just the
space required for the C1 locals).  When we pass this value to
MacroAssembler build_frame and remove_frame we need to remember to add
back the 2*wordSize.  This patch changes initial_frame_size_in_bytes()
to return the full frame size including the space for FP/LR.  The PPC
and S390 ports already do this, and it also matches the behaviour of
C->output()->frame_size_in_bytes() in C2.

This change may seem a bit trivial in mainline but the Valhalla lworld
branch makes more calls to build_frame/remove_frame in C1 and keeping
track of whether "framesize" is with or without FP/LR quickly becomes
confusing.

Tested tier1 on AArch64.  The only use of this function is as input to
C1_MacroAssembler build_frame() and remove_frame() so seems safe.

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

Commit messages:
 - 8266609: AArch64: include FP/LR space in LIR_Assembler::initial_frame_size_in_bytes()

Changes: https://git.openjdk.java.net/jdk/pull/3898/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=3898&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8266609
  Stats: 12 lines in 4 files changed: 2 ins; 4 del; 6 mod
  Patch: https://git.openjdk.java.net/jdk/pull/3898.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/3898/head:pull/3898

PR: https://git.openjdk.java.net/jdk/pull/3898


More information about the hotspot-dev mailing list