From 98a547008a125b264c6d68ba2309b0ee8597b91c Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Fri, 11 Nov 1994 18:57:09 +0000 Subject: [PATCH] One more step towards PERFORMs. --- execute.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/execute.c b/execute.c index cdd7a62..0afb607 100644 --- a/execute.c +++ b/execute.c @@ -553,25 +553,32 @@ static value cupl_eval(node *tree) (void) printf("statement %2d: %x (%-10s of %9x, %9x)\n", pc->number, pc, tokdump(pc->type), pc->car, pc->cdr); - next = pc->cdr; - if (setjmp(nextbuf) == 0) - (void) cupl_eval(pc->car); + switch (pc->car->type) + { + case BLOCK: + next = pc->endnode->cdr; + break; + + case OG: + /* FIXME: GOTO END ignores labels */ + case END: + next = NULLNODE; + break; + + default: + next = pc->cdr; + if (setjmp(nextbuf) == 0) + (void) cupl_eval(pc->car); + break; + } } result.rank = FAIL; return(result); - case BLOCK: - next = pc->endnode->cdr; - longjmp(nextbuf, 1); - case GO: next = tree->car; longjmp(nextbuf, 1); - - case OG: - case END: - longjmp(jmpperf, 1); - + case IF: leftside = EVAL_WRAP(cupl_eval(tree->car)); if (leftside.rank) -- 2.43.0