summaryrefslogtreecommitdiffstats
path: root/generic/tclCompile.h
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2013-06-05 07:19:02 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2013-06-05 07:19:02 (GMT)
commite2aebdd0bfef45036c0e1242c55efd86773ecca4 (patch)
tree9fd8c663b8cbd76efefec52f9614115721d587b0 /generic/tclCompile.h
parent63a81f0f749c1cc9965874146ba78f865ad5393a (diff)
downloadtcl-e2aebdd0bfef45036c0e1242c55efd86773ecca4.zip
tcl-e2aebdd0bfef45036c0e1242c55efd86773ecca4.tar.gz
tcl-e2aebdd0bfef45036c0e1242c55efd86773ecca4.tar.bz2
Stack cleanup works now even in the most evil expansion cases.
Diffstat (limited to 'generic/tclCompile.h')
-rw-r--r--generic/tclCompile.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/generic/tclCompile.h b/generic/tclCompile.h
index 75de025..15b5477 100644
--- a/generic/tclCompile.h
+++ b/generic/tclCompile.h
@@ -120,6 +120,11 @@ typedef struct ExceptionAux {
* we can't currently discard them except by
* doing INST_INVOKE_EXPANDED; this is a known
* problem. */
+ int expandTargetDepth; /* The stack depth expected at the outermost
+ * expansion within the loop. Not meaningful
+ * if there have are no open expansions
+ * between the looping level and the point of
+ * jump issue. */
int numBreakTargets; /* The number of [break]s that want to be
* targeted to the place where this loop
* exception will be bound to. */
@@ -987,6 +992,8 @@ MODULE_SCOPE ByteCode * TclCompileObj(Tcl_Interp *interp, Tcl_Obj *objPtr,
*/
MODULE_SCOPE void TclCleanupByteCode(ByteCode *codePtr);
+MODULE_SCOPE void TclCleanupStackForBreakContinue(CompileEnv *envPtr,
+ ExceptionAux *auxPtr);
MODULE_SCOPE void TclCompileCmdWord(Tcl_Interp *interp,
Tcl_Token *tokenPtr, int count,
CompileEnv *envPtr);