summaryrefslogtreecommitdiffstats
path: root/generic/tclExecute.c
Commit message (Collapse)AuthorAgeFilesLines
* * generic/tclExecute.c (TclExecuteByteCode): Add peephole optimizationdkf2010-04-301-1/+26
| | | | | of the fact that INST_DICT_FIRST and INST_DICT_NEXT always have a conditional jump afterwards.
* Remove unused @MAN2TCLFLAGS@nijtmans2010-04-281-2/+2
| | | | | | | | | | | Move <limits.h> include from tclInt.h to tclWinPort.h, and eliminate unneeded <stdlib.h>, <stdio.h> and <string.h>, which are already in tclInt.h Move "tclInt.h" from regcustom.h up to regex.h. tclAlloc.c: Unneeded <stdio.h> include tclExecute.c: Fix gcc warning: comparison between signed and unsigned
* * generic/tclInt.h (TclIsVarDirectUnsettable): Corrected flags so thatdkf2010-04-281-1908/+1929
| | | | | | | | | | | | | deletion of traces is not optimized out... * generic/tclExecute.c (ExecuteExtendedBinaryMathOp) (TclCompareTwoNumbers,ExecuteExtendedUnaryMathOp,TclExecuteByteCode): [Patch 2981677]: Move the less common arithmetic operations (i.e., exponentiation and operations on non-longs) out of TEBC for a big drop in the overall size of the stack frame for most code. Net effect on speed is minimal (slightly faster overall in tclbench). Also extended the number of places where TRESULT handling is replaced with a jump to dedicated code.
* Code reordering to slightly shorten generated object code.dkf2010-04-271-330/+239
|
* If tclInt.h or tclPort.h is alreadynijtmans2010-04-271-3/+1
| | | | | | | included, don't include <limits.h> again. Follow-up to [Bug 2991415]: tclport.h #included before limits.h See comments in [Bug 2991415]
* * generic/tclBasic.test: modify api of TclSpliceTailcall()Miguel Sofer2010-04-241-2/+2
| | | | | | * generic/tclExecute.c: to fix yieldTo, which had not survived * generic/tclInt.h: the latest mods to tailcall. Thanks kbk for detecting the problem.
* * generic/tclExecute.c (TclExecuteByteCode): Improve commenting anddkf2010-04-191-170/+180
| | | | reduce indentation for the Invocation Block.
* [Bug 2976508] tcl HEAD fails on HP-UXnijtmans2010-03-261-2/+3
|
* Reduce ifdef-fery and size of activation record. More variables shared acrossdkf2010-02-241-603/+449
| | | | instructions than before.
* Convert literal tabs in strings into \t sequences.dkf2010-02-221-59/+59
|
* Unbreak the builddkf2010-01-311-31/+35
|
* Make the [unset] command be bytecode compiled.dkf2010-01-301-340/+480
|
* Improve error code generation from some of the tailcall-related bits of TEBC.dkf2010-01-221-29/+32
|
* * generic/tclCompile.h: NRE-enable direct eval on BC spoilageMiguel Sofer2010-01-211-24/+22
| | | | | * generic/tclExecute.c: [Bug 2910748] * tests/nre.test:
* * generic/tclBasic.c: Release TclPopCallFrame() from itsMiguel Sofer2009-12-131-5/+4
| | | | | * generic/tclExecute.c: tailcall-management duties * generic/tclNamesp.c:
* * generic/tclBasic.c: Moving TclBCArgumentRelease callMiguel Sofer2009-12-131-1/+4
| | | | | * generic/tclExecute.c: from TclNRTailcallObjCmd to TEBC, so that the pairing of the Enter and Release calls is clearer.
* code commentsMiguel Sofer2009-12-111-20/+14
|
* code commentsMiguel Sofer2009-12-111-12/+13
|
* code commentsMiguel Sofer2009-12-111-13/+15
|
* simplify the coroutine BP-chain monkey-patching; tclBasic does not need toMiguel Sofer2009-12-111-29/+14
| | | | know about bottomPtr, tebc does not need to behave differently on exit for coros
* * generic/tclBasic.c: Full nre-enabling of coroutinesMiguel Sofer2009-12-101-5/+5
| | | | * generic/tclExecute.c: [Bug 2806407]
* * generic/tclExecute.c: fix panic in http11.test caused by buggyMiguel Sofer2009-12-101-2/+2
| | | | earlier commits in coroutine management.
* * generic/tclBasic.c: Reducing the # of moving parts forMiguel Sofer2009-12-101-1/+2
| | | | | * generic/tclExecute.c: coroutines by delegating more to tebc; eliminate the special coroutine CallFrame.
* * generic/tclBasic.c: Reducing the # of moving parts forMiguel Sofer2009-12-101-8/+10
| | | | * generic/tclExecute.c: coroutines
* * generic/tclBasic.c: Insure correct lifetime of varFrame'sMiguel Sofer2009-12-091-12/+15
| | | | | | (objc,objv)for coroutines. * generic/tclExecute.c: Code regrouping
* * generic/tclExecute.c (TclStackFree): Improved panic msgMiguel Sofer2009-12-091-2/+3
|
* baby steps towards nre-enabling coroutine first runMiguel Sofer2009-12-081-4/+14
|
* * generic/tclBasic.c: Partial nre-enabling of coroutines.Miguel Sofer2009-12-081-27/+46
| | | | | | * generic/tclExecute.c: The initial call still requires its * generic/tclInt.h: own instance of tebc, but on resume coros can execute in the caller's tebc.
* * generic/tclExecute.c (TEBC): silence warning about pcAdjustmentMiguel Sofer2009-12-081-1/+3
|
* Reduce size of TEBC activation record a bit.dkf2009-12-081-366/+389
|
* * generic/tclExecute.c (TEBC): Grouping "slow" variables intoMiguel Sofer2009-12-081-319/+327
| | | | | structs, to reduce register pressure and help the compiler with variable allocation.
* * generic/tclExecute.c: Start cleaning the TEBC stablesMiguel Sofer2009-12-081-217/+160
| | | | * generic/tclInt.h:
* factoring TclSpliceTailcall out of TclPopStackFrameMiguel Sofer2009-12-061-1/+2
|
* * generic/tclBasic.c: Small changes for clarity in tailcallMiguel Sofer2009-12-061-7/+10
| | | | * generic/tclExecute.c: and coroutine code.
* Eliminate various gcc warnings (in -Wextra mode)nijtmans2009-11-181-10/+10
|
* * generic/tclDictObj.c: Updated freeIntRepProc routines sodgp2009-09-301-3/+2
| | | | | | | | | | | | | | | * generic/tclExecute.c: that they set the typePtr field to * generic/tclIO.c: NULL so that the Tcl_Obj is not left * generic/tclIndexObj.c: in an inconsistent state. * generic/tclInt.h: [Bug 2857044] * generic/tclListObj.c: * generic/tclNamesp.c: * generic/tclOOCall.c: * generic/tclObj.c: * generic/tclPathObj.c: * generic/tclProc.c: * generic/tclRegexp.c: * generic/tclStringObj.c:
* * generic/tclExecute.c: fix potential uninitialized variable use anddas2009-09-071-2/+4
| | | | | | | | | | | | * generic/tclFCmd.c: null dereference flagged by clang static * generic/tclProc.c: analyzer. * generic/tclTimer.c: * generic/tclUtf.c: * generic/tclExecute.c: silence false positives from clang static * generic/tclIO.c: analyzer about potential null dereference. * generic/tclScan.c: * generic/tclCompExpr.c:
* * generic/tclCompCmds.c (TclCompileSubstCmd): Added a bytecodedgp2009-09-041-1/+20
| | | | | | | | | | | | | * generic/tclBasic.c: compiler routine for the [subst] command. * generic/tclCmdMZ.c: This is a partial solution to the need to * generic/tclCompile.c: NR-enable [subst] since bytecode execution is * generic/tclCompile.h: already NR-enabled. [Bug 2314561] Two new * generic/tclExecute.c: bytecode instructions, INST_NOP and * generic/tclInt.h: INST_RETURN_CODE_BRANCH were added to support * generic/tclParse.c: the new routine. INST_RETURN_CODE_BRANCH is * tests/basic.test: likely to be useful in any future effort to * tests/info.test: add a bytecode compiler routine for [try]. * tests/parse.test:
* TIP #353 IMPLEMENTATIONdgp2009-08-121-57/+125
| | | | | | | | | | | | | | * doc/NRE.3: New public routine Tcl_NRExprObj() permits * generic/tcl.decls: extension commands to evaluate Tcl expressions * generic/tclBasic.c: in NR-enabled command procedures. * generic/tclCmdAH.c: * generic/tclExecute.c: * generic/tclInt.h: * generic/tclObj.c: * tests/expr.test: * generic/tclDecls.h: make genstubs * generic/tclStubInit.c:
* minor cleanupsdgp2009-07-241-1/+3
|
* * generic/tclBinary.c: Removed unused variables.dgp2009-07-161-3/+1
| | | | | | | | | | | | | | | | | | * generic/tclCmdIL.c: * generic/tclCompile.c: * generic/tclExecute.c: * generic/tclHash.c: * generic/tclIOUtil.c: * generic/tclVar.c: * generic/tclBasic.c: Silence compiler warnings about ClientData. * generic/tclProc.c: * generic/tclScan.c: Typo in ACCEPT_NAN configuration. * generic/tclStrToD.c: Set floating point control register on MIPS systems so that the gradual underflow expected by Tcl is in effect. [Bug 2819200]
* * generic/tclCompile.c (TclInitCompileEnv, EnterCmdWordIndex,andreas_kupries2009-07-141-6/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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): * generic/tclCmdAH.c (TclNRForObjCmd, TclNRForIterCallback, 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. The above fixes [Bug 1605269].
* Fix [Bug 2637173] by consolidating bytearray purity check.dkf2009-07-121-5/+5
|
* fix signed vs unsigned comparison warningsdas2009-06-031-12/+12
|
* * generic/tclExecute.c: Replace dynamically-initialized table withdgp2009-06-021-44/+10
| | | | | a table of static constants in the lookup table for exponent operator computations that fit in a 64 bit integer result.
* * generic/tclExecute.c: Corrected implementations and selectiondgp2009-06-021-41/+63
| | | | logic of the INST_EXPON instruction to fix [Bug 2798543].
* fix TCL_COMPILE_DEBUG 64bit warningsdas2009-05-161-5/+5
|
* * generic/tclBasic.c: Let coroutines start with a much smallerMiguel Sofer2009-05-081-7/+6
| | | | | * generic/tclCompile.h: stack: 200 words (previously was 2000, * generic/tclExecute.c: the same as interps)
* * generic/tclCmdMZ.c: Improve overflow error message fromdgp2009-05-061-1/+4
| | | | [string repeat]. [Bug 2582327]
* * generic/tclBasic.c: Fix for (among others) [Bug 2699087]Miguel Sofer2009-03-211-6/+25
| | | | | | | | | * generic/tclCmdAH.c: Tailcalls now perform properly even from * generic/tclExecute.c: within [eval]ed scripts. * generic/tclInt.h: More tests missing, as well as proper exploration and testing of the interaction with "redirectors" like interp-alias (suspect that it does not happen in constant space) and pure-eval commands.