xref: /csrg-svn/usr.bin/pascal/src/tmps.c (revision 3219)
1*3219Smckusick /* Copyright (c) 1979 Regents of the University of California */
2*3219Smckusick 
3*3219Smckusick static char sccsid[] = "@(#)tmps.c 1.1 03/11/81";
4*3219Smckusick 
5*3219Smckusick #include "whoami.h"
6*3219Smckusick #include "0.h"
7*3219Smckusick 
8*3219Smckusick /*
9*3219Smckusick  * allocate runtime temporary variables
10*3219Smckusick  */
11*3219Smckusick long
12*3219Smckusick tmpalloc(size, type, loc)
13*3219Smckusick 	long size;
14*3219Smckusick 	struct nl *type;
15*3219Smckusick 	int loc;
16*3219Smckusick {
17*3219Smckusick 	long offset;
18*3219Smckusick 
19*3219Smckusick 	offset = sizes[ cbn ].curtmps.om_off -= size;
20*3219Smckusick 	if ( offset < sizes[ cbn ].om_max ) {
21*3219Smckusick 	    sizes[ cbn ].om_max = offset;
22*3219Smckusick 	}
23*3219Smckusick #	ifdef PC
24*3219Smckusick 	    putlbracket( ftnno , -offset );
25*3219Smckusick #	endif PC
26*3219Smckusick 	return offset;
27*3219Smckusick }
28*3219Smckusick 
29*3219Smckusick /*
30*3219Smckusick  * deallocate runtime temporary variables
31*3219Smckusick  */
32*3219Smckusick tmpfree(restore)
33*3219Smckusick 	struct tmps *restore;
34*3219Smckusick {
35*3219Smckusick 	long offset;
36*3219Smckusick 
37*3219Smckusick 	offset = restore->om_off;
38*3219Smckusick 	if (offset > sizes[cbn].curtmps.om_off) {
39*3219Smckusick 		sizes[cbn].curtmps.om_off = offset;
40*3219Smckusick #		ifdef PC
41*3219Smckusick 		    putlbracket( ftnno , -offset );
42*3219Smckusick #		endif PC
43*3219Smckusick 	}
44*3219Smckusick }
45