Eliminate tmp.
This commit is contained in:
@ -82,8 +82,8 @@ static cell_t parse(cell_t sep, cell_t *ret) {
|
||||
return len;
|
||||
}
|
||||
|
||||
static cell_t *evaluate1(cell_t *sp, cell_t *call) {
|
||||
*call = 0;
|
||||
static cell_t *evaluate1(cell_t *sp) {
|
||||
cell_t call = 0;
|
||||
cell_t name;
|
||||
cell_t len = parse(' ', &name);
|
||||
cell_t xt = find((const char *) name, len);
|
||||
@ -91,7 +91,7 @@ static cell_t *evaluate1(cell_t *sp, cell_t *call) {
|
||||
if (g_sys.state && !(((cell_t *) xt)[-1] & 1)) { // bit 0 of flags is immediate
|
||||
*g_sys.heap++ = xt;
|
||||
} else {
|
||||
*call = xt;
|
||||
call = xt;
|
||||
}
|
||||
} else {
|
||||
cell_t n;
|
||||
@ -110,9 +110,10 @@ static cell_t *evaluate1(cell_t *sp, cell_t *call) {
|
||||
*++sp = name;
|
||||
*++sp = len;
|
||||
*++sp = -1;
|
||||
*call = g_sys.notfound;
|
||||
call = g_sys.notfound;
|
||||
}
|
||||
}
|
||||
*++sp = call;
|
||||
return sp;
|
||||
}
|
||||
|
||||
@ -124,7 +125,6 @@ static void ueforth(int argc, char *argv[], void *heap,
|
||||
register cell_t tos = 0, *ip, w;
|
||||
dcell_t d;
|
||||
udcell_t ud;
|
||||
cell_t tmp;
|
||||
#define X(name, op, code) create(name, sizeof(name) - 1, name[0] == ';', && op);
|
||||
PLATFORM_OPCODE_LIST
|
||||
OPCODE_LIST
|
||||
|
||||
@ -72,9 +72,9 @@ typedef uint64_t udcell_t;
|
||||
X(":", OP_COLON, DUP; DUP; tos = parse(32, sp); \
|
||||
create((const char *) *sp, tos, 0, && OP_DOCOL); \
|
||||
g_sys.state = -1; --sp; DROP) \
|
||||
X("EVALUATE1", OP_EVALUATE1, DUP; sp = evaluate1(sp, &tmp); \
|
||||
DROP; if (tmp) (w = tmp); \
|
||||
if (tmp) goto **(void **) w) \
|
||||
X("EVALUATE1", OP_EVALUATE1, DUP; sp = evaluate1(sp); \
|
||||
w = *sp; --sp; DROP; \
|
||||
if (w) goto **(void **) w) \
|
||||
X("EXIT", OP_EXIT, ip = (void *) *rp; --rp) \
|
||||
X(";", OP_SEMICOLON, COMMA(g_sys.DOEXIT_XT); g_sys.state = 0) \
|
||||
|
||||
|
||||
Reference in New Issue
Block a user