| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
which prevents building with non-gcc compilers, notably AIX, HPUX, Solaris, MSVC6, possibly others.
|
| |
|
|\ |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* generic/tclBasic.c (TclArgumentBCEnter): the cause of a violation
of my assertion that 'ePtr->nline == objc' in TclArgumentBCEnter.
When a bytecode was grown during jump fixup the pc -> command line
mapping was not updated. When things aligned just wrong the mapping
would direct command A to the data for command B, with a different
number of arguments.
|
|\ \
| |/ |
|
| | |
|
|\ \
| |/
| |
| |
| | |
* generic/tclCompile.c: with TclParseBackslash() where possible.
* generic/tclParse.c:
* generic/tclUtil.c:
|
| |
| |
| |
| |
| |
| | |
* generic/tclCmdMZ.c: with TclParseBackslash() where possible.
* generic/tclCompExpr.c:
* generic/tclCompile.c:
* generic/tclUtil.c:
|
|\ \
| |/
| | |
more harm than good. Purged them.
|
| |
| |
| | |
more harm than good. Purged them.
|
| |
| |
| |
| |
| | |
structures for [info frame] which occured when bytecode
compilation fails.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
EvalTokensStandard, Tcl_EvalEx, EvalEx, TclAdvanceContinuations,
TclEvalObjEx):
* generic/tclCmdMZ.c (Tcl_SwitchObjCmd, ListLines):
* generic/tclCompCmds.c (*):
* generic/tclCompile.c (TclSetByteCodeFromAny, TclInitCompileEnv,
TclFreeCompileEnv, TclCompileScript):
* generic/tclCompile.h (CompileEnv):
* generic/tclInt.h (ContLineLoc, Interp):
* generic/tclObj.c (ThreadSpecificData, ContLineLocFree,
TclThreadFinalizeObjects, TclInitObjSubsystem,
TclContinuationsEnter, TclContinuationsEnterDerived,
TclContinuationsCopy, TclContinuationsGet, TclFreeObj):
* generic/tclProc.c (TclCreateProc):
* generic/tclVar.c (TclPtrSetVar):
* tests/info.test (info-30.0-22):
Extended parser, compiler, and execution with code and attendant
data structures tracking the positions of continuation lines which
are not visible in script's, to properly account for them while
counting lines for #280, during direct and compiled execution.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.4 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].
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
word index when deleting an interpreter (DeleteInterpProc). Added
missing ref count when creating an empty string as path (EvalEx).
* generic/tclCompile.c (TclInitCompileEnv): Made same change to
control flow as in TclEvalObjEx. Not needed while uplevel and
siblings go through the eval-direct code path, however if that
changes (like it did in 8.5+) better to have this in place instead
of re-searching why certain places are without absolute locations.
* tests/info.test: Added tests 38.*, exactly testing the tracking
of location for uplevel scripts, and made the testsuite fully
usable with and without -singleproc 1.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* 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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* 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:
|
| |
| |
| |
| | |
compilers with memmove [Bug 1780870]
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
TCL_TIP280.
* generic/tclCmdAH.c:
* generic/tclCmdIL.c:
* generic/tclCmdMZ.c:
* generic/tclCompCmds.c:
* generic/tclCompExpr.c:
* generic/tclCompile.c:
* generic/tclCompile.h:
* generic/tclExecute.c:
* generic/tclIOUtil.c:
* generic/tclInt.h:
* generic/tclInterp.c:
* generic/tclNamesp.c:
* generic/tclObj.c:
* generic/tclProc.c:
* tests/compile.test:
* tests/info.test:
* tests/platform.test:
* tests/safe.test:
|
| | |
|
| |
| |
| |
| |
| | |
segfault when a compilation returns TCL_OUTLINE_COMPILE after
having grown the compile environment [Bug 925121].
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* tests/compile.test (compile-3.5): corrected wrong test and
behaviour in the earlier fix for [Bug 705406]; Don Porter reported
this as [Bug 735055], and provided the solution.
Fixed in HEAD on 2003-05-09, but backport to 8-4-branch was
wrongly omitted; re-reported as [Bug 916795] by Roy Terry,
diagnosed by dgp.
|
| |
| |
| |
| |
| |
| |
| | |
* generic/tclCompile.c: truncation of UTF-8 strings that might
* generic/tclProc.c: break apart a multi-byte character.
* library/init.tcl: [Bug 760872]
* tests/init.test:
|
| | |
|
| |
| |
| |
| |
| | |
* tests/compile.test: bad command count on TCL_OUT_LINE_COMPILE
[Bug 705406] (Don Porter). Backport from 8.5a0
|
| |
| |
| |
| |
| |
| | |
* generic/tclCompile.h: 'info frame' affects not only 8.6 but 8.5 as
* generic/tclExecute.h: well. Backported the fix done in 8.6, without
* tests/info.test: changes. New testcase info-39.1.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
EvalTokensStandard, Tcl_EvalEx, EvalEx, TclAdvanceContinuations,
TclEvalObjEx):
* generic/tclCmdMZ.c (Tcl_SwitchObjCmd, TclListLines):
* generic/tclCompCmds.c (*):
* generic/tclCompile.c (TclSetByteCodeFromAny, TclInitCompileEnv,
TclFreeCompileEnv, TclCompileScript):
* 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 parser, compiler, and execution with code and attendant
data structures tracking the positions of continuation lines which
are not visible in script Tcl_Obj*'s, to properly account for them
while counting lines for #280.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* 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.
|