/* stak.c 4.1 82/05/07 */
* Bell Telephone Laboratories
/* ======== storage allocation ======== */
{ /* allocate requested stack */
size
=round(asize
,BYTESPERWORD
);
staktop
= stakbot
+= size
;
{ /* set up stack for local use
* should be followed by `endstak'
IF brkend
-stakbot
<BRKINCR
assert(staktop
==stakbot
);
{ /* tidy up after `locstak' */
oldstak
=stakbot
; stakbot
=staktop
=round(argp
,BYTESPERWORD
);
/* try to bring stack back to x */
WHILE
ADR(stakbsy
)>ADR(x
)
staktop
=stakbot
=max(ADR(x
),ADR(stakbas
));
IF (brkend
-stakbas
)>BRKINCR
+BRKINCR
return(endstak(movstr(x
,locstak())));