__alcaxp() — AMODE 64 DSA extension (alloca)

This function is invoked by C/C++ compiler generated code to extend an XPLINK downward-growing stack frame. The linkage will be normal XPLINK conventions for call-by-name. It will appear like a function that takes an integer for input and returns void. It is used by the compiler to implement the compiler built-in function alloca().

Syntax

#include <edcwccwi.h>

void __alcaxp (long storage_size)

storage_size
the amount of additional stack storage being requested in bytes. This value will be rounded up to a multiple of 16 to ensure that the stack frame remains on a quadword boundary.
Usage Notes:
  1. This function changes the value of the stack pointer (R4) and moves the register save area.
  2. The argument area is never copied. The compiler must never assume that something placed in the argument area is still there across a call to this function.
  3. The address of this function is resolved like other C-RTL functions for XPLINK (through a side deck). There is no stub for non-XPLINK.
  4. If there is not sufficient room in the current stack segment, this routine handles stack expansion.
  5. It is the responsibility of the caller to calculate the address of the allocated storage. The allocated storage is located immediately following the argument area. The reason for this is that the compiler, which will know the size of the argument area, can generate more efficient code to perform the calculation.
  6. The Vendor Interfaces header file, <edcwccwi.h>, is located in member EDCWCCWI of the SCEESAMP data set. In order to include <edcwccwi.h> in an application, the header file must be copied into a PDS or into a directory in the z/OS® UNIX file system where the C/C++ compiler will find it.