summaryrefslogtreecommitdiffstats
path: root/generic/tclExecute.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2013-01-12 22:23:29 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2013-01-12 22:23:29 (GMT)
commit2eb2362fbf11bf4747a0e1b3e1d75d55c83ba1a9 (patch)
tree62ad7f6aef771789dcbd53f0de65dc646ca1586d /generic/tclExecute.c
parent9c8f288cd88461a952b3310b899cb40a1e81b194 (diff)
parent84b9c7728c8f168edce68d529ddac68a5056e766 (diff)
downloadtcl-2eb2362fbf11bf4747a0e1b3e1d75d55c83ba1a9.zip
tcl-2eb2362fbf11bf4747a0e1b3e1d75d55c83ba1a9.tar.gz
tcl-2eb2362fbf11bf4747a0e1b3e1d75d55c83ba1a9.tar.bz2
merge trunk
Remove various double-defined (both in public and private stub tables) functions from private stub table
Diffstat (limited to 'generic/tclExecute.c')
-rw-r--r--generic/tclExecute.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index 687ac09..4c20b25 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -1032,7 +1032,7 @@ GrowEvaluationStack(
if (move) {
moveWords = esPtr->tosPtr - MEMSTART(markerPtr) + 1;
}
- needed = growth + moveWords + WALLOCALIGN - 1;
+ needed = growth + moveWords + WALLOCALIGN;
/*
@@ -2342,7 +2342,6 @@ TEBCresume(
case INST_TAILCALL: {
Tcl_Obj *listPtr, *nsObjPtr;
- NRE_callback *tailcallPtr;
opnd = TclGetUInt1AtPtr(pc+1);
@@ -2376,18 +2375,12 @@ TEBCresume(
listPtr = Tcl_NewListObj(opnd, &OBJ_AT_DEPTH(opnd-1));
nsObjPtr = Tcl_NewStringObj(iPtr->varFramePtr->nsPtr->fullName, -1);
- Tcl_IncrRefCount(listPtr);
- Tcl_IncrRefCount(nsObjPtr);
- TclNRAddCallback(interp, TclNRTailcallEval, listPtr, nsObjPtr,
- NULL, NULL);
-
- /*
- * Unstitch ourselves and do a [return].
- */
+ TclListObjSetElement(interp, listPtr, 0, nsObjPtr);
+ if (iPtr->varFramePtr->tailcallPtr) {
+ Tcl_DecrRefCount(iPtr->varFramePtr->tailcallPtr);
+ }
+ iPtr->varFramePtr->tailcallPtr = listPtr;
- tailcallPtr = TOP_CB(interp);
- TOP_CB(interp) = tailcallPtr->nextPtr;
- iPtr->varFramePtr->tailcallPtr = tailcallPtr;
result = TCL_RETURN;
cleanup = opnd;
goto processExceptionReturn;
@@ -2922,8 +2915,9 @@ TEBCresume(
DECACHE_STACK_INFO();
pc += 6;
TEBC_YIELD();
+
TclNRAddCallback(interp, TclClearRootEnsemble, NULL,NULL,NULL,NULL);
- iPtr->evalFlags |= TCL_EVAL_REDIRECT;
+ TclSkipTailcall(interp);
return TclNREvalObjEx(interp, objPtr, TCL_EVAL_INVOKE, NULL, INT_MIN);
/*