Posted to tcl by miguel at Wed Jan 16 20:27:09 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,