diff options
author | Miguel Sofer <miguel.sofer@gmail.com> | 2007-06-10 23:15:05 (GMT) |
---|---|---|
committer | Miguel Sofer <miguel.sofer@gmail.com> | 2007-06-10 23:15:05 (GMT) |
commit | 57ba79b9aa406ba55b5987ac6bf3556cce00d9df (patch) | |
tree | 9e526ad2806f8efeac869fbd387fcf300f74d7ea /generic/tclExecute.c | |
parent | 78cbf63f6981c799426895c68d288d6ab57f0d01 (diff) | |
download | tcl-57ba79b9aa406ba55b5987ac6bf3556cce00d9df.zip tcl-57ba79b9aa406ba55b5987ac6bf3556cce00d9df.tar.gz tcl-57ba79b9aa406ba55b5987ac6bf3556cce00d9df.tar.bz2 |
* generic/tclBasic.c: Further TEOvI split, creating a new
* generic/tclCompile.h: TclEvalObjvKnownCommand() function to
* generic/tclExecute.c: handle commands that are already known
and are not traced. INST_INVOKE now calls into this function
instead of inlining parts of TEOvI. Same perf, better isolation.
Diffstat (limited to 'generic/tclExecute.c')
-rw-r--r-- | generic/tclExecute.c | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c index ea416f9..12f85bc 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -12,7 +12,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.289 2007/06/10 20:39:40 hobbs Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.290 2007/06/10 23:15:06 msofer Exp $ */ #include "tclInt.h" @@ -1969,21 +1969,10 @@ TclExecuteByteCode( && (!checkInterp || (codePtr->compileEpoch == iPtr->compileEpoch))) { /* - * No traces, the interp is ok: avoid the call out to TEOVi + * No traces, the interp is ok: use the fast interface */ - cmdPtr->refCount++; - iPtr->cmdCount++; - iPtr->ensembleRewrite.sourceObjs = NULL; - result = (*cmdPtr->objProc)(cmdPtr->objClientData, interp, - objc, objv); - TclCleanupCommandMacro(cmdPtr); - if (Tcl_AsyncReady()) { - result = Tcl_AsyncInvoke(interp, result); - } - if (result == TCL_OK && TclLimitReady(iPtr->limit)) { - result = Tcl_LimitCheck(interp); - } + result = TclEvalObjvKnownCommand(interp, objc, objv, cmdPtr); } else { /* * If trace procedures will be called, we need a command |