| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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:
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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/tclBasic.c (builtInCmds):
* generic/tclCmdMZ.c (Tcl_SwitchObjCmd):
* tests/switch.test (switch-15.1):
Make non-bytecoded [switch] command aware of NRE. [Bug 2821401]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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/tclCompile.h: stack: 200 words (previously was 2000,
* generic/tclExecute.c: the same as interps)
|
|
|
|
| |
is not used, use Tcl_NRCallObjProc instead [Bug 2486550].
|
|
|
|
| |
[Bug 2502037].
|
|
|
|
|
|
|
| |
* generic/tclInt.h: ensembles. Only remaining known leak
* generic/tclInterp.c: is in ensemble unknown dispatch (as it
* generic/tclNamesp.c: not NR-enabled)
* tests/tailcall.test:
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclInt.h:
* generic/tclBasic.c:
* generic/tclExecute.c:
* generic/tclNamesp.c (Tcl_PopCallFrame): Rewritten tailcall
implementation, ::unsupported::atProcExit is (temporarily?)
gone. The new approach is much simpler, and also closer to being
correct. This commit fixes [Bug 2649975] and [Bug 2695587].
* tests/coroutine.test: Moved the tests to their own files,
* tests/tailcall.test: removed the unsupported.test. Added
* tests/unsupported.test: tests for the fixed bugs.
|
|
|
|
| |
Diagnose and fix thx to GPS.
|
| |
|
|
|
|
|
| |
- some internal const decorations
- spacing
|
|
|
|
| |
only the objProc case was handled and not the nreProc case.
|
|
|
|
|
|
|
|
| |
most of the substance of my 2009-01-12 commit. NULLing the objProc
field of a Command when deleting it is important so that tests for
certain classes of commands don't return false positives when applied
to deleted command tokens. Overall change is now just replacement
of a false comment with a true one.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
of the NRE rewrite is that there are now situations where a NULL
objProc field in a Command struct is perfectly normal. Removed an
outdated comment in Tcl_DeleteCommandFromToken that claimed we
use (cmdPtr->objPtr == NULL) as a test of command validity. In fact
we use (cmdPtr->flags & CMD_IS_DELETED) to perform that test.
Also removed the setting to NULL, since any extension following the
advice of the old comment is going to be broken by NRE anyway, and
needs to shift to flag-based testing (or stop intruding into
such internal matters). Part of [Bug 2486550].
|
|
|
|
| |
etc.)
|
| |
|
|
|
|
| |
ckfree((char *)...)
|
| |
|
| |
|
| |
|
|
|
|
| |
Eliminate some -Wstrings-write warnings
|
| |
|
|
|
|
|
|
| |
* tests/unsupported.test: arrange for [info coroutine] to return
{} when a coroutine is running but the resume command has been
deleted [Bug 2153080]
|
|
|
|
|
|
| |
* generic/tclCmdIL.c: [yield] out of ::tcl::unsupported
* tests/info.test: and into global scope: TIPs #327
* tests/unsupported.test: and #328
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* generic/tcl.h: Remove the "result" and "freeProc" fields
* generic/tclBasic.c: from the default public declaration of the
* generic/tclResult.c: Tcl_Interp struct. Code should no longer
* generic/tclStubLib.c: be accessing these fields. Access can be
* generic/tclTest.c: restored by defining USE_INTERP_RESULT, but
* generic/tclUtil.c: that should only be a temporary migration aid.
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
|
| |
* generic/tclInt.h: coroutine yield/resume
* tests/unsupported.test:
|
|
|
|
|
|
| |
returning to level 0, as opposed to it being called on starting a
command at level 0. Add a call on returning via Tcl_EvalObjEx to
fix [Bug 2114165].
|
|
|
|
|
|
|
|
|
| |
recursion.
* generic/tclBasic.c:
* generic/tclCompile.h:
* generic/tclExecute.c (INST_EVAL_STK): fix for [Bug 2102930],
wrong numLevels when evaling a canonical list.
|
|
|
|
|
|
| |
* tests/unsupported.test: new command that returns the
FQN of the currently executing coroutine. Lives as infoCoroutine
under unsupported, but is designed to become a subcommand of [info]
|
|
|
|
|
| |
eePtr, stop assuming the coroutine is invoked from the same
execEnv where it was created.
|
| |
|
|
|
|
|
|
| |
* generic/tclOOInt.h: pointer declarations (why did gcc start
* generic/tclOOMethod.c: complaining all of a sudden?)
* generic/tclProc.c:
|
|
|
|
| |
COROUTINE_CANT_YIELD, COROUTINE_ILLEGAL_YIELD.
|
| |
|
|
|
|
|
|
| |
* generic/tclCmdIL.c:
* generic/tclInt.h:
* tests/unsupported.test:
|
|
|
|
|
| |
* generic/tclCmdIL.c: coroutines. Fix small bug on coroutine
* generic/tclInt.h: rewind.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
* generic/tclCmdAH.c: commands (in tcl::unsupported).
* generic/tclCompile.h:
* generic/tclExecute.c:
* generic/tclInt.h:
* tests/unsupported.test:
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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/tclCompile.h:
* generic/tclExecute.c:
|