diff options
author | Miguel Sofer <miguel.sofer@gmail.com> | 2010-08-30 14:02:09 (GMT) |
---|---|---|
committer | Miguel Sofer <miguel.sofer@gmail.com> | 2010-08-30 14:02:09 (GMT) |
commit | 2af0652a1208ff8714ab22a714c0b7e78eb15569 (patch) | |
tree | 5b8a101944274a127a5d4ca47620a73473d4569b /generic/tclInt.h | |
parent | 032b83a9791f959f924d7b63e708c3bd5d3a626b (diff) | |
download | tcl-2af0652a1208ff8714ab22a714c0b7e78eb15569.zip tcl-2af0652a1208ff8714ab22a714c0b7e78eb15569.tar.gz tcl-2af0652a1208ff8714ab22a714c0b7e78eb15569.tar.bz2 |
* generic/tclBasic.c: New implementation for [tailcall]:
* generic/tclCmdAH.c: it now schedules the command and returns
* generic/tclCmdMZ.c: TCL_RETURN. This fixes all issues with
* generic/tclExecute.c: [catch] and [try] - [Bug 3046594],
* generic/tclInt.h: [Bug 3047235] and [Bug 3048771]. Thanks
* generic/tclNamesp.c: dgp for exploring the dark corners.
* tests/tailcall.test: More thorough testing is required.
Diffstat (limited to 'generic/tclInt.h')
-rw-r--r-- | generic/tclInt.h | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/generic/tclInt.h b/generic/tclInt.h index 881dec4..1fb8869 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.481 2010/08/18 22:33:27 msofer Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.482 2010/08/30 14:02:10 msofer Exp $ */ #ifndef _TCLINT @@ -1152,10 +1152,8 @@ typedef struct CallFrame { * meaning of the value is, which we do not * specify. */ LocalCache *localCachePtr; - struct TEOV_callback *wherePtr; - /* The top of the callback stack when this - * frame was pushed; used to find the spot - * where to tailcall to. */ + struct TEOV_callback *tailcallPtr; + /* NULL if no tailcall is scheduled */ } CallFrame; #define FRAME_IS_PROC 0x1 @@ -1168,8 +1166,6 @@ typedef struct CallFrame { * field contains an Object reference that has * been confirmed to refer to a class. Part of * TIP#257. */ -#define FRAME_TAILCALLING 0x10 /* Flag is set while the CallFrame is winding - * down to process a tailcall */ /* * TIP #280 @@ -2758,10 +2754,8 @@ MODULE_SCOPE Tcl_ObjCmdProc TclNRYieldObjCmd; MODULE_SCOPE Tcl_ObjCmdProc TclNRYieldmObjCmd; MODULE_SCOPE Tcl_ObjCmdProc TclNRYieldToObjCmd; -MODULE_SCOPE void TclRemoveTailcall(Tcl_Interp *interp); - -MODULE_SCOPE Tcl_NRPostProc TclNRBlockTailcall; - +MODULE_SCOPE void TclSpliceTailcall(Tcl_Interp *interp, + struct TEOV_callback *tailcallPtr); /* * This structure holds the data for the various iteration callbacks used to |