| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
command initialization.
* generic/tclCompCmds.c: added new compile commands for append,
lappend, lindex and llength. Refactored set and incr compile
commands to use new TclPushVarName function for handling the
varname component during compilation (also used by append and
lappend). Changed string compile command to compile toplevel code
as well (when possible).
* generic/tclCompile.c: added new instruction enums
* generic/tclCompile.h: added debug info for new instructions
* generic/tclExecute.c (TclExecuteByteCode): moved elemPtr to
toplevel var (oft-used). Added definitions for new bytecode
instructions INST_LIST_INDEX, INST_LIST_LENGTH, INST_APPEND_SCALAR1,
INST_APPEND_SCALAR4, INST_APPEND_ARRAY1, INST_APPEND_ARRAY4,
INST_APPEND_ARRAY_STK, INST_APPEND_STK, INST_LAPPEND_SCALAR1,
INST_LAPPEND_SCALAR4, INST_LAPPEND_ARRAY1, INST_LAPPEND_ARRAY4,
INST_LAPPEND_ARRAY_STK, INST_LAPPEND_STK.
Refactored repititious code for reuse with INST_LOAD_STK (same as
INST_LOAD_SCALAR_STK), INST_STORE_STK (same as
INST_STORE_SCALAR_STK).
Updated INST_STR_CMP with style of fix of 2001-04-06 Fellows
[Bug #219201] as that fix only affected the runtime eval'ed
"string" (string compare is normally byte-compiled now). We
may want to back these out for speed in the future, noting the
problems with \x00 comparisons in the docs.
* generic/tclInt.h: declarations for new compile commands.
* generic/tclVar.c: change TclGetIndexedScalar,
TclGetElementOfIndexedArray, TclSetElementOfIndexedArray and
TclSetIndexedScalar to use flags. The Set functions now support
TCL_APPEND_ELEMENT and TCL_LIST_ELEMENT as well.
* generic/tclInt.decls:
* generic/tclIntDecls.h: minor signature changes for above.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
INST_STRNEQ -> INST_STR_NEQ
* generic/tclCompile.c: added streq, strneq, strcmp, strlen &
strmatch to the compiled stats instructionTable
* generic/tclCompile.h: added instructions INST_STR_CMP,
INST_STR_INDEX, INST_STR_MATCH
* generic/tclCompCmds.c: added byte compiler support for
[string compare|match|index].
* generic/tclExecute.c:
Changed INST_STR_(N)EQ to return an Int object and not bother
trying to reuse the top stack object.
Added INST_STR_CMP, INST_STR_INDEX, INST_STR_MATCH bytecode ops.
Extended evalstats output info with Tcl_IsShared stat info.
|
|
|
|
|
|
|
|
| |
more aware of TCL_BYTECODE_PRECOMPILED flagged structs (gen'd by
tbcload), to correctly clean them up.
* generic/tclClock.c (FormatClock): moved check for empty format
earlier, commented 0 result return value
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclCompile.c: fixed problem where setting to {} array
would intermittently not work. (Fontaine) [Bug: 3339]
* generic/tclCmdMZ.c:
* generic/tclExecute.c: optimized INST_TRY_CVT_TO_NUMERIC to
recognize boolean objects. (Spjuth) [Bug: 2815]
* tests/info.test:
* tests/parseOld.test:
* generic/tclCmdAH.c:
* generic/tclProc.c: changed Tcl_UplevelObjCmd (uplevel) and
Tcl_EvalObjCmd (eval) to use TCL_EVAL_DIRECT in the single arg
case as well, to take advantage of potential pure list input
optimization. This means that it won't get byte compiled though,
which should be acceptable.
* generic/tclBasic.c: made Tcl_EvalObjEx pure list object aware in
the TCL_EVAL_DIRECT case for efficiency.
* generic/tclUtil.c: made Tcl_ConcatObj pure list object aware,
and return a list object in that case [Bug: 2098 2257]
* generic/tclMain.c: changed Tcl_Main to not constantly reuse the
commandPtr object (interactive case) as it could be shared. (Fellows)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* tests/parseExpr.test:
* tests/string.test:
* generic/tclGet.c:
* generic/tclInt.h:
* generic/tclObj.c:
* generic/tclParseExpr.c:
* generic/tclUtil.c:
* generic/tclExecute.c: added TclCheckBadOctal routine to enhance
error message checking for when users use invalid octal numbers
(like 08), as well as replumbed the Expr*Funcs with a new
VerifyExprObjType to simplify type handling.
* tests/expr.test:
* generic/tclCompile.c: fixed 'bad code length' error for
'expr + {[incr]}' case, with new test case [Bug: 3736]
and seg fault on 'expr + {[error]}' (different cause) that
was caused by a correct optimization that didn't correctly
track how it was modifying the source string in the opt.
The optimization was removed, which means that:
expr 1 + {[string length abc]}
will be not be compiled inline as before, but this should be
written:
expr {1 + [string length abc]}
which will be compiled inline for speed. This prevents
expr 1 + {[mindless error]}
from seg faulting, and only affects optimizations for
degenerate cases [Bug: 3737]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
making triggerPipe non-blocking
* library/tcltest1.0/tcltest.tcl:
* generic/tclThreadTest.c: fixed mem leaks in threads
* generic/tclResult.c: fixed Tcl_AppendResultVA so it only
iterates once over the va_list (avoiding a memcpy of it,
which is not portable).
* generic/regc_color.c: fixed mem leak and assertion, from HS
* generic/tclCompile.c: removed savedChar trick that appeared to
be causing a segv when the literal table was released
* tests/string.test:
* generic/tclCmdMZ.c: fixed [string index] to return ByteArrayObj
when indexing into one (test case string-5.16) [Bug: 2871]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* doc/OpenFileChnl.3:
* doc/file.n:
* tests/cmdAH.test:
* tclIO.c:
* tclCmdAH.c: added "file channels ?pattern?" tcl command, with
associated Tcl_GetChannelNames and Tcl_GetChannelNamesEx public
C APIs (added to tcl.decls as well), with docs and tests.
* generic/tclCompile.c: add TCL_TOKEN_VARIABLE to the part types
that cause differed compilation for exprs, to correct the expr
double-evaluation problem for vars. Added test cases.
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclInt.decls:
* generic/tclCompile.c: Added TclSetByteCodeFromAny that takes a
hook procedure to invoke after compilation but before the byte
codes are emitted. This makes it possible to do postprocessing on
the compiled byte codes before the ByteCode is generated.
* generic/tclLiteral.c: Added TclHideLiteral and TclAddLiteralObj
to make it possible to create local unshared literal objects.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclNamesp.c:
* generic/tclInt.h:
* generic/tclCmdIL.c:
* generic/tclBasic.c:
* generic/tclVar.c: Applied patch from Viktor Dukhovni to
rationalize TCL_LEAVE_ERR_MSG behavior when creating variables.
* generic/tclVar.c: Fixed bug in namespace tail computation.
Fixed bug where upvar could resurrect a namespace variable whose
namespace had been deleted.
* generic/tclCompile.c (TclCompileExprCmd): Eliminated yet another
bogus optimization in expression compilation.
* generic/tclCompile.c (CompileExprWord): Fixed exception stack
overflow bug caused by missing statement. [Bug: 928]
* generic/tclIOCmd.c:
* generic/tclBasic.c: Objectified the "open" command. [Bug: 1113]
|
|
|
|
| |
overflow bug caused by missing statement. [Bug: 928]
|
| |
|
|
|
|
| |
deferred resolver caching code to procedure invocation time
|
| |
|
| |
|
|
|
|
| |
parent workspace "/home/welch/ws/tcl8.0.3".
|
|
|
|
| |
parent workspace "/ws/tcl8.0".
|
| |
|
| |
|
|
|
|
|
| |
fixed compile procs so they no longer corrupt the exception stack
don't inline expressions when it is unsafe to do so
|
|
|
|
| |
- Added the TclGetInstructionTable procedure so that the table can be accessed
|
|
|