/[gcl]/gcl/o/cfun.c
ViewVC logotype

Diff of /gcl/o/cfun.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by camm, Fri May 17 04:23:15 2002 UTC revision 1.3 by camm, Sat Jul 20 07:10:55 2002 UTC
# Line 29  Foundation, 675 Mass Ave, Cambridge, MA Line 29  Foundation, 675 Mass Ave, Cambridge, MA
29  #define dcheck_vs do{if (vs_base < vs_org || vs_top < vs_org) error("bad vs");} while (0)  #define dcheck_vs do{if (vs_base < vs_org || vs_top < vs_org) error("bad vs");} while (0)
30  #define dcheck_type(a,b) check_type(a,b) ; dcheck_vs  #define dcheck_type(a,b) check_type(a,b) ; dcheck_vs
31    
32  #define PADDR(i) ((char *)(long)(sSPinit->s.s_dbind->v.v_self[fix(i)]))  #define PADDR(i) ((void *)(long)(sSPinit->s.s_dbind->v.v_self[fix(i)]))
33  object sSPinit,sSPmemory;  object sSPinit,sSPmemory;
34    
35  object  object
36  make_cfun(self, name, data, start, size)  make_cfun(void (*self)(), object name, object data, char *start, int size)
 int (*self)();  
 object name, data;  
 char *start;  
 int size;  
37  {  {
38          object cf;          object cf;
39    
# Line 52  int size; Line 48  int size;
48          return(cf);          return(cf);
49  }  }
50  object  object
51  make_sfun(name,self,argd, data)  make_sfun(object name, object (*self)(), int argd, object data)
52  int argd;          
53  int (*self)();                
54  /*  object (*self)(); */  /*  object (*self)(); */
55  object name, data;                    
56  {object sfn;  {object sfn;
57                
58          sfn = alloc_object(t_sfun);          sfn = alloc_object(t_sfun);
# Line 72  object name, data; Line 68  object name, data;
68  #define VFUN_MAX_ARGS(argd) ((argd) >> 8)  #define VFUN_MAX_ARGS(argd) ((argd) >> 8)
69    
70  object  object
71  make_vfun(name,self,argd, data)  make_vfun(object name, object (*self)(), int argd, object data)
 int (*self)(),argd;  
 object name, data;  
72  {object vfn;  {object vfn;
73                
74          vfn = alloc_object(t_vfun);          vfn = alloc_object(t_vfun);
# Line 87  object name, data; Line 81  object name, data;
81  }  }
82    
83  object  object
84  make_cclosure_new(self, name, env, data)  make_cclosure_new(void (*self)(), object name, object env, object data)
 int (*self)();  
 object name, env, data;  
85  {  {
86          object cc;          object cc;
87    
# Line 104  object name, env, data; Line 96  object name, env, data;
96    
97    
98  object  object
99  make_cclosure(self, name, env, data, start, size)  make_cclosure(void (*self)(), object name, object env, object data, char *start, int size)
 int (*self)();  
 object name, env, data;  
 char *start;  
 int size;  
100  {  {
101          if(data && type_of(data)==t_cfdata)          if(data && type_of(data)==t_cfdata)
102            { data->cfd.cfd_start=start;            { data->cfd.cfd_start=start;
# Line 132  object name,address; Line 120  object name,address;
120  }  }
121    
122  object  object
123  MFsfun(sym,self,argd,data)  MFsfun(object sym, object (*self)(), int argd, object data)
      object sym,data;  
      int argd,(*self)();  
124  {object sfn;  {object sfn;
125   if (type_of(sym)!=t_symbol) not_a_symbol(sym);   if (type_of(sym)!=t_symbol) not_a_symbol(sym);
126   if (sym->s.s_sfdef != NOT_SPECIAL && sym->s.s_mflag)   if (sym->s.s_sfdef != NOT_SPECIAL && sym->s.s_mflag)
# Line 143  MFsfun(sym,self,argd,data) Line 129  MFsfun(sym,self,argd,data)
129   sym = clear_compiler_properties(sym,sfn);   sym = clear_compiler_properties(sym,sfn);
130   sym->s.s_gfdef = sfn;   sym->s.s_gfdef = sfn;
131   sym->s.s_mflag = FALSE;   sym->s.s_mflag = FALSE;
132     return sym;
133  }  }
134    
135  DEFUNO("MFSFUN",object,fSmfsfun,SI  DEFUNO("MFSFUN",object,fSmfsfun,SI
# Line 150  DEFUNO("MFSFUN",object,fSmfsfun,SI Line 137  DEFUNO("MFSFUN",object,fSmfsfun,SI
137  object name,address,argd;  object name,address,argd;
138  { /* 3 args */  { /* 3 args */
139    dcheck_type(address,t_fixnum);    dcheck_type(address,t_fixnum);
140    MFsfun(name,PADDR(address),fix(argd),sSPmemory->s.s_dbind);RETURN1(name);    return MFsfun(name,PADDR(address),fix(argd),sSPmemory->s.s_dbind);RETURN1(name);
141  }  }
142    
143    
144  object  object
145  MFvfun(sym,self,argd,data)  MFvfun(object sym, object (*self)(), int argd, object data)
      object sym,data;  
      int argd,(*self)();  
146  {object vfn;  {object vfn;
147   if (type_of(sym)!=t_symbol) not_a_symbol(sym);   if (type_of(sym)!=t_symbol) not_a_symbol(sym);
148   if (sym->s.s_sfdef != NOT_SPECIAL && sym->s.s_mflag)   if (sym->s.s_sfdef != NOT_SPECIAL && sym->s.s_mflag)
# Line 167  MFvfun(sym,self,argd,data) Line 152  MFvfun(sym,self,argd,data)
152   sym = clear_compiler_properties(sym,vfn);   sym = clear_compiler_properties(sym,vfn);
153   sym->s.s_gfdef = vfn;   sym->s.s_gfdef = vfn;
154   sym->s.s_mflag = FALSE;   sym->s.s_mflag = FALSE;
155     return sym;
156  }  }
157    
158  DEFUNO("MFVFUN",object,fSmfvfun,SI  DEFUNO("MFVFUN",object,fSmfvfun,SI
# Line 180  object name,address,argd; Line 166  object name,address,argd;
166    
167    
168  object  object
169  MFvfun_key(sym,self,argd,data,keys)  MFvfun_key(object sym, object (*self)(), int argd, object data, struct key *keys)
      object sym,data;  
      int argd,(*self)();  
      char *keys;  
170  {if (data) set_key_struct(keys,data);  {if (data) set_key_struct(keys,data);
171   return MFvfun(sym,self,argd,data);   return MFvfun(sym,self,argd,data);
172  }  }
# Line 197  object symbol,address,argd,keys; Line 180  object symbol,address,argd,keys;
180  }  }
181    
182    
183  object MFnew(sym,self,data)  object MFnew(object sym, void (*self)(), object data)
      object sym,data;  
  int (*self)();  
184  {  {
185          object cf;          object cf;
186    
# Line 214  object MFnew(sym,self,data) Line 195  object MFnew(sym,self,data)
195          sym = clear_compiler_properties(sym,cf);          sym = clear_compiler_properties(sym,cf);
196          sym->s.s_gfdef = cf;          sym->s.s_gfdef = cf;
197          sym->s.s_mflag = FALSE;          sym->s.s_mflag = FALSE;
198            return sym;
199  }  }
200    
201  DEFUNO("MF",object,fSmf,SI  DEFUNO("MF",object,fSmf,SI
# Line 226  object name,addr; Line 208  object name,addr;
208    
209    
210  object  object
211  MF(sym, self, start, size, data)  MF(object sym, void (*self)(), char *start, int size, object data)
 object sym;  
 int (*self)();  
 char *start;  
 int size;  
 object data;  
212  { if(data && type_of(data)==t_cfdata)  { if(data && type_of(data)==t_cfdata)
213            { data->cfd.cfd_start=start;            { data->cfd.cfd_start=start;
214              data->cfd.cfd_size=size;}              data->cfd.cfd_size=size;}
# Line 240  object data; Line 217  object data;
217  }  }
218    
219  object  object
220  MM(sym, self, start, size, data)  MM(object sym, void (*self)(), char *start, int size, object data)
 object sym;  
 int (*self)();  
 char *start;  
 int size;  
 object data;  
221  {  {
222          object cf;          object cf;
223    
# Line 262  object data; Line 234  object data;
234          sym =   clear_compiler_properties(sym,cf);          sym =   clear_compiler_properties(sym,cf);
235          sym->s.s_gfdef = cf;          sym->s.s_gfdef = cf;
236          sym->s.s_mflag = TRUE;          sym->s.s_mflag = TRUE;
237            return sym;
238  }  }
239    
240  DEFUNO("MM",object,fSmm,SI  DEFUNO("MM",object,fSmm,SI
# Line 279  object name,addr; Line 252  object name,addr;
252        
253    
254  object  object
255  make_function(s, f)  make_function(char *s, void (*f)())
 char *s;  
 int (*f)();  
256  {  {
257          object x;          object x;
258          vs_mark;          vs_mark;
# Line 295  int (*f)(); Line 266  int (*f)();
266  }  }
267    
268  object  object
269  make_si_sfun(s, f,argd)  make_si_sfun(char *s, object (*f) (), int argd) {  
270  char *s;    object x= make_si_ordinary(s);
271  int (*f)();    x->s.s_gfdef = make_sfun( x,f,argd, Cnil);
272  int argd;    x->s.s_mflag = FALSE;
273  {  object x= make_si_ordinary(s);    return(x);
    x->s.s_gfdef = make_sfun( x,f,argd, Cnil);  
    x->s.s_mflag = FALSE;  
    return(x);  
274  }  }
275    
276  object  object
277  make_si_vfun1(s, f,argd)  make_si_vfun1(char *s, object (*f)(), int argd)
 char *s;  
 int (*f)();  
 int argd;  
278  {  object x= make_si_ordinary(s);  {  object x= make_si_ordinary(s);
279     x->s.s_gfdef = make_vfun( x,f,argd, Cnil);     x->s.s_gfdef = make_vfun( x,f,argd, Cnil);
280     x->s.s_mflag = FALSE;     x->s.s_mflag = FALSE;
# Line 318  int argd; Line 283  int argd;
283    
284    
285  object  object
286  make_si_function(s, f)  make_si_function(char *s, void (*f)())
 char *s;  
 int (*f)();  
287  {  {
288          object x;          object x;
289          vs_mark;          vs_mark;
# Line 337  int (*f)(); Line 300  int (*f)();
300    
301    
302  object  object
303  make_special_form(s, f)  make_special_form(char *s, void (*f)())
 char *s;  
 int (*f)();  
304  {  {
305          object x;          object x;
306          x = make_ordinary(s);          x = make_ordinary(s);
# Line 367  object fun; Line 328  object fun;
328          }RETURN1(fun);          }RETURN1(fun);
329  }  }
330    
331  turbo_closure(fun)  void
332  object fun;  turbo_closure(object fun)
333  {  {
334    object l,*block;    object l,*block;
335    object endp_temp;    object endp_temp;
# Line 399  object funobj; Line 360  object funobj;
360    
361    
362    
363  init_cfun()  void
364    init_cfun(void)
365  {  {
366                    
367  }  }

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26