version 1.87, 2001/12/25 16:55:10
|
version 1.90, 2002/01/05 22:58:59
|
Line 2396 xt = peephole_opt(xt1, xt2, wpeeptable);
|
Line 2396 xt = peephole_opt(xt1, xt2, wpeeptable);
|
|
|
call ( #a_callee -- R:a_retaddr ) new |
call ( #a_callee -- R:a_retaddr ) new |
""Call callee (a variant of docol with inline argument)."" |
""Call callee (a variant of docol with inline argument)."" |
|
#ifdef DEBUG |
|
{ |
|
CFA_TO_NAME((((Cell *)a_callee)-2)); |
|
fprintf(stderr,"%08lx: call %08lx %.*s\n",(Cell)ip,(Cell)a_callee, |
|
len,name); |
|
} |
|
#endif |
a_retaddr = (Cell *)IP; |
a_retaddr = (Cell *)IP; |
SET_IP((Xt *)a_callee); |
SET_IP((Xt *)a_callee); |
|
|
Line 2405 a_addr = (Cell *)(up+u);
|
Line 2412 a_addr = (Cell *)(up+u);
|
compile-prim ( xt1 -- xt2 ) new compile_prim |
compile-prim ( xt1 -- xt2 ) new compile_prim |
xt2 = (Xt)compile_prim((Label)xt1); |
xt2 = (Xt)compile_prim((Label)xt1); |
|
|
|
lit@ ( #a_addr -- w ) new lit_fetch |
|
w = *a_addr; |
|
|
|
lit-perform ( #a_addr -- ) new lit_perform |
|
ip=IP; |
|
SUPER_END; |
|
EXEC(*(Xt *)a_addr); |
|
|
|
lit+ ( #n1 n2 -- n3 ) new lit_plus |
|
n3 = n1 + n2; |
|
|
|
does-exec ( #a_cfa -- R:nest a_pfa ) new does_exec |
|
a_pfa = PFA(a_cfa); |
|
nest = (Cell)ip; |
|
IF_spTOS(spTOS = sp[0]); |
|
#ifdef DEBUG |
|
{ |
|
CFA_TO_NAME(a_cfa); |
|
fprintf(stderr,"%08lx: does %08lx %.*s\n", |
|
(Cell)ip,(Cell)a_cfa,len,name); |
|
} |
|
#endif |
|
SET_IP(DOES_CODE1(a_cfa)); |
|
|
include(peeprules.vmg) |
include(peeprules.vmg) |
|
|
\+ |
\+ |