diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2009-07-15 13:17:17 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2009-07-15 13:17:17 (GMT) |
commit | b5f035d9c80dbec4986ba4e7e2ba4a1881d90d38 (patch) | |
tree | 30dfc00e40cfadd30723fb7fcb13abc429ddb8b1 /ChangeLog | |
parent | 0a901b4dd0d5f48c4258a435a7015b391a292f65 (diff) | |
download | tcl-b5f035d9c80dbec4986ba4e7e2ba4a1881d90d38.zip tcl-b5f035d9c80dbec4986ba4e7e2ba4a1881d90d38.tar.gz tcl-b5f035d9c80dbec4986ba4e7e2ba4a1881d90d38.tar.bz2 |
Added code to save space in namespaces. Currently #ifdef'ed out for compat.
Also added code from itcl-ng for better separation of concerns.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 88 |
1 files changed, 49 insertions, 39 deletions
@@ -1,58 +1,68 @@ +2009-07-15 Donal K. Fellows <dkf@users.sf.net> + + * generic/tclInt.h (Namespace): Added machinery to allow + * generic/tclNamesp.c (many functions): reduction of memory used + * generic/tclResolve.c (BumpCmdRefEpochs): by namespaces. Currently + #ifdef'ed out because of compatibility concerns. + + * generic/tclInt.decls: Added four functions for better integration + with itcl-ng. + 2009-07-14 Kevin B. Kenny <kennykb@acm.org> * generic/tclInt.h (TclNRSwitchObjCmd): * generic/tclBasic.c (builtInCmds): * generic/tclCmdMZ.c (Tcl_SwitchObjCmd): * tests/switch.test (switch-15.1): - Make non-bytecoded [switch] command aware of NRE. [Bug 2821401] + [Bug 2821401]: Make non-bytecoded [switch] command aware of NRE. 2009-07-13 Andreas Kupries <andreask@activestate.com> - * generic/tclCompile.c (TclInitCompileEnv, EnterCmdWordIndex, - TclCleanupByteCode, TclCompileScript): + * generic/tclCompile.c (TclInitCompileEnv, EnterCmdWordIndex) + (TclCleanupByteCode, TclCompileScript): * generic/tclExecute.c (TclCompileObj, TclExecuteByteCode): * tclCompile.h (ExtCmdLoc): * tclInt.h (ExtIndex, CFWordBC, CmdFrame): - * tclBasic.c (DeleteInterpProc, TclArgumentBCEnter, - TclArgumentBCRelease, TclArgumentGet, SAVE_CONTEXT, - RESTORE_CONTEXT, NRCoroutineExitCallback, TclNRCoroutineObjCmd): + * tclBasic.c (DeleteInterpProc, TclArgumentBCEnter) + (TclArgumentBCRelease, TclArgumentGet, SAVE_CONTEXT) + (RESTORE_CONTEXT, NRCoroutineExitCallback, TclNRCoroutineObjCmd): * generic/tclCmdAH.c (TclNRForObjCmd, TclNRForIterCallback, - ForNextCallback): + (ForNextCallback): * generic/tclCmdMZ.c (TclNRWhileObjCmd): Extended the bytecode compiler initialization to recognize the - compilation of whole files (NRE enabled 'source' command) and - switch to the counting of absolute lines in that case. - - Further extended the bytecode compiler to track the start line in - the generated information, and modified the bytecode execution to - recompile an object if the location as per the calling context - doesn't match the location saved in the bytecode. This part could - be optimized more by using more memory to keep all possibilities - which occur around, or by just adjusting the location information - instead of a total recompile. - - Reworked the handling of literal command arguments in bytecode to - be saved (compiler) and used (execution) per command (See the - TCL_INVOKE_STK* instructions), and not per the whole bytecode. - This, and the previous change remove the problems with location - data caused by literal sharing (across whole files, but also proc - bodies). Simplified the associated datastructures (ExtIndex is - gone, as is the function EnterCmdWordIndex). - - The last change causes the hashtable 'lineLABCPtr' to be state - which has to be kept per coroutine, like the CmdFrame stack. - Reworked the coroutine support code to create, delete and switch - the information as needed. Further reworked the tailcall command - as well, it has to pop its own arguments when run in a bytecode - context to keep a proper stack in 'lineLABCPtr'. - - Fixed the mishandling of line information in the NRE-enabled 'for' - and 'while' commands introduced when both were made to share their - iteration callbacks without taking into account that the loop body - is found in different words of the command. Introduced a separate - data structure to hold all the callback information, as we went - over the limit of 4 direct client-data values for NRE callbacks. + compilation of whole files (NRE enabled 'source' command) and switch + to the counting of absolute lines in that case. + + Further extended the bytecode compiler to track the start line in the + generated information, and modified the bytecode execution to + recompile an object if the location as per the calling context doesn't + match the location saved in the bytecode. This part could be optimized + more by using more memory to keep all possibilities which occur + around, or by just adjusting the location information instead of a + total recompile. + + Reworked the handling of literal command arguments in bytecode to be + saved (compiler) and used (execution) per command (See the + TCL_INVOKE_STK* instructions), and not per the whole bytecode. This, + and the previous change remove the problems with location data caused + by literal sharing (across whole files, but also proc bodies). + Simplified the associated datastructures (ExtIndex is gone, as is the + function EnterCmdWordIndex). + + The last change causes the hashtable 'lineLABCPtr' to be state which + has to be kept per coroutine, like the CmdFrame stack. Reworked the + coroutine support code to create, delete and switch the information as + needed. Further reworked the tailcall command as well, it has to pop + its own arguments when run in a bytecode context to keep a proper + stack in 'lineLABCPtr'. + + Fixed the mishandling of line information in the NRE-enabled 'for' and + 'while' commands introduced when both were made to share their + iteration callbacks without taking into account that the loop body is + found in different words of the command. Introduced a separate data + structure to hold all the callback information, as we went over the + limit of 4 direct client-data values for NRE callbacks. The above fixes [Bug 1605269]. |