| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclCompile.c:
* generic/tclVar.c:
* unix/tclUnixChan.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]
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
TclArgumentBCRelease, TclArgumentGet):
* generic/tclCompile.c (EnterCmdWordIndex, TclCleanupByteCode,
TclInitCompileEnv, TclCompileScript):
* generic/tclCompile.h (ExtCmdLoc):
* generic/tclExecute.c (TclExecuteByteCode):
* generic/tclInt.h (ExtIndex, CFWordBC):
* tests/info.test (info-39.0):
Backport of some changes made to the Tcl head, to handle literal
sharing better. The code here is much simpler (trimmed down)
compared to the head as the 8.5 branch is not bytecode compiling
whole files, and doesn't compile eval'd code either.
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 removes the problems with location data caused by literal
sharing in proc bodies. Simplified the associated datastructures
(ExtIndex is gone, as is the function EnterCmdWordIndex).
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclProc.c: when compiling a proc survives too long. We
* tests/execute.test: only need it there long enough for the right
TclInitCompileEnv() call to re-stash it into envPtr->procPtr. Once
that is done, the CompileEnv controls. If we let the value of
iPtr->compiledProcPtr linger, though, then any other bytecode compile
operation that takes place will also have its CompileEnv initialized
with it, and that's not correct. The value is meant to control the
compile of the proc body only, not other compile tasks that happen
along. Thanks to Carlos Tasada for discovering and reporting the
problem. [Bug 2802881].
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of location for uplevel scripts.
* generic/tclCompile.c (TclInitCompileEnv): Reorganized the
initialization of the #280 location information to match the flow
in TclEvalObjEx to get more absolute contexts.
* generic/tclBasic.c (TclEvalObjEx): Moved the pure-list
optimization out of the eval-direct code path to be done always,
i.e. even when a compile is requested. This way we do not loose
the association between #280 location information and the list
elements, if any.
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclCmdIL.c: immediately, without search. Reworked setup
* generic/tclCompile.c: of eoFramePtr, doesn't need the line
* tests/info.test: information, more sensible to have everything
on line 1 when eval'ing a pure list. Updated the users of the line
information to special case this based on the frame type (i.e.
TCL_LOCATION_EVAL_LIST). Added a testcase demonstrating the new
behaviour.
|
|
|
|
| |
* generic/tclCompile.h: static, and ansified.
|
|
|
|
|
|
|
|
|
|
| |
* 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/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:
|
|
|
|
| |
fixed by Alexander Pasadyn [Bug 1964803].
|
| |
|
|
|
|
|
|
| |
* generic/tclCompile.c: TclCompileExpr() to profit from better
* generic/tclCompile.h: literal management according to usage.
* generic/tclExecute.c:
|
| |
|
| |
|
|
|
|
|
| |
It is usually not enabled though; only worth it when a subcommand is actually
expected to undergo bytecode compilation.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
| |
objTypes.
|
|
|
|
| |
* generic/tclExecute.c:
|
| |
|
| |
|
|
|
|
|
|
| |
* generic/tclCompile.c (tclInstructionTable):
* generic/tclExecute.c (INST_DICT_UPDATE_END): fix stack
management in [dict update] [Bug 1786481].
|
|
|
|
|
|
|
| |
dictUpdateEnd
* generic/tclExecute.c: remove unneeded setting of 'cleanup'
variable before jumping to checkForCatch.
|
| |
|
|
|
|
|
|
|
|
|
| |
* 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/tclExecute.c: TclPrintByteCodeObj() so that tcl_traceCompile
output is less likely to get mangled when writes to stdout interleave
with other code.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
* generic/tclCompExpr.c: entries into TclFreeCompileEnv().
* generic/tclExecute.c: Update callers.
|
|
|
|
| |
compilers with memmove [Bug 1780870]
|
|
|
|
| |
*** POTENTIAL INCOMPATIBILITY *** (tclInt.h and tclCompile.h)
|
|
|
|
|
|
|
|
| |
* generic/tclCompCmds.c (TclCompileWhileCmd):
* generic/tclCompile.c (TclCompileScript):
Corrected faulty avoidance of INST_START_CMD when the first opcode
in a script is within a loop (as produced by 'while 1'), so that
the corresponding command is properly counted [Bug 1752146].
|
|
|
|
|
|
| |
* generic/tclCompExpr.c: off the C stack and onto the Tcl stack.
* generic/tclCompile.c: This is a rather large struct (> 3kB).
* generic/tclParse.c:
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclExecute.c: TclStackAlloc and TclStackFree to make them
easier for callers to use (or more precisely, harder to misuse).
TclStackFree now takes a (void *) argument which is the pointer
intended to be freed. TclStackFree will panic if that's not actually
the memory the call will free. TSA/TSF also now tolerate receiving
(interp == NULL), in which case they simply fall back to be calls to
Tcl_Alloc/Tcl_Free.
* generic/tclIntDecls.h: make genstubs
* generic/tclBasic.c: Updated callers
* generic/tclCmdAH.c:
* generic/tclCmdIL.c:
* generic/tclCompCmds.c:
* generic/tclCompExpr.c:
* generic/tclCompile.c:
* generic/tclFCmd.c:
* generic/tclFileName.c:
* generic/tclIOCmd.c:
* generic/tclIndexObj.c:
* generic/tclInterp.c:
* generic/tclNamesp.c:
* generic/tclProc.c:
* generic/tclTrace.c:
* unix/tclUnixPipe.c:
|
|
|
|
|
|
|
| |
* generic/tclCmdMZ.c (Tcl_SwitchObjCmd):
* generic/tclCompile.c (TclInitCompileEnv):
* generic/tclProc.c (Tcl_ProcObjCmd, SetLambdaFromAny): Moved the
CmdFrame off the C stack and onto the Tcl stack.
|
|
|
|
|
| |
* generic/tclExecute.c: any code other than TCL_OK, so remove code
* generic/tclProc.c: that formerly handled exceptional codes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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/tclCompile.c: --enable-64bit --enable-symbols=all.
* generic/tclExecute.c:
|
|
|
|
| |
extCmdMapPtr was not being freed [Bug 1705778, leak #1].
|
|
|
|
| |
efficient). After [Patch 1529526] (afredd)
|
|
|
|
| |
description of dict instructions
|
|
|
|
| |
description of INST_START_COMMAND.
|
|
|
|
|
|
|
|
| |
* 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:
|
|
|
|
|
|
| |
even though INST_START_CMD is now issued more efficiently. Changes definition
of I_S_C, but that's an 8.5 opcode so that shouldn't matter; tbcload doesn't work
with 8.5 at the moment anyway.
|
|
|
|
|
|
|
| |
* generic/tclCompExpr.c:
* generic/tclCompCmds.c: Replace arrays on the C stack and
ckalloc calls with TclStackAlloc calls to use memory on Tcl's
evaluation stack
|
|
|
|
| |
CompileEnv fields to use ckrealloc() where appropriate.
|
|
|
|
|
|
| |
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]
|
| |
|