summaryrefslogtreecommitdiffstats
path: root/generic/tclCmdIL.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclCmdIL.c')
-rw-r--r--generic/tclCmdIL.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c
index 19bc596..986bd1e 100644
--- a/generic/tclCmdIL.c
+++ b/generic/tclCmdIL.c
@@ -4029,6 +4029,10 @@ SequenceIdentifyArgument(
void *internalPtr;
if (allowedArgs & NumericArg) {
+ /* speed-up a bit (and avoid shimmer for compiled expressions) */
+ if (TclHasInternalRep(argPtr, &tclExprCodeType)) {
+ goto doExpr;
+ }
result = Tcl_GetNumberFromObj(NULL, argPtr, &internalPtr, keywordIndexPtr);
if (result == TCL_OK) {
*numValuePtr = argPtr;
@@ -4054,6 +4058,7 @@ SequenceIdentifyArgument(
if (!(allowedArgs & NumericArg)) {
return NoneArg;
}
+ doExpr:
/* Check for an index expression */
int keyword;
if (Tcl_ExprObj(interp, argPtr, &exprValueObj) != TCL_OK) {