summaryrefslogtreecommitdiff
path: root/scope.h
blob: 7699d54f18b07400cf9220643fb2c74e3430e22e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#define SAVEt_ITEM	0
#define SAVEt_SV	1
#define SAVEt_AV	2
#define SAVEt_HV	3
#define SAVEt_INT	4
#define SAVEt_LONG	5
#define SAVEt_I32	6
#define SAVEt_SPTR	7
#define SAVEt_APTR	8
#define SAVEt_HPTR	9
#define SAVEt_PPTR	10
#define SAVEt_NSTAB	11
#define SAVEt_SVREF	12
#define SAVEt_GP	13
#define SAVEt_FREESV	14
#define SAVEt_FREEOP	15
#define SAVEt_FREEPV	16
#define SAVEt_CLEARSV	17
#define SAVEt_DELETE	18

#define SSCHECK(need) if (savestack_ix + need > savestack_max) savestack_grow()
#define SSPUSHINT(i) (savestack[savestack_ix++].any_i32 = (I32)(i))
#define SSPUSHLONG(i) (savestack[savestack_ix++].any_long = (long)(i))
#define SSPUSHPTR(p) (savestack[savestack_ix++].any_ptr = (void*)(p))
#define SSPOPINT (savestack[--savestack_ix].any_i32)
#define SSPOPLONG (savestack[--savestack_ix].any_long)
#define SSPOPPTR (savestack[--savestack_ix].any_ptr)

#define FREE_TMPS() if (tmps_ix > tmps_floor) free_tmps()
#define LEAVE_SCOPE(old) if (savestack_ix > old) leave_scope(old)