1
/* if already mp.h has been included skip */
13
/* if genpari.h not loaded */
16
GEN1 addii(),mulii(),mulsi(),powerii(),shifti(),stoi(),dvmdii(),subii();
19
#define signe(x) (((GEN1)(x))[1]>>24)
20
#define lg(x) (((GEN1)(x))[0]&0xffff)
21
#define setlg(x,s) (((GEN1)(x))[0]=(((GEN1)(x))[0]&0xffff0000)+s)
22
#define lgef(x) (((GEN1)(x))[1]&0xffff)
23
#define setlgef(x,s) (((GEN1)(x))[1]=(((GEN1)(x))[1]&0xffff0000)+s)
25
#define our_ulong unsigned plong
26
#endif /* end MAXBLOC */
29
EXTER int in_saved_avma ;
30
EXTER unsigned plong avma;
33
/* #define DEBUG_AVMA */
36
#define save_avma long lvma = (in_saved_avma = 1, avma)
37
#define restore_avma avma = (in_saved_avma = 0, lvma)
39
#define save_avma long lvma = avma
40
#define restore_avma avma = lvma
46
/* copy x to y, increasing space by factor of 2 */
47
object make_integer();
49
#define Mcar(x) (x)->c.c_car
50
#define Mcdr(x) (x)->c.c_cdr
51
#define Mcaar(x) (x)->c.c_car->c.c_car
52
#define Mcadr(x) (x)->c.c_cdr->c.c_car
53
#define Mcdar(x) (x)->c.c_car->c.c_cdr
54
#define Mcddr(x) (x)->c.c_cdr->c.c_cdr
55
#define Mcaaar(x) (x)->c.c_car->c.c_car->c.c_car
56
#define Mcaadr(x) (x)->c.c_cdr->c.c_car->c.c_car
57
#define Mcadar(x) (x)->c.c_car->c.c_cdr->c.c_car
58
#define Mcaddr(x) (x)->c.c_cdr->c.c_cdr->c.c_car
59
#define Mcdaar(x) (x)->c.c_car->c.c_car->c.c_cdr
60
#define Mcdadr(x) (x)->c.c_cdr->c.c_car->c.c_cdr
61
#define Mcddar(x) (x)->c.c_car->c.c_cdr->c.c_cdr
62
#define Mcdddr(x) (x)->c.c_cdr->c.c_cdr->c.c_cdr
63
#define Mcaaaar(x) (x)->c.c_car->c.c_car->c.c_car->c.c_car
64
#define Mcaaadr(x) (x)->c.c_cdr->c.c_car->c.c_car->c.c_car
65
#define Mcaadar(x) (x)->c.c_car->c.c_cdr->c.c_car->c.c_car
66
#define Mcaaddr(x) (x)->c.c_cdr->c.c_cdr->c.c_car->c.c_car
67
#define Mcadaar(x) (x)->c.c_car->c.c_car->c.c_cdr->c.c_car
68
#define Mcadadr(x) (x)->c.c_cdr->c.c_car->c.c_cdr->c.c_car
69
#define Mcaddar(x) (x)->c.c_car->c.c_cdr->c.c_cdr->c.c_car
70
#define Mcadddr(x) (x)->c.c_cdr->c.c_cdr->c.c_cdr->c.c_car
71
#define Mcdaaar(x) (x)->c.c_car->c.c_car->c.c_car->c.c_cdr
72
#define Mcdaadr(x) (x)->c.c_cdr->c.c_car->c.c_car->c.c_cdr
73
#define Mcdadar(x) (x)->c.c_car->c.c_cdr->c.c_car->c.c_cdr
74
#define Mcdaddr(x) (x)->c.c_cdr->c.c_cdr->c.c_car->c.c_cdr
75
#define Mcddaar(x) (x)->c.c_car->c.c_car->c.c_cdr->c.c_cdr
76
#define Mcddadr(x) (x)->c.c_cdr->c.c_car->c.c_cdr->c.c_cdr
77
#define Mcdddar(x) (x)->c.c_car->c.c_cdr->c.c_cdr->c.c_cdr
78
#define Mcddddr(x) (x)->c.c_cdr->c.c_cdr->c.c_cdr->c.c_cdr
82
#define CMPcar(x) (x)->c.c_car
83
#define CMPcdr(x) (x)->c.c_cdr
84
#define CMPcaar(x) (x)->c.c_car->c.c_car
85
#define CMPcadr(x) (x)->c.c_cdr->c.c_car
86
#define CMPcdar(x) (x)->c.c_car->c.c_cdr
87
#define CMPcddr(x) (x)->c.c_cdr->c.c_cdr
88
#define CMPcaaar(x) (x)->c.c_car->c.c_car->c.c_car
89
#define CMPcaadr(x) (x)->c.c_cdr->c.c_car->c.c_car
90
#define CMPcadar(x) (x)->c.c_car->c.c_cdr->c.c_car
91
#define CMPcaddr(x) (x)->c.c_cdr->c.c_cdr->c.c_car
92
#define CMPcdaar(x) (x)->c.c_car->c.c_car->c.c_cdr
93
#define CMPcdadr(x) (x)->c.c_cdr->c.c_car->c.c_cdr
94
#define CMPcddar(x) (x)->c.c_car->c.c_cdr->c.c_cdr
95
#define CMPcdddr(x) (x)->c.c_cdr->c.c_cdr->c.c_cdr
96
#define CMPcaaaar(x) (x)->c.c_car->c.c_car->c.c_car->c.c_car
97
#define CMPcaaadr(x) (x)->c.c_cdr->c.c_car->c.c_car->c.c_car
98
#define CMPcaadar(x) (x)->c.c_car->c.c_cdr->c.c_car->c.c_car
99
#define CMPcaaddr(x) (x)->c.c_cdr->c.c_cdr->c.c_car->c.c_car
100
#define CMPcadaar(x) (x)->c.c_car->c.c_car->c.c_cdr->c.c_car
101
#define CMPcadadr(x) (x)->c.c_cdr->c.c_car->c.c_cdr->c.c_car
102
#define CMPcaddar(x) (x)->c.c_car->c.c_cdr->c.c_cdr->c.c_car
103
#define CMPcadddr(x) (x)->c.c_cdr->c.c_cdr->c.c_cdr->c.c_car
104
#define CMPcdaaar(x) (x)->c.c_car->c.c_car->c.c_car->c.c_cdr
105
#define CMPcdaadr(x) (x)->c.c_cdr->c.c_car->c.c_car->c.c_cdr
106
#define CMPcdadar(x) (x)->c.c_car->c.c_cdr->c.c_car->c.c_cdr
107
#define CMPcdaddr(x) (x)->c.c_cdr->c.c_cdr->c.c_car->c.c_cdr
108
#define CMPcddaar(x) (x)->c.c_car->c.c_car->c.c_cdr->c.c_cdr
109
#define CMPcddadr(x) (x)->c.c_cdr->c.c_car->c.c_cdr->c.c_cdr
110
#define CMPcdddar(x) (x)->c.c_car->c.c_cdr->c.c_cdr->c.c_cdr
111
#define CMPcddddr(x) (x)->c.c_cdr->c.c_cdr->c.c_cdr->c.c_cdr
112
#define CMPfuncall funcall
113
#define Creturn(v) return((vs_top=vs,(v)))
116
/* 2^6 is the limit on the number of args */
117
#define F_NARG_WIDTH 6
118
#define F_START_TYPES_POS (2* F_NARG_WIDTH + F_end )
120
{ F_requires_nargs, /* if set, then caller must store VFUN_NARGS with number
121
of args passed. F_ARGD is used to set up the argd,
122
and it sets this if minargs < maxargs. */
123
F_caller_sets_one_val, /* If set, then the CALLER will look after setting the
124
fcall.nvalues to 1, if necessary (eg the call is at the
125
end of a function, or if multiple-values-list invokes
126
the function.) If foo is proclaimed to return exactly
127
one value, then the CALLER might set this flag in the
128
link argd, or it might do it in the case we have (setq
129
x (foo)) or (values (foo)).
131
If this flag is not set, then the CALLED function is
132
responsible for setting the number of values in
133
fcall.nvalues, and also for always returning as C value
134
Cnil, in the case that it sets fcall.nvalues == 0. */
135
F_requires_fun_passed, /* if set, the caller must set VFUN_FUN to the
136
calling function. This is used by closures, but
137
could be used by other things i suppose. */
138
F_end /* 1 bigger than the largest flag */
147
/* Make a mask for bits i < j, masking j-i bits */
148
#define MASK_RANGE(i,j) ((~(~0 << (j-i)))<< i)
150
#define F_PLAIN(x) (((x) & MASK_RANGE( F_START_TYPES_POS,31)) == 0)
153
EXTER object MVloc[10];
155
#define TYPEP(x,t) (type_of(x) == (t))
160
/* char *alloca(); */
163
EXTER char *alloca_val;
164
#define OUR_ALLOCA(n) alloca(n)
165
#define ALLOCA_FREE(n)
167
#define ALLOCA_CONS(n) (alloca_val=alloca((n)*sizeof(struct cons)))
168
#define ON_STACK_CONS(x,y) (alloca_val=alloca(sizeof(struct cons)), on_stack_cons(x,y))
169
#define ON_STACK_LIST on_stack_list
170
#define ON_STACK_LIST_VECTOR on_stack_list_vector
171
#define ON_STACK_LIST_VECTOR_NEW on_stack_list_vector_new
172
#define ON_STACK_MAKE_LIST on_stack_make_list
173
object on_stack_cons();
174
object on_stack_list(int,...);
175
/* object on_stack_list_vector(int,va_list); */
176
object on_stack_list_vector_new(int,object,va_list);
177
object on_stack_make_list();
178
#else /* no HAVE_ALLOCA */
179
#define OUR_ALLOCA(n) malloc(n)
180
#define ALLOCA_FREE(n) free(n)
181
#define ALLOCA_CONS(n) 0
182
#define ON_STACK_CONS(x,y) MMcons(x,y)
183
#define ON_STACK_LIST list
184
#define ON_STACK_LIST_VECTOR list_vector
185
#define ON_STACK_MAKE_LIST make_list
188
#define KEYTYPE void *