198 |
#define sLnil Cnil |
#define sLnil Cnil |
199 |
#define sLt Ct |
#define sLt Ct |
200 |
|
|
201 |
#define NOT_SPECIAL ((int (*)())Cnil) |
#define NOT_SPECIAL ((void (*)())Cnil) |
202 |
#define s_fillp st_fillp |
#define s_fillp st_fillp |
203 |
#define s_self st_self |
#define s_self st_self |
204 |
|
|
205 |
struct symbol { |
struct symbol { |
206 |
FIRSTWORD; |
FIRSTWORD; |
207 |
object s_dbind; /* dynamic binding */ |
object s_dbind; /* dynamic binding */ |
208 |
int (*s_sfdef)(); /* special form definition */ |
void (*s_sfdef)(); /* special form definition */ |
209 |
/* This field coincides with c_car */ |
/* This field coincides with c_car */ |
210 |
char *s_self; /* print name */ |
char *s_self; /* print name */ |
211 |
/* These fields coincide with */ |
/* These fields coincide with */ |
594 |
struct cfun { /* compiled function header */ |
struct cfun { /* compiled function header */ |
595 |
FIRSTWORD; |
FIRSTWORD; |
596 |
object cf_name; /* compiled function name */ |
object cf_name; /* compiled function name */ |
597 |
int (*cf_self)(); /* entry address */ |
void (*cf_self)(); /* entry address */ |
598 |
object cf_data; /* data the function uses */ |
object cf_data; /* data the function uses */ |
599 |
/* for GBC */ |
/* for GBC */ |
600 |
}; |
}; |
602 |
struct cclosure { /* compiled closure header */ |
struct cclosure { /* compiled closure header */ |
603 |
FIRSTWORD; |
FIRSTWORD; |
604 |
object cc_name; /* compiled closure name */ |
object cc_name; /* compiled closure name */ |
605 |
int (*cc_self)(); /* entry address */ |
void (*cc_self)(); /* entry address */ |
606 |
object cc_env; /* environment */ |
object cc_env; /* environment */ |
607 |
object cc_data; /* data the closure uses */ |
object cc_data; /* data the closure uses */ |
608 |
/* for GBC */ |
/* for GBC */ |
613 |
struct closure { |
struct closure { |
614 |
FIRSTWORD; |
FIRSTWORD; |
615 |
object cl_name; /* name */ |
object cl_name; /* name */ |
616 |
int (*cl_self)(); /* C start address of code */ |
object (*cl_self)(); /* C start address of code */ |
617 |
object cl_data; /* To object holding VV vector */ |
object cl_data; /* To object holding VV vector */ |
618 |
int cl_argd; /* description of args + number */ |
int cl_argd; /* description of args + number */ |
619 |
int cl_envdim; /* length of the environment vector */ |
int cl_envdim; /* length of the environment vector */ |
623 |
struct sfun { |
struct sfun { |
624 |
FIRSTWORD; |
FIRSTWORD; |
625 |
object sfn_name; /* name */ |
object sfn_name; /* name */ |
626 |
int (*sfn_self)(); /* C start address of code */ |
object (*sfn_self)(); /* C start address of code */ |
627 |
object sfn_data; /* To object holding VV vector */ |
object sfn_data; /* To object holding VV vector */ |
628 |
int sfn_argd; /* description of args + number */ |
int sfn_argd; /* description of args + number */ |
629 |
|
|
632 |
struct vfun { |
struct vfun { |
633 |
FIRSTWORD; |
FIRSTWORD; |
634 |
object vfn_name; /* name */ |
object vfn_name; /* name */ |
635 |
int (*vfn_self)(); /* C start address of code */ |
object (*vfn_self)(); /* C start address of code */ |
636 |
object vfn_data; /* To object holding VV data */ |
object vfn_data; /* To object holding VV data */ |
637 |
unsigned short vfn_minargs; /* Min args and where varargs start */ |
unsigned short vfn_minargs; /* Min args and where varargs start */ |
638 |
unsigned short vfn_maxargs; /* Max number of args */ |
unsigned short vfn_maxargs; /* Max number of args */ |
904 |
object Xxvl[65]; \ |
object Xxvl[65]; \ |
905 |
{int i; \ |
{int i; \ |
906 |
new=Xxvl; \ |
new=Xxvl; \ |
907 |
if (n >= 65) FEerror("Too plong vl"); \ |
if (n >= 65) FEerror("Too plong vl",0); \ |
908 |
for (i=0 ; i < (n); i++) new[i]=va_arg(vl,object);} |
for (i=0 ; i < (n); i++) new[i]=va_arg(vl,object);} |
909 |
#endif |
#endif |
910 |
#define make_si_vfun(s,f,min,max) \ |
#define make_si_vfun(s,f,min,max) \ |
922 |
EXTER struct call_data fcall; |
EXTER struct call_data fcall; |
923 |
|
|
924 |
#define VFUN_NARGS fcall.argd |
#define VFUN_NARGS fcall.argd |
925 |
#define RETURN2(x,y) do{object _x = (void *) x; \ |
#define RETURN2(x,y) do{/* object _x = (void *) x; */\ |
926 |
fcall.values[2]=y;fcall.nvalues=2; \ |
fcall.values[2]=y;fcall.nvalues=2; \ |
927 |
return (x) ;} while(0) |
return (x) ;} while(0) |
928 |
#define RETURN1(x) do{fcall.nvalues=1; return (x) ;} while(0) |
#define RETURN1(x) do{fcall.nvalues=1; return (x) ;} while(0) |