diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2013-01-12 22:23:29 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2013-01-12 22:23:29 (GMT) |
commit | 2eb2362fbf11bf4747a0e1b3e1d75d55c83ba1a9 (patch) | |
tree | 62ad7f6aef771789dcbd53f0de65dc646ca1586d /generic/tclExecute.c | |
parent | 9c8f288cd88461a952b3310b899cb40a1e81b194 (diff) | |
parent | 84b9c7728c8f168edce68d529ddac68a5056e766 (diff) | |
download | tcl-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.c | 22 |
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); /* |