summaryrefslogtreecommitdiffstats
path: root/generic/tclCompCmdsSZ.c
diff options
context:
space:
mode:
authormig <mig>2013-01-10 21:18:52 (GMT)
committermig <mig>2013-01-10 21:18:52 (GMT)
commite89dea9b9b819e7b5ddc8d171127b749e237af35 (patch)
treeba9d20a99fce98d2f9273df62edbb14bab9f55d8 /generic/tclCompCmdsSZ.c
parent41c09d7b4d37c2b2fc7cec61aaaa3ca59a56a7c5 (diff)
downloadtcl-e89dea9b9b819e7b5ddc8d171127b749e237af35.zip
tcl-e89dea9b9b819e7b5ddc8d171127b749e237af35.tar.gz
tcl-e89dea9b9b819e7b5ddc8d171127b749e237af35.tar.bz2
tailcall now running in a simpler model, with no eval-flags and no nre-stack rewriting; yieldto also requires one fewer bounce. Mostly from mig-nre-mods
Diffstat (limited to 'generic/tclCompCmdsSZ.c')
-rw-r--r--generic/tclCompCmdsSZ.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/generic/tclCompCmdsSZ.c b/generic/tclCompCmdsSZ.c
index 1d04d8b..6e31481 100644
--- a/generic/tclCompCmdsSZ.c
+++ b/generic/tclCompCmdsSZ.c
@@ -1953,11 +1953,13 @@ TclCompileTailcallCmd(
return TCL_ERROR;
}
+ /* make room for the nsObjPtr */
+ CompileWord(envPtr, tokenPtr, interp, 0);
for (i=1 ; i<parsePtr->numWords ; i++) {
tokenPtr = TokenAfter(tokenPtr);
CompileWord(envPtr, tokenPtr, interp, i);
}
- TclEmitInstInt1( INST_TAILCALL, parsePtr->numWords-1, envPtr);
+ TclEmitInstInt1( INST_TAILCALL, parsePtr->numWords, envPtr);
return TCL_OK;
}