Eliminate tmp.
This commit is contained in:
@ -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
|
||||||
|
|||||||
@ -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) \
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user