summaryrefslogtreecommitdiffstats
path: root/generic/tclCompCmds.c
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2013-06-05 12:34:21 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2013-06-05 12:34:21 (GMT)
commit64edc0ede7a6c7770bc5f152e97aa48674ed6682 (patch)
treecb173eed3ed04a6ce914da4353e78430cb13e9cd /generic/tclCompCmds.c
parent984c4923d6abb322e755dcde5b14bc19747eb8b8 (diff)
downloadtcl-64edc0ede7a6c7770bc5f152e97aa48674ed6682.zip
tcl-64edc0ede7a6c7770bc5f152e97aa48674ed6682.tar.gz
tcl-64edc0ede7a6c7770bc5f152e97aa48674ed6682.tar.bz2
More cleaning up; factor out optimizer to new file. Some weird problems still.
Diffstat (limited to 'generic/tclCompCmds.c')
-rw-r--r--generic/tclCompCmds.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c
index 365e647..8cb5fcd 100644
--- a/generic/tclCompCmds.c
+++ b/generic/tclCompCmds.c
@@ -499,6 +499,13 @@ TclCompileBreakCmd(
TclCleanupStackForBreakContinue(envPtr, auxPtr);
TclAddLoopBreakFixup(envPtr, auxPtr);
+
+ /*
+ * Instructions that raise exceptions don't really have to follow the
+ * usual stack management rules, but the cleanup code does.
+ */
+
+ TclAdjustStackDepth(1, envPtr);
} else {
/*
* Emit a real break.
@@ -510,12 +517,6 @@ TclCompileBreakCmd(
TclEmitInt4(0, envPtr);
}
- /*
- * Instructions that raise exceptions don't really have to follow the
- * usual stack management rules, but the cleanup code does.
- */
-
- TclAdjustStackDepth(1, envPtr);
return TCL_OK;
}
@@ -833,6 +834,13 @@ TclCompileContinueCmd(
TclCleanupStackForBreakContinue(envPtr, auxPtr);
TclAddLoopContinueFixup(envPtr, auxPtr);
+
+ /*
+ * Instructions that raise exceptions don't really have to follow the
+ * usual stack management rules, but the cleanup code does.
+ */
+
+ TclAdjustStackDepth(1, envPtr);
} else {
/*
* Emit a real continue.
@@ -844,12 +852,6 @@ TclCompileContinueCmd(
TclEmitInt4(0, envPtr);
}
- /*
- * Instructions that raise exceptions don't really have to follow the
- * usual stack management rules, but the cleanup code does.
- */
-
- TclAdjustStackDepth(1, envPtr);
return TCL_OK;
}
@@ -2121,10 +2123,10 @@ TclCompileDictWithCmd(
TclEmitInstInt4( INST_BEGIN_CATCH4, range, envPtr);
ExceptionRangeStarts(envPtr, range);
- envPtr->currStackDepth++;
+ //envPtr->currStackDepth++;
SetLineInformation(parsePtr->numWords-1);
CompileBody(envPtr, tokenPtr, interp);
- envPtr->currStackDepth = savedStackDepth;
+ //envPtr->currStackDepth = savedStackDepth;
ExceptionRangeEnds(envPtr, range);
/*