summaryrefslogtreecommitdiffstats
path: root/generic/tclCompile.h
Commit message (Collapse)AuthorAgeFilesLines
* * generic/tclBasic.c (Tcl_CreateInterp, Tcl_EvalTokensStandard,andreas_kupries2009-08-251-1/+11
| | | | | | | | | | | | | | | | | | | | | | | Tcl_EvalEx, TclEvalEx, TclAdvanceContinuations, TclNREvalObjEx): * generic/tclCmdMZ.c (Tcl_SwitchObjCmd, TclListLines): * generic/tclCompCmds.c (*): * generic/tclCompile.c (TclSetByteCodeFromAny, TclInitCompileEnv, TclFreeCompileEnv, TclCompileScript, TclCompileTokens): * generic/tclCompile.h (CompileEnv): * generic/tclInt.h (ContLineLoc, Interp): * generic/tclObj.c (ThreadSpecificData, ContLineLocFree, TclThreadFinalizeObjects, TclInitObjSubsystem, TclContinuationsEnter, TclContinuationsEnterDerived, TclContinuationsCopy, TclContinuationsGet, TclFreeObj): * generic/tclParse.c (TclSubstTokens, Tcl_SubstObj): * generic/tclProc.c (TclCreateProc): * generic/tclVar.c (TclPtrSetVar): * tests/info.test (info-30.0-24): Extended the parser, compiler, and execution engine with code and attendant data structures tracking the position of continuation lines which are not visible in the resulting script Tcl_Obj*'s, to properly account for them while counting lines for #280.
* * generic/tclCompile.c (TclInitCompileEnv, EnterCmdWordIndex,andreas_kupries2009-07-141-6/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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].
* * generic/tclBasic.c: Let coroutines start with a much smallerMiguel Sofer2009-05-081-2/+2
| | | | | * generic/tclCompile.h: stack: 200 words (previously was 2000, * generic/tclExecute.c: the same as interps)
* [Bug 218977] Tcl_DbCkfree needs a return valuenijtmans2009-02-271-9/+9
| | | | don't use CONST84/CONST86 in internal header files
* CONSTify TclPrintInstruction and TclpNativeJoinPath (TIP #27)nijtmans2009-01-221-2/+2
| | | | | {unix win} in *.decls is equivalent to {generic} tclGetDate.y, tclDate.c: single internal const decoration
* CONSTify TclDTraceInfonijtmans2008-10-281-3/+3
| | | | Eliminate some -Wstrings-write warnings
* Letting CONST die a slow and graceful death, since NO_CONST wasnijtmans2008-10-221-4/+4
| | | | broken since 8.4 and no-one complained about it.
* * generic/tclCompile.h: Declare the internal tclInstructionTabledgp2008-10-171-2/+2
| | | | | | | | * generic/tclExecute.c: to simply be "const", not CONST86. * generic/tclCmdAH.c: whitespace. * generic/tclCmdIL.c: Uninitialized variable warning. * generic/tclTest.c: const correctness warning.
* CONSTify char* DTrace probe argumentsdas2008-10-101-5/+3
|
* undo "fix warnings from 2008-10-05 constification" (tclExecute.c 1.414), butnijtmans2008-10-071-3/+3
| | | | | in stead modify two macro's in tclCompile.h with the same affect, but now without polluting C-code with type casts.
* * generic/tclInt.decls: CONSTified the AuxDataType argumentnijtmans2008-10-051-10/+10
| | | | | | | | | | | * generic/tclCompCmds.c: of TclCreateAuxData and * generic/tclCompile.c TclRegisterAuxDataType and the return * generic/tclCompile.h values of TclGetAuxDataType and * generic/tclExecute.c TclGetInstructionTable * ChangeLog * generic/tclIntDecls.h: regenerated This change complies with TIP #27 (even though it only involves internal function, so this is not even necessary).
* * tests/nre.test: add missing constraints; enable test of foreachMiguel Sofer2008-09-101-1/+2
| | | | | | | | | recursion. * generic/tclBasic.c: * generic/tclCompile.h: * generic/tclExecute.c (INST_EVAL_STK): fix for [Bug 2102930], wrong numLevels when evaling a canonical list.
* * generic/tclBasic.c: Implementation of [coroutine] and [yield]Miguel Sofer2008-08-171-1/+2
| | | | | | | | * generic/tclCmdAH.c: commands (in tcl::unsupported). * generic/tclCompile.h: * generic/tclExecute.c: * generic/tclInt.h: * tests/unsupported.test:
* fix unused variable warnings when USE_DTRACE is not defineddas2008-08-141-4/+4
|
* typodas2008-08-141-2/+4
|
* * generic/tclBasic.c (TclNREvalObjv, Tcl_NRCallObjProc): DTrace probesdas2008-08-141-8/+123
| | | | | | | | | | | | | * generic/tclProc.c (TclNRInterpProcCore, InterpProcNR2): for NRE. [Bug 2017160] * generic/tclBasic.c (TclDTraceInfo): add two extra arguments to * generic/tclCompile.h: DTrace 'info' probes for tclOO * generic/tclDTrace.d: method & class/object info. * generic/tclCompile.h: add support for debug logging of DTrace * generic/tclBasic.c: 'proc', 'cmd' and 'inst' probes (does _not_ require a platform with DTrace).
* * generic/tclBasic.c: slight cleanupMiguel Sofer2008-08-091-1/+2
| | | | | * generic/tclCompile.h: * generic/tclExecute.c:
* duh ... committed only the ChangeLog entry, not the restMiguel Sofer2008-08-041-3/+5
|
* made function staticMiguel Sofer2008-08-031-3/+1
|
* * generic/tclBasic.c: new unsupported command atProcExitMiguel Sofer2008-08-031-2/+4
| | | | | | | | | * generic/tclCompile.h: that shares the implementation with * generic/tclExecute.c: tailcall. Fixed a segfault in * generic/tclInt.h: tailcalls. Tests added. * generic/tclInterp.c: * generic/tclNamesp.c: * tests/unsupported.test:
* * generic/tclBasic.c: Improved tailcalls and tests.Miguel Sofer2008-07-311-2/+2
| | | | | | | * generic/tclCompile.h: * generic/tclExecute.c: * generic/tclTest.c: * tests/NRE.test:
* Completely revamped NRE implementation, with (almost) unchanged API.Miguel Sofer2008-07-291-4/+5
|
* * generic/tclCompile.c: Made the new TclEnterCmdWordIndexandreas_kupries2008-07-221-4/+1
| | | | * generic/tclCompile.h: static, and ansified.
* * generic/tclBasic.c: Reworked the handling of bytecode literalsandreas_kupries2008-07-221-7/+6
| | | | | | | | | | * generic/tclCompile.c: for #280 to fix the abysmal performance * generic/tclCompile.h: for deep recursion, replaced the linear * generic/tclExecute.c: search through the whole stack with * generic/tclInt.h: another hashtable and simplified the data structure used by the compiler (array instead of hashtable). Incidentially this also fixes the memory leak reported via [Bug 2024937].
* * generic/tclBasic.c: Extended the existing TIP #280 system (infoandreas_kupries2008-07-211-2/+11
| | | | | | | | | | | | * generic/tclCmdAH.c: frame), added the ability to track the * generic/tclCompCmds.c: absolute location of literal procedure * generic/tclCompile.c: arguments, and making this information * generic/tclCompile.h: available to uplevel, eval, and * generic/tclInterp.c: siblings. This allows proper tracking of * generic/tclInt.h: absolute location through custom (Tcl-coded) * generic/tclNamesp.c: control structures based on uplevel, etc. * generic/tclProc.c: * tests/info.test:
* NRE implementation [Patch 2017110]Miguel Sofer2008-07-131-2/+2
|
* * generic/tclBasic.c: Compilation of uplevel scripts, allowMiguel Sofer2008-06-081-2/+2
| | | | | | | | | * generic/tclCompCmds.c: non-body compiled scripts to access the * generic/tclCompile.c: LVT (but not to extend it) and enable the * generic/tclCompile.h: canonical list opt to sidestep the * generic/tclExecute.c: compiler. This is [Patch 1973096] * generic/tclProc.c: * tests/uplevel.test:
* More elimination of pre-C89-isms.dkf2008-05-021-13/+13
|
* Remove stray trailing "," from enum InstOperandType definition (C99ism).jenglish2008-02-261-2/+2
|
* * generic/tclCompile.h: Demote TclCompEvalObj() from internal stubs todgp2008-01-231-6/+3
| | | | | | | * generic/tclInt.decls: a MODULE_SCOPE routine declared in tclCompile.h. * generic/tclIntDecls.h: make genstubs * generic/tclStubInit.c:
* * generic/tclCompExpr.c: add an 'optimize' argument toMiguel Sofer2008-01-161-2/+2
| | | | | | * generic/tclCompile.c: TclCompileExpr() to profit from better * generic/tclCompile.h: literal management according to usage. * generic/tclExecute.c:
* * generic/tclBasic.c: Replacing 'operator' by 'op' in the defMiguel Sofer2008-01-151-2/+2
| | | | | * generic/tclCompExpr.c: of struct TclOpCmdClientData to * generic/tclCompile.h: accomodate C++ compilers [Bug 1855644]
* merge stable branch onto HEADdgp2007-12-131-1/+1
|
* typodkf2007-11-141-2/+2
|
* Compile [info exists] into bytecode. Includes new instructions to support it.dkf2007-11-141-2/+8
|
* * generic/tclCompCmds.c, generic/tclCompile.c, generic/tclCompile.h:hobbs2007-11-121-2/+6
| | | | | | | | | * generic/tclExecute.c, generic/tclInt.decls, generic/tclIntDecls.h: * generic/tclRegexp.c, generic/tclRegexp.h: Add INST_REGEXP and fully * generic/tclStubInit.c, generic/tclUtil.c: compiled [regexp] for the * tests/regexpComp.test: [Bug 1830166] simple cases. Also added TclReToGlob function to convert RE to glob patterns and use these in the possible cases.
* * generic/tclCompile.h:Miguel Sofer2007-10-271-3/+1
| | | | | | * generic/tclInt.h: moved declaration of TclSetCmdNameObj from tclCompile.h to tclInt.h, reverting linker [Bug 1821159] caused by commit of 2007-10-11 (both I and gcc missed one dep).
* whitespacedas2007-10-251-4/+4
|
* Add a new command, ::tcl::unsupported::disassembledkf2007-09-251-10/+11
|
* * generic/tclDTrace.d (new file): add DTrace provider for Tcl; allowsdas2007-09-131-1/+90
| | | | | | | | | | | | | | | | | | * generic/tclCompile.h: tracing of proc and command entry & * generic/tclBasic.c: return, bytecode execution, object * generic/tclExecute.c: allocation and more; with essentially * generic/tclInt.h: zero cost when tracing is inactive; * generic/tclObj.c: enable with --enable-dtrace configure * generic/tclProc.c: arg (disabled by default, will only * unix/Makefile.in: enable if DTrace is present). * unix/configure.in: [Patch 1793984] * macosx/GNUmakefile: enable DTrace support. * macosx/Tcl-Common.xcconfig: * macosx/Tcl.xcodeproj/project.pbxproj: * unix/configure: autoconf-2.59 * unix/tclConfig.h.in: autoheader-2.59
* * generic/tclCompCmds.c: Use the new INST_REVERSE instructiondgp2007-09-091-2/+6
| | | | | | | | | * tests/mathop.test: to correct the compiled versions of math operator commands. [Bug 1724437]. * generic/tclCompile.c: New bytecode instruction INST_REVERSE to * generic/tclCompile.h: reverse the order of N items at the top of * generic/tclExecute.c: stack.
* * generic/tclBasic.c: Used unions to better clarify overloading ofdgp2007-08-281-2/+5
| | | | | * generic/tclCompExpr.c: the fields of the OpCmdInfo and * generic/tclCompile.h: TclOpCmdClientData structs.
* * generic/tclCompExpr.c: Call TclCompileSyntaxError() whendgp2007-08-271-7/+13
| | | | | | | | | | | | | | | | expression syntax errors are found when compiling expressions. With this in place, convert TclCompileExpr to return void, since there's no longer any need to report TCL_ERROR. * generic/tclCompile.c: Update callers. * generic/tclExecute.c: * generic/tclCompCmds.c: New routine TclCompileSyntaxError() * generic/tclCompile.h: to directly compile bytecodes that report a * generic/tclCompile.c: syntax error, rather than (ab)use a call to TclCompileReturnCmd. Also, undo the most recent commit that papered over some issues with that (ab)use. New routine produces a new opcode INST_SYNTAX, which is a minor variation of INST_RETURN_IMM. Also a bit of constification.
* VarReform [Patch 1750051]Miguel Sofer2007-07-311-2/+9
| | | | *** POTENTIAL INCOMPATIBILITY *** (tclInt.h and tclCompile.h)
* Fix comments referring to {expand}. [Bug 1600859]dkf2007-06-211-2/+2
|
* * generic/tclCompile.c: reverted TclEvalObjvInternal andMiguel Sofer2007-06-151-4/+1
| | | | | | | | | | | | * generic/tclExecute.c: INST_INVOKE to essentially what they were * generic/tclBasic.c: previous to the commit of 2007-04-03 [Patch 1693802] and the subsequent optimisations, as they break the new trace tests described below. * generic/trace.test: added tests 36 to 38 for dynamic trace creation and addition. These tests expose a change in dynamics due to a recent round of optimisations. The "correct" behaviour is not described in docs nor TIP 62.
* * generic/tclBasic.c: Further TEOvI split, creating a newMiguel Sofer2007-06-101-3/+5
| | | | | | | * generic/tclCompile.h: TclEvalObjvKnownCommand() function to * generic/tclExecute.c: handle commands that are already known and are not traced. INST_INVOKE now calls into this function instead of inlining parts of TEOvI. Same perf, better isolation.
* * generic/tclBasic.c: Removed code that dealt withdgp2007-05-301-2/+1
| | | | | | | | | | | | | | | | * generic/tclCompile.c: TCL_TOKEN_EXPAND_WORD tokens representing * generic/tclCompile.h: expanded literal words. These sections were mostly in place to enable [info frame] to discover line information in expanded literals. Since the parser now generates a token for each post-expansion word referring to the right location in the original script string, [info frame] gets all the data it needs. * generic/tclInt.h: Revised the parser so that it never produces * generic/tclParse.c: TCL_TOKEN_EXPAND_WORD tokens when parsing an * tests/parse.test: expanded literal word; that is, something like {*}{x y z}. Instead, generate the series of TCL_TOKEN_SIMPLE_WORD tokens to represent the words that expansion of the literal string produces. [RFE 1725186]
* * generic/tclBasic.c: Added bytecode compilers for theMiguel Sofer2007-04-031-4/+11
| | | | | | | | * generic/tclCompCmds.c: variable linking commands: 'global', * generic/tclCompile.h: 'variable', 'upvar', 'namespace upvar' * generic/tclExecute.c: [Patch 1688593] * generic/tclInt.h: * generic/tclVar.c:
* Added a scheme to allow aux-data to be printed out for debugging. For this ↵dkf2007-03-021-4/+31
| | | | | | to work, immediate operands referring to aux-data must be identified as such in the instruction descriptor table using OPERAND_AUX4 (all are always 4 bytes). Rewrote the compiled [dict update] so that it stores critical non-varying data in an aux-data value instead of a (shimmerable) literal. [Bug 1671001]