diff options
author | Miguel Sofer <miguel.sofer@gmail.com> | 2009-12-11 05:38:11 (GMT) |
---|---|---|
committer | Miguel Sofer <miguel.sofer@gmail.com> | 2009-12-11 05:38:11 (GMT) |
commit | 61ace5272a2905633f2c69fc76b503e6739e6ad2 (patch) | |
tree | 69e7124f7841fc0472a7920ed6d9f3db250e1f6d | |
parent | 7e4c6f37909b4679e7ca70148d619d8059650581 (diff) | |
download | tcl-61ace5272a2905633f2c69fc76b503e6739e6ad2.zip tcl-61ace5272a2905633f2c69fc76b503e6739e6ad2.tar.gz tcl-61ace5272a2905633f2c69fc76b503e6739e6ad2.tar.bz2 |
code comments
-rw-r--r-- | generic/tclExecute.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c index c88aa73..a7952d9 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclExecute.c,v 1.464 2009/12/11 05:33:00 msofer Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.465 2009/12/11 05:38:11 msofer Exp $ */ #include "tclInt.h" @@ -1962,16 +1962,6 @@ TclExecuteByteCode( char cmdNameBuf[21]; #endif - /* - * The execution uses a unified stack: first a BottomData, immediately - * above it a CmdFrame, then the catch stack, then the execution stack. - * - * Make sure the catch stack is large enough to hold the maximum number of - * catch commands that could ever be executing at the same time (this will - * be no more than the exception range array's depth). Make sure the - * execution stack is large enough to execute this ByteCode. - */ - if (!codePtr) { CoroutineData *corPtr; @@ -2002,6 +1992,16 @@ TclExecuteByteCode( goto returnToCaller; } + /* + * The execution uses a unified stack: first a BottomData, immediately + * above it a CmdFrame, then the catch stack, then the execution stack. + * + * Make sure the catch stack is large enough to hold the maximum number of + * catch commands that could ever be executing at the same time (this will + * be no more than the exception range array's depth). Make sure the + * execution stack is large enough to execute this ByteCode. + */ + nonRecursiveCallStart: codePtr->refCount++; BP = (BottomData *) GrowEvaluationStack(iPtr->execEnvPtr, @@ -2021,7 +2021,8 @@ TclExecuteByteCode( tosPtr = initTosPtr; /* - * TIP #280: Initialize the frame. Do not push it yet. + * TIP #280: Initialize the frame. Do not push it yet: it will be pushed + * every time that we call out from this BP, popped when we return to it. */ bcFramePtr->type = ((codePtr->flags & TCL_BYTECODE_PRECOMPILED) |