Same as "ENTER"
, but when debugging is enabled it also associates the given literal string with the new scope.
Same as "LEAVE"
, but when debugging is enabled it first checks that the scope has the given name. name
must be a literal string.
These each temporarily allocate data on the savestack, returning an SSize_t index into the savestack, because a pointer would get broken if the savestack is moved on reallocation. Use "SSPTR
" to convert the returned index into a pointer.
The forms differ in that plain SSNEW
allocates size
bytes; SSNEWt
and SSNEWat
allocate size
objects, each of which is type type
; and <SSNEWa> and SSNEWat
make sure to align the new data to an align
boundary. The most useful value for the alignment is likely to be "MEM_ALIGNBYTES
". The alignment will be preserved through savestack reallocation only if realloc returns data aligned to a size divisible by "align"!
These convert the index
returned by L/<SSNEW
> and kin into actual pointers.
The difference is that SSPTR
casts the result to type
, and SSPTRt
casts it to a pointer of that type
.
Implements SAVEOP
.