Eliminate tmp.

This commit is contained in:
Brad Nelson
2021-01-04 23:48:23 -08:00
parent b2d1b5d418
commit 11409ce318
2 changed files with 8 additions and 8 deletions

View File

@ -82,8 +82,8 @@ static cell_t parse(cell_t sep, cell_t *ret) {
return len; return len;
} }
static cell_t *evaluate1(cell_t *sp, cell_t *call) { static cell_t *evaluate1(cell_t *sp) {
*call = 0; cell_t call = 0;
cell_t name; cell_t name;
cell_t len = parse(' ', &name); cell_t len = parse(' ', &name);
cell_t xt = find((const char *) name, len); 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 if (g_sys.state && !(((cell_t *) xt)[-1] & 1)) { // bit 0 of flags is immediate
*g_sys.heap++ = xt; *g_sys.heap++ = xt;
} else { } else {
*call = xt; call = xt;
} }
} else { } else {
cell_t n; cell_t n;
@ -110,9 +110,10 @@ static cell_t *evaluate1(cell_t *sp, cell_t *call) {
*++sp = name; *++sp = name;
*++sp = len; *++sp = len;
*++sp = -1; *++sp = -1;
*call = g_sys.notfound; call = g_sys.notfound;
} }
} }
*++sp = call;
return sp; return sp;
} }
@ -124,7 +125,6 @@ static void ueforth(int argc, char *argv[], void *heap,
register cell_t tos = 0, *ip, w; register cell_t tos = 0, *ip, w;
dcell_t d; dcell_t d;
udcell_t ud; udcell_t ud;
cell_t tmp;
#define X(name, op, code) create(name, sizeof(name) - 1, name[0] == ';', && op); #define X(name, op, code) create(name, sizeof(name) - 1, name[0] == ';', && op);
PLATFORM_OPCODE_LIST PLATFORM_OPCODE_LIST
OPCODE_LIST OPCODE_LIST

View File

@ -72,9 +72,9 @@ typedef uint64_t udcell_t;
X(":", OP_COLON, DUP; DUP; tos = parse(32, sp); \ X(":", OP_COLON, DUP; DUP; tos = parse(32, sp); \
create((const char *) *sp, tos, 0, && OP_DOCOL); \ create((const char *) *sp, tos, 0, && OP_DOCOL); \
g_sys.state = -1; --sp; DROP) \ g_sys.state = -1; --sp; DROP) \
X("EVALUATE1", OP_EVALUATE1, DUP; sp = evaluate1(sp, &tmp); \ X("EVALUATE1", OP_EVALUATE1, DUP; sp = evaluate1(sp); \
DROP; if (tmp) (w = tmp); \ w = *sp; --sp; DROP; \
if (tmp) goto **(void **) w) \ if (w) goto **(void **) w) \
X("EXIT", OP_EXIT, ip = (void *) *rp; --rp) \ X("EXIT", OP_EXIT, ip = (void *) *rp; --rp) \
X(";", OP_SEMICOLON, COMMA(g_sys.DOEXIT_XT); g_sys.state = 0) \ X(";", OP_SEMICOLON, COMMA(g_sys.DOEXIT_XT); g_sys.state = 0) \