Posted to tcl by miguel at Wed Jan 16 20:28:48 GMT 2008view raw
- Index: generic/tclCompExpr.c
- ===================================================================
- RCS file: /cvsroot/tcl/tcl/generic/tclCompExpr.c,v
- retrieving revision 1.92
- diff -u -r1.92 tclCompExpr.c
- --- generic/tclCompExpr.c 16 Jan 2008 19:44:13 -0000 1.92
- +++ generic/tclCompExpr.c 16 Jan 2008 20:25:39 -0000
- @@ -2000,7 +2000,8 @@
- Tcl_Interp *interp, /* Used for error reporting. */
- const char *script, /* The source script to compile. */
- int numBytes, /* Number of bytes in script. */
- - CompileEnv *envPtr) /* Holds resulting instructions. */
- + CompileEnv *envPtr, /* Holds resulting instructions. */
- + int optimize) /* 0 for one-off expressions */
- {
- OpNode *opTree = NULL; /* Will point to the tree of operators */
- Tcl_Obj *litList = Tcl_NewObj(); /* List to hold the literals */
- @@ -2026,7 +2027,7 @@
- TclListObjGetElements(NULL, litList, &objc, (Tcl_Obj ***)&litObjv);
- TclListObjGetElements(NULL, funcList, &objc, &funcObjv);
- CompileExprTree(interp, opTree, 0, &litObjv, funcObjv,
- - parsePtr->tokenPtr, envPtr, 1 /* optimize */);
- + parsePtr->tokenPtr, envPtr, optimize);
- } else {
- TclCompileSyntaxError(interp, envPtr);
- }
- Index: generic/tclCompile.c
- ===================================================================
- RCS file: /cvsroot/tcl/tcl/generic/tclCompile.c,v
- retrieving revision 1.144
- diff -u -r1.144 tclCompile.c
- --- generic/tclCompile.c 13 Dec 2007 15:23:15 -0000 1.144
- +++ generic/tclCompile.c 16 Jan 2008 20:25:43 -0000
- @@ -1823,7 +1823,7 @@
- */
- if ((numWords == 1) && (tokenPtr->type == TCL_TOKEN_SIMPLE_WORD)) {
- - TclCompileExpr(interp, tokenPtr[1].start, tokenPtr[1].size, envPtr);
- + TclCompileExpr(interp, tokenPtr[1].start, tokenPtr[1].size, envPtr, 1);
- return;
- }
- Index: generic/tclCompile.h
- ===================================================================
- RCS file: /cvsroot/tcl/tcl/generic/tclCompile.h,v
- retrieving revision 1.87
- diff -u -r1.87 tclCompile.h
- --- generic/tclCompile.h 15 Jan 2008 11:59:28 -0000 1.87
- +++ generic/tclCompile.h 16 Jan 2008 20:25:43 -0000
- @@ -858,7 +858,7 @@
- Tcl_Token *tokenPtr, int count,
- CompileEnv *envPtr);
- MODULE_SCOPE void TclCompileExpr(Tcl_Interp *interp, CONST char *script,
- - int numBytes, CompileEnv *envPtr);
- + int numBytes, CompileEnv *envPtr, int optimize);
- MODULE_SCOPE void TclCompileExprWords(Tcl_Interp *interp,
- Tcl_Token *tokenPtr, int numWords,
- CompileEnv *envPtr);
- Index: generic/tclExecute.c
- ===================================================================
- RCS file: /cvsroot/tcl/tcl/generic/tclExecute.c,v
- retrieving revision 1.359
- diff -u -r1.359 tclExecute.c
- --- generic/tclExecute.c 16 Jan 2008 19:44:13 -0000 1.359
- +++ generic/tclExecute.c 16 Jan 2008 20:25:48 -0000
- @@ -1228,14 +1228,7 @@
- const char *string = TclGetStringFromObj(objPtr, &length);
- TclInitCompileEnv(interp, &compEnv, string, length, NULL, 0);
- -
- - /*
- - * TODO: Consider creating and calling an alternative routine
- - * that will compile bytecode for one-off expressions like this
- - * one with optimize==0, for improved efficiency.
- - */
- -
- - TclCompileExpr(interp, string, length, &compEnv);
- + TclCompileExpr(interp, string, length, &compEnv, 0);
- /*
- * Successful compilation. If the expression yielded no instructions,