CWI to the heap services

Language Environment provides the following sets of CWIs for heap services:
  • Routines for process-level heap storage (acquisition and release)
  • Routines for region-level heap storage interface.
  • Routines using a parameter list (PLIST) interface. Call these CWI interfaces as follows (xxxx has the appropriate offset value listed in Table 1):
    L     R12,A(CAA)            Get the address of CAA in R12
    L     R15,CEECAACELV-CEECAA(,R12)
    L     R15,xxxx(,R15)
    BALR  R14,R15
    Table 1 lists the interfaces and their corresponding callable services, which are described in more detail in the z/OS Language Environment Programming Guide. In each case, the parameter list for the callable service also applies to the CWI.
    Table 1. Routines using a parameter list interface
    CWI Name Description Callable Service Decimal Offset
    CEEVGTST Allocate storage CEEGTST 144
    CEEVFRST Free storage CEEFRST 132
    CEEVCRHP Create a new heap CEECRHP 164
    CEEVDSHP Discard heap CEEDSHP 168
    CEEVCZST Reallocate storage CEECZST 2820
    CEEVGTSB Allocate storage unconditionally below 16 MB None 2936

Member-language intrinsic functions such as malloc must generate a call to a member-language stub routine. The stub routine, in turn, must call the corresponding Language Environment service (for example, CEEVGTST with heap-ID 0) to allocate the heap storage.

Member-language control blocks should be allocated in the private Language Environment/language below heap only if they must reside below the 16 MB line. Most other internal control blocks should be allocated in the private Language Environment/language anywhere heap. The heap-IDs of both the Language Environment/language below heap and Language Environment/language anywhere heap are stored in the enclave data block (EDB) for easy access, but these heap-IDs are not exposed to application code.