When packing/unpacking inline type arguments to convert between the scalarized and the non-scalarized calling conventions in the nmethod entry points, we may need to extend the stack. To save stack space, C2 re-uses the existing stack slots and only extends the stack to fit additional fields. As a result, the original return address is in-between and to avoid overwriting it by accident, we need "reserved entries" that are not used by the calling convention.
Similar to C1 (seeJDK-8241764), we should extend the stack enough for unpacking to have its "own" stack space to lay out arguments and get rid off all the ridiculous complexity that reserved entries require in the JIT. If necessary, there are other ways to save stack space (for example, to allow overwriting the original return address and restore it on return).
Similar to C1 (see