This is cfun.c in view mode; [Download] [Up]
Changes file for /usr/local/src/kcl/./c/cfun.c
Created on Mon Mar 25 12:25:00 1991
Usage \n@s[Original text\n@s|Replacement Text\n@s]
See the file rascal.ics.utexas.edu:/usr2/ftp/merge.c
for a program to merge change files. Anything not between
"\n@s[" and "\n@s]" is a simply a comment.
This file was constructed using emacs and merge.el
Enhancements Copyright (c) W. Schelter All rights reserved.
by (Bill Schelter) wfs@carl.ma.utexas.edu
****Change:(orig (12 12 a))
@s[*/
#include "include.h"
@s|*/
#include "include.h"
#define dcheck_vs do{if (vs_base < vs_org || vs_top < vs_org) error("bad vs");} while (0)
#define dcheck_type(a,b) check_type(a,b) ; dcheck_vs
#define PADDR(i) ((char *)(siSPinit->s.s_dbind->fixa.fixa_self[fix(i)]))
object siSPinit,siSPmemory;
@s]
****Change:(orig (26 27 c))
@s[ cf->cf.cf_start = start;
cf->cf.cf_size = size;
@s| if(data && type_of(data)==t_cfdata)
{ data->cfd.cfd_start=start;
data->cfd.cfd_size=size;}
else if(size) FEerror(0,"Bad call to make_cfun");
@s]
****Change:(orig (29 29 a))
@s[ return(cf);
}
@s| return(cf);
}
object
make_sfun(name,self,argd, data)
int argd,(*self)();
object name, data;
{object sfn;
sfn = alloc_object(t_sfun);
if(argd >15) sfn->d.t = (int)t_gfun;
sfn->sfn.sfn_self = self;
sfn->sfn.sfn_name = name;
sfn->sfn.sfn_data = data;
sfn->sfn.sfn_argd = argd;
return(sfn);
}
@s]
****Change:(orig (30 30 a))
@s[
@s|
#define VFUN_MIN_ARGS(argd) (argd & 0xff)
#define VFUN_MAX_ARGS(argd) ((argd) >> 8)
@s]
****Change:(orig (32 32 c))
@s[make_cclosure(self, name, env, data, start, size)
@s|make_vfun(name,self,argd, data)
int (*self)(),argd;
object name, data;
{object vfn;
vfn = alloc_object(t_vfun);
vfn->vfn.vfn_self = self;
vfn->vfn.vfn_name = name;
vfn->vfn.vfn_minargs = VFUN_MIN_ARGS(argd);
vfn->vfn.vfn_maxargs = VFUN_MAX_ARGS(argd);
vfn->vfn.vfn_data = data;
return(vfn);
}
object
make_cclosure_new(self, name, env, data)
@s]
****Change:(orig (35 36 d))
@s[object name, env, data;
char *start;
int size;
@s|object name, env, data;
@s]
****Change:(orig (45 46 d))
@s[ cc->cc.cc_start = start;
cc->cc.cc_size = size;
@s|
@s]
****Change:(orig (50 50 a))
@s[ cc->cc.cc_turbo = NULL;
return(cc);
}
@s| cc->cc.cc_turbo = NULL;
return(cc);
}
@s]
****Change:(orig (52 53 c))
@s[MF(sym, self, start, size, data)
object sym;
@s|make_cclosure(self, name, env, data, start, size)
@s]
****Change:(orig (54 54 a))
@s[int (*self)();
@s|int (*self)();
object name, env, data;
@s]
****Change:(orig (57 57 d))
@s[char *start;
int size;
object data;
@s|char *start;
int size;
@s]
****Change:(orig (58 58 a))
@s[{
@s|{
if(data && type_of(data)==t_cfdata)
{ data->cfd.cfd_start=start;
data->cfd.cfd_size=size;}
else if(size) FEerror("Bad call to make_cclosure",0);
return make_cclosure_new(self,name,env,data);
}
siLmc() /* args: (name,address) */
{ dcheck_type(vs_base[0],t_symbol);
dcheck_type(vs_base[1],t_fixnum);
dcheck_type(siSPmemory->s.s_dbind,t_cfdata);
vs_base[0]=make_cclosure_new(PADDR(vs_base[1]),vs_base[0],Cnil,
siSPmemory->s.s_dbind);}
object MFsfun(sym,self,argd,data)
object sym,data;
int argd,(*self)();
{object sfn;
if (type_of(sym)!=t_symbol) not_a_symbol(sym);
if (sym->s.s_sfdef != NOT_SPECIAL && sym->s.s_mflag)
sym->s.s_sfdef = NOT_SPECIAL;
sfn = make_sfun(sym,self,argd,data);
sym = clear_compiler_properties(sym,sfn);
sym->s.s_gfdef = sfn;
sym->s.s_mflag = FALSE;
}
siLmfsfun() /* args: (name,address,argd) */
{ dcheck_type(vs_base[1],t_fixnum);
MFsfun(vs_base[0],PADDR(vs_base[1]),fix(vs_base[2]),siSPmemory->s.s_dbind);}
object MFvfun(sym,self,argd,data)
object sym,data;
int argd,(*self)();
{object vfn;
if (type_of(sym)!=t_symbol) not_a_symbol(sym);
if (sym->s.s_sfdef != NOT_SPECIAL && sym->s.s_mflag)
sym->s.s_sfdef = NOT_SPECIAL;
dcheck_type(data,t_cfdata);
vfn = make_vfun(sym,self,argd,data);
sym = clear_compiler_properties(sym,vfn);
sym->s.s_gfdef = vfn;
sym->s.s_mflag = FALSE;
}
siLmfvfun()
{MFvfun(vs_base[0],PADDR(vs_base[1]),fix(vs_base[2]),siSPmemory->s.s_dbind);}
object MFvfun_key(sym,self,argd,data,keys)
object sym,data;
int argd,(*self)();
char *keys;
{if (data) set_key_struct(keys,data);
return MFvfun(sym,self,argd,data);
}
siLmfvfun_key()
{MFvfun_key(vs_base[0],PADDR(vs_base[1]),fix(vs_base[2]),siSPmemory->s.s_dbind,PADDR(vs_base[3]));}
object MFnew(sym,self,data)
object sym,data;
int (*self)();
{
@s]
****Change:(orig (65 65 d))
@s[ clear_compiler_properties(sym);
@s|
@s]
****Change:(orig (70 72 c))
@s[ cf->cf.cf_start = start;
cf->cf.cf_size = size;
sym->s.s_gfdef = cf;
@s| sym = clear_compiler_properties(sym,cf);
sym->s.s_gfdef = cf;
@s]
****Change:(orig (75 75 a))
@s[ sym->s.s_mflag = FALSE;
}
@s| sym->s.s_mflag = FALSE;
}
siLmf()
{MFnew(vs_base[0],PADDR(vs_base[1]),siSPmemory->s.s_dbind);}
@s]
****Change:(orig (76 76 a))
@s[object
@s|object
MF(sym, self, start, size, data)
object sym;
int (*self)();
char *start;
int size;
object data;
{ if(data && type_of(data)==t_cfdata)
{ data->cfd.cfd_start=start;
data->cfd.cfd_size=size;}
else if(size) FEerror(0,"Bad call to make_cfun");
return(MFnew(sym,self,data));
}
object
@s]
****Change:(orig (90 90 d))
@s[ clear_compiler_properties(sym);
@s|
@s]
****Change:(orig (95 96 c))
@s[ cf->cf.cf_start = start;
cf->cf.cf_size = size;
@s| data->cfd.cfd_start=start;
data->cfd.cfd_size=size;
sym = clear_compiler_properties(sym,cf);
@s]
****Change:(orig (100 100 a))
@s[ sym->s.s_mflag = TRUE;
}
@s| sym->s.s_mflag = TRUE;
}
siLmm()
{MM(vs_base[0],PADDR(vs_base[1]),
/* bit wasteful to pass these in just to be reset to themselves..*/
siSPmemory->s.s_dbind->cfd.cfd_start,
siSPmemory->s.s_dbind->cfd.cfd_size,
siSPmemory->s.s_dbind
);}
@s]
****Change:(orig (117 117 a))
@s[ vs_reset;
return(x);
}
object
@s| vs_reset;
return(x);
}
object
make_si_sfun(s, f,argd)
char *s;
int (*f)();
int argd;
{ object x= make_si_ordinary(s);
x->s.s_gfdef = make_sfun( x,f,argd, Cnil);
x->s.s_mflag = FALSE;
return(x);
}
object
make_si_vfun1(s, f,argd)
char *s;
int (*f)();
int argd;
{ object x= make_si_ordinary(s);
x->s.s_gfdef = make_vfun( x,f,argd, Cnil);
x->s.s_mflag = FALSE;
return(x);
}
object
@s]
****Change:(orig (132 132 a))
@s[ vs_reset;
return(x);
}
@s| vs_reset;
return(x);
}
@s]
****Change:(orig (146 146 a))
@s[siLcompiled_function_name()
{
check_arg(1);
@s|siLcompiled_function_name()
{
check_arg(1);
switch(type_of(vs_base[0])) {
case t_cfun:
case t_sfun:
case t_vfun:
case t_cclosure:
case t_gfun:
vs_base[0] = vs_base[0]->cf.cf_name;
break;
default:
FEerror("~S is not a compiled-function.", 1, vs_base[0]);
}}
@s]
****Change:(orig (148 155 d))
@s[ if (type_of(vs_base[0]) == t_cfun)
vs_base[0] = vs_base[0]->cf.cf_name;
else if (type_of(vs_base[0]) == t_cclosure)
vs_base[0] = vs_base[0]->cc.cc_name;
@s, FEerror("~S is not a compiled-function.", 1, vs_base[0]);
}
@s|
@s]
****Change:(orig (164 164 c))
@s[ fun->cc.cc_turbo = (object *)alloc_contblock(n*sizeof(object));
@s| fun->cc.cc_turbo = AR_ALLOC(alloc_contblock,n,object);
@s]
****Change:(orig (175 175 a))
@s[ turbo_closure(vs_base[0]);
}
@s| turbo_closure(vs_base[0]);
}
@s]
****Change:(orig (180 180 a))
@s[ make_si_function("TURBO-CLOSURE", siLturbo_closure);
@s| make_si_function("TURBO-CLOSURE", siLturbo_closure);
make_si_function("MFSFUN",siLmfsfun);
make_si_function("MFVFUN",siLmfvfun);
make_si_function("MF",siLmf);
make_si_function("MFVFUN-KEY",siLmfvfun_key);
make_si_function("MM",siLmm);
make_si_function("MC",siLmc);
@s]
****Change:(orig (181 181 a))
@s[}
@s|}
@s]
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.