| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
probably optimized far in excess of anything we could do! Little-endian
just use the old code...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclIntDecls.h:
* generic/tclStubInit.c:
* generic/tclUtf.c: added TclpUtfNcmp2 private command that
mirrors Tcl_UtfNcmp, but takes n in bytes, not utf-8 chars. This
provides a faster alternative for comparing utf strings internally.
(Tcl_UniCharNcmp, Tcl_UniCharNcasecmp): removed the explicit end
of string check as it wasn't correct for the function (by doc and
logic).
* generic/tclCmdMZ.c (Tcl_StringObjCmd): reworked the string equal
comparison code to use TclpUtfNcmp2 as well as short-circuit for
equal objects or unequal length strings in the equal case.
Removed the use of goto and streamlined the other parts.
* generic/tclExecute.c (TclExecuteByteCode): added check for
object equality in the comparison instructions. Added
short-circuit for != length strings in INST_EQ, INST_NEQ and
INST_STR_CMP. Reworked INST_STR_CMP to use TclpUtfNcmp2 where
appropriate, and only use Tcl_UniCharNcmp when at least one of the
objects is a Unicode obj with no utf bytes.
|
|
|
|
| |
"floating-point value" in [expr] error messages.
|
|
|
|
| |
otherwise non-catchable. [Bug 542588]
|
|
|
|
|
| |
having influence over the wrong scope of Tcl_*Eval* calls. Patch
from Miguel Sofer. Report from Jean-Claude Wippler. [Bug 219181]
|
|
|
|
|
| |
runLevel 0 [Bug 533758]. Removed the static RecordTracebackInfo(), as
its functionality is easily replicated by Tcl_LogCommandInfo.
|
| |
|
|
|
|
|
|
|
| |
* tclIOGT.c:
* tclIndexObj.c: Touchups to the TIP 72 patch to make it
compileable under Windows again. The changes are not complete,
there is one nasty regarding _stati64
|
|
|
|
|
| |
This version builds clean on Solaris/SPARC, with GCC and CC, both with and
without threads and both in 32-bit and 64-bit mode.
|
|
|
|
| |
possibly dangerous decr in macro call.
|
| |
|
| |
|
|
|
|
| |
483611].
|
| |
|
| |
|
|
|
|
| |
computations)
|
| |
|
|
|
|
| |
(previous to buggy modifs on 2001-11-16).
|
|
|
|
| |
to tclObj.c
|
| |
|
|
|
|
|
|
| |
ability of the [lindex] command to have multiple index arguments,
and adds the [lset] command. Both commands are byte-code compiled.
[Patch #471874] (work by Kenny, commited by Hobbs)
|
|
|
|
|
| |
INST_STR_CMP else case for strings to pass true utf char length to
Tcl_UtfNCmp.
|
|
|
|
|
|
| |
of valuePtr in TRACE_WITH_OBJ in INST_EVAL_STK case. [Bug #462594]
Changed INST_STR_CMP instruction to promote to Unicode strings
only when one of the strings is already of Unicode type.
|
| |
|
|
|
|
| |
one possible exit.
|
|
|
|
| |
builds [Bug 451858].
|
|
|
|
| |
in debug macro.
|
|
|
|
|
|
|
|
| |
* generic/tclBasic.c: added TclCompileListCmd compile proc
* generic/tclCompCmds.c (TclCompileListCmd): function to compile
the 'list' command at parse time.
* generic/tclExecute.c (TclExecuteByteCode): definition of
INST_LIST bytecode.
|
|
|
|
| |
namespaces within the same interpreter without forcing a new lookup. This speeds up scripts that pass command names in variables ("this" in some OO packages). [Patch 456668].
|
|
|
|
|
|
| |
flag to INST_LAPPEND(_ARRAY)_STK case to trigger read traces for
newly created arrays. Removed unnecessary #ifdef for
TCL_COMPILE_DEBUG in INST_LOAD_SCALAR1 case.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
[Bug #406709, Patch #414470]
|
|
|
|
| |
architectures for a clean compile.
|
|
|
|
| |
unallocated memory.
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclExecute.c:
* tests/expr-old.test: Re-wrote Tcl's [expr rand()] and
[expr srand($seed)] implementations, fixing a range error
on some 64-bit platforms. Added tests that detect the bug.
The rewrite changes the seed -> sequence map on 64-bit
platforms, only for seed >= 2^31, a slight incompatibility.
[Bug 121072, Patch 102781]
|
|
|
|
|
|
|
| |
* tests/scan.test:
* generic/tclScan.c (Tcl_ScanObjCmd): changed %o and %x to use
strtoul instead of strtol to correctly preserve scan<>format
conversion of large integers. [Patch #102663, Bug #124600]
|
|
|
|
|
| |
values are placed in variables. Resolves bug #119153 as most people
will experience it.
|
|
|
|
|
|
| |
pedantic cast warning.
Corrected support for building with -DTCL_COMPILE_STATS.
Added efficiency check of object equality.
|
|
|
|
|
| |
test of iResult return from memcmp, as memcmp isn't required to
return only -1,0,1.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
TclCompileStringCmd and TclCompileReturnCmd.
* generic/tclCompile.h: Added definition of INST_STRLEN opcode and
updated LAST_INST_OPCODE value.
* generic/tclBasic.c: Added information about TclCompileStringCmd
and TclCompileReturnCmd to BuiltInCmds table.
* generic/tclExecute.c (TclExecuteByteCode): Added support for the
INST_STRLEN opcode.
* generic/tclCompCmds.c
(TclCompileStringCmd): Basic implementation of byte-compiled
[string] command. Not all subcommands are implemented; those
that are not an out-line compiled.
(TclCompileReturnCmd): Byte-compiled implementation of [return]
command. Only "simple" returns are byte-compiled; in particular,
if the -code, -errorinfo or -errorcode flags are used, the command
is not byte-compiled.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* tests/expr.test:
* tests/expr-old.test: added tests for 'eq' and 'ne'
* generic/tclExecute.c:
* generic/tclCompile.h: added INST_STREQ and INST_STRNEQ opcodes
that do strict string comparisons.
* generic/tclCompExpr.c: added 'eq' and 'ne' string comparison
operators.
* generic/tclParseExpr.c (GetLexeme): added 'eq' and 'ne' expr
parse terms (string (in)equality check).
|
|
|
|
|
|
|
|
|
| |
* generic/tclNamesp.c (Tcl_Export): added a uniq'ing test to the
export list so only one instance of each export pattern would
exist in the list.
* generic/tclExecute.c (TclExecuteByteCode): optimized case for
the empty string in ==/!= comparisons
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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]
|
|
|
|
|
|
| |
* generic/tclExecute.c (TclExecuteByteCode): Fixed crash caused by
a bug in INST_LOAD_SCALAR1 where the scalar index was read as
a signed 1 byte value instead of unsigned. [Bug: 2243]
|
| |
|