--- gforth/prim 2001/02/24 13:44:39 1.74 +++ gforth/prim 2001/03/18 12:39:33 1.79 @@ -74,6 +74,10 @@ \ xt.* XT \ f83name.* F83Name * +\E stack data-stack sp Cell +\E stack fp-stack fp Float +\E stack return-stack rp Cell +\E \E get-current prefixes set-current \E \E s" Bool" single data-stack type-prefix f @@ -126,6 +130,7 @@ \ these m4 macros would collide with identifiers undefine(`index') undefine(`shift') +undefine(`symbols') noop ( -- ) gforth : @@ -139,6 +144,7 @@ execute ( xt -- ) core ""Perform the semantics represented by the execution token, @i{xt}."" ip=IP; IF_spTOS(spTOS = sp[0]); +SUPER_END; EXEC(xt); perform ( a_addr -- ) gforth @@ -146,6 +152,7 @@ perform ( a_addr -- ) gforth /* and pfe */ ip=IP; IF_spTOS(spTOS = sp[0]); +SUPER_END; EXEC(*(Xt *)a_addr); : @ execute ; @@ -1422,6 +1429,7 @@ cache."" FLUSH_ICACHE(c_addr,u); (bye) ( n -- ) gforth paren_bye +SUPER_END; return (Label *)n; (system) ( c_addr u -- wretval wior ) gforth peren_system @@ -2346,7 +2354,7 @@ while(a_addr != NULL) primtable ( -- wprimtable ) new ""wprimtable is a table containing the xts of the primitives indexed by sequence-number in prim (for use in prepare-peephole-table)."" -wprimtable = (Cell)primtable(symbols+DOESJUMP+1,MAX_SYMBOLS); +wprimtable = (Cell)primtable(symbols+DOESJUMP+1,MAX_SYMBOLS-DOESJUMP-1); prepare-peephole-table ( wprimtable -- wpeeptable ) new prepare_peephole_opt ""wpeeptable is a data structure used by @code{peephole-opt}; it is @@ -2360,3 +2368,14 @@ they cannot be combined, xt is 0."" xt = peephole_opt(xt1, xt2, wpeeptable); lit_plus = lit + + +call ( #a_callee -- R:a_retaddr ) +""Call callee (a variant of docol with inline argument)."" +a_retaddr = (Cell *)IP; +SET_IP((Xt *)a_callee); + +useraddr ( #u -- a_addr ) +a_addr = (Cell *)(up+u); + + +