--- gforth/engine/engine.c 2002/01/14 08:40:24 1.38 +++ gforth/engine/engine.c 2002/08/09 09:42:36 1.42 @@ -215,39 +215,39 @@ static int ufileattr[6]= { /* conversion on fetch */ -#define vm_Cell2f(x) ((Bool)(x)) -#define vm_Cell2c(x) ((Char)(x)) -#define vm_Cell2n(x) ((Cell)x) -#define vm_Cell2w(x) ((Cell)x) -#define vm_Cell2u(x) ((UCell)(x)) -#define vm_Cell2a_(x) ((Cell *)(x)) -#define vm_Cell2c_(x) ((Char *)(x)) -#define vm_Cell2f_(x) ((Float *)(x)) -#define vm_Cell2df_(x) ((DFloat *)(x)) -#define vm_Cell2sf_(x) ((SFloat *)(x)) -#define vm_Cell2xt(x) ((Xt)(x)) -#define vm_Cell2f83name(x) ((struct F83Name *)(x)) -#define vm_Cell2longname(x) ((struct Longname *)(x)) -#define vm_Float2r(x) (x) +#define vm_Cell2f(_cell,_x) ((_x)=(Bool)(_cell)) +#define vm_Cell2c(_cell,_x) ((_x)=(Char)(_cell)) +#define vm_Cell2n(_cell,_x) ((_x)=(Cell)(_cell)) +#define vm_Cell2w(_cell,_x) ((_x)=(Cell)(_cell)) +#define vm_Cell2u(_cell,_x) ((_x)=(UCell)(_cell)) +#define vm_Cell2a_(_cell,_x) ((_x)=(Cell *)(_cell)) +#define vm_Cell2c_(_cell,_x) ((_x)=(Char *)(_cell)) +#define vm_Cell2f_(_cell,_x) ((_x)=(Float *)(_cell)) +#define vm_Cell2df_(_cell,_x) ((_x)=(DFloat *)(_cell)) +#define vm_Cell2sf_(_cell,_x) ((_x)=(SFloat *)(_cell)) +#define vm_Cell2xt(_cell,_x) ((_x)=(Xt)(_cell)) +#define vm_Cell2f83name(_cell,_x) ((_x)=(struct F83Name *)(_cell)) +#define vm_Cell2longname(_cell,_x) ((_x)=(struct Longname *)(_cell)) +#define vm_Float2r(_float,_x) (_x=_float) /* conversion on store */ -#define vm_f2Cell(x) ((Cell)(x)) -#define vm_c2Cell(x) ((Cell)(x)) -#define vm_n2Cell(x) ((Cell)(x)) -#define vm_w2Cell(x) ((Cell)(x)) -#define vm_u2Cell(x) ((Cell)(x)) -#define vm_a_2Cell(x) ((Cell)(x)) -#define vm_c_2Cell(x) ((Cell)(x)) -#define vm_f_2Cell(x) ((Cell)(x)) -#define vm_df_2Cell(x) ((Cell)(x)) -#define vm_sf_2Cell(x) ((Cell)(x)) -#define vm_xt2Cell(x) ((Cell)(x)) -#define vm_f83name2Cell(x) ((Cell)(x)) -#define vm_longname2Cell(x) ((Cell)(x)) -#define vm_r2Float(x) (x) +#define vm_f2Cell(_x,_cell) ((_cell)=(Cell)(_x)) +#define vm_c2Cell(_x,_cell) ((_cell)=(Cell)(_x)) +#define vm_n2Cell(_x,_cell) ((_cell)=(Cell)(_x)) +#define vm_w2Cell(_x,_cell) ((_cell)=(Cell)(_x)) +#define vm_u2Cell(_x,_cell) ((_cell)=(Cell)(_x)) +#define vm_a_2Cell(_x,_cell) ((_cell)=(Cell)(_x)) +#define vm_c_2Cell(_x,_cell) ((_cell)=(Cell)(_x)) +#define vm_f_2Cell(_x,_cell) ((_cell)=(Cell)(_x)) +#define vm_df_2Cell(_x,_cell) ((_cell)=(Cell)(_x)) +#define vm_sf_2Cell(_x,_cell) ((_cell)=(Cell)(_x)) +#define vm_xt2Cell(_x,_cell) ((_cell)=(Cell)(_x)) +#define vm_f83name2Cell(_x,_cell) ((_cell)=(Cell)(_x)) +#define vm_longname2Cell(_x,_cell) ((_cell)=(Cell)(_x)) +#define vm_r2Float(_x,_float) (_float=_x) -#define vm_Cell2Cell(x) (x) +#define vm_Cell2Cell(_x,_y) (_y=_x) /* if machine.h has not defined explicit registers, define them as implicit */ #ifndef IPREG @@ -282,14 +282,6 @@ static int ufileattr[6]= { # define CPU_DEP1 0 #endif -/* declare and compute cfa for certain threading variants */ -/* warning: this is nonsyntactical; it will not work in place of a statement */ -#ifndef GETCFA -#define DOCFA -#else -#define DOCFA Xt cfa; GETCFA(cfa) -#endif - /* instructions containing these must be the last instruction of a super-instruction (e.g., branches, EXECUTE, and other instructions ending the basic block). Instructions containing SET_IP get this @@ -327,17 +319,14 @@ Cell *rp; #endif Xt *primtable(Label symbols[], Cell size) + /* used in primitive primtable for peephole optimization */ { -#ifdef DIRECT_THREADED - return symbols; -#else /* !defined(DIRECT_THREADED) */ Xt *xts = (Xt *)malloc(size*sizeof(Xt)); Cell i; for (i=0; i