diff options
author | Miguel Sofer <miguel.sofer@gmail.com> | 2008-09-08 03:55:18 (GMT) |
---|---|---|
committer | Miguel Sofer <miguel.sofer@gmail.com> | 2008-09-08 03:55:18 (GMT) |
commit | 76a689aef30bb27f1e24881a16991f7209a15132 (patch) | |
tree | 222c16181da490ba17331ea29ec66977776aa0bd /generic/tclCompile.c | |
parent | e1aef1ce6c36b4692bf0e62e24bcb3fc7e466473 (diff) | |
download | tcl-76a689aef30bb27f1e24881a16991f7209a15132.zip tcl-76a689aef30bb27f1e24881a16991f7209a15132.tar.gz tcl-76a689aef30bb27f1e24881a16991f7209a15132.tar.bz2 |
* generic/tclCompile.c (TclCompileTokens):
* generic/tclExecute.c (CompileExprObj): fix a perf bug (found by
Alex Ferrieux) where some variables in the LVT where not being
accessed by index. Fix missing localCache management in compiled
expressions found while analyzing the bug.
Diffstat (limited to 'generic/tclCompile.c')
-rw-r--r-- | generic/tclCompile.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/generic/tclCompile.c b/generic/tclCompile.c index d79ba9d..a0ab92b 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCompile.c,v 1.155 2008/08/20 15:41:21 dkf Exp $ + * RCS: @(#) $Id: tclCompile.c,v 1.156 2008/09/08 03:55:18 msofer Exp $ */ #include "tclInt.h" @@ -1670,19 +1670,17 @@ TclCompileTokens( name = tokenPtr[1].start; nameBytes = tokenPtr[1].size; - localVarName = -1; - if (envPtr->procPtr != NULL) { - localVarName = 1; - for (i = 0, p = name; i < nameBytes; i++, p++) { - if ((*p == ':') && (i < nameBytes-1) && (*(p+1) == ':')) { - localVarName = -1; - break; - } else if ((*p == '(') - && (tokenPtr->numComponents == 1) - && (*(name + nameBytes - 1) == ')')) { - localVarName = 0; - break; - } + + localVarName = 1; + for (i = 0, p = name; i < nameBytes; i++, p++) { + if ((*p == ':') && (i < nameBytes-1) && (*(p+1) == ':')) { + localVarName = -1; + break; + } else if ((*p == '(') + && (tokenPtr->numComponents == 1) + && (*(name + nameBytes - 1) == ')')) { + localVarName = 0; + break; } } |