diff options
| author | dgp@users.sourceforge.net <dgp> | 2013-09-12 19:27:48 (GMT) |
|---|---|---|
| committer | dgp@users.sourceforge.net <dgp> | 2013-09-12 19:27:48 (GMT) |
| commit | 4dd096f9d27dd91b8ef69520deff00e78145dfbe (patch) | |
| tree | 9275724adb6c65841a633fe0288834d901007846 | |
| parent | 4c133e52d1dbe9d6939354fd1f3a083f4084d33c (diff) | |
| download | tcl-4dd096f9d27dd91b8ef69520deff00e78145dfbe.zip tcl-4dd096f9d27dd91b8ef69520deff00e78145dfbe.tar.gz tcl-4dd096f9d27dd91b8ef69520deff00e78145dfbe.tar.bz2 | |
Push fixup on the stack only when needed.
| -rw-r--r-- | generic/tclCompExpr.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/generic/tclCompExpr.c b/generic/tclCompExpr.c index 106855a..fce870b 100644 --- a/generic/tclCompExpr.c +++ b/generic/tclCompExpr.c @@ -2254,16 +2254,8 @@ CompileExprTree( if (nodePtr->mark == MARK_LEFT) { next = nodePtr->left; - switch (nodePtr->lexeme) { - case QUESTION: + if (nodePtr->lexeme == QUESTION) { convert = 1; - break; - case AND: - case OR: - newJump = TclStackAlloc(interp, sizeof(JumpList)); - newJump->next = jumpPtr; - jumpPtr = newJump; - break; } } else if (nodePtr->mark == MARK_RIGHT) { next = nodePtr->right; @@ -2314,10 +2306,12 @@ CompileExprTree( convert = 1; break; case AND: - TclEmitForwardJump(envPtr, TCL_FALSE_JUMP, &jumpPtr->jump); - break; case OR: - TclEmitForwardJump(envPtr, TCL_TRUE_JUMP, &jumpPtr->jump); + newJump = TclStackAlloc(interp, sizeof(JumpList)); + newJump->next = jumpPtr; + jumpPtr = newJump; + TclEmitForwardJump(envPtr, (nodePtr->lexeme == AND) + ? TCL_FALSE_JUMP : TCL_TRUE_JUMP, &jumpPtr->jump); break; } } else { |
