| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
| | |
| | |
| | | |
Hemang Lavana.
|
| | |
| | |
| | |
| | |
| | |
| | | |
properly have tclIntType used for smaller values. This corrects
TclX bug 896727 and any other 3rd party extension that created
math functions but was not yet WIDE_INT aware in them.
|
| | |
| | |
| | |
| | |
| | | |
protect all calls that may cause traces on ::errorInfo or
::errorCode to corrupt the stack [Bug 804681]
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
added a Tcl_ResetResult(interp) at each point where the interp's
result is pushed onto the stack, to avoid keeping an extra
reference that may cause costly Tcl_Obj duplication [Bug 781585]
Detected by Franco Violi, analyzed by Peter Spjuth and Donal
Fellows.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* generic/tclExecute.c: let TclExecuteObjvInternal call
TclInterpReady instead of relying on its callers to do so; fix for
the part of [Bug 495830] that is new in 8.4.
* tests/interp.test: Added tests 18.9 (knownbug) and 18.10
|
| | |
| | |
| | |
| | | |
extraneous cast from Tcl_WideAsDouble.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* generic/tclObj.c is defined on all platforms, even those where
* generic/tclPort.h TCL_WIDE_INT_IS_LONG is defined. Also made
the Tcl_Value struct have a wideValue field on all platforms. This is
a ***POTENTIAL INCOMPATIBILITY*** for TCL_WIDE_INT_IS_LONG platforms
because that struct changes size. This is the same TIP 72
incompatibility that was seen on other platforms at the 8.4.0 release,
when this change should have happened as well. [Bug 713562]
* generic/tclInt.h: New internal macros TclGetWide() and
TclGetLongFromWide() to deal with both forms of the "wideInt"
Tcl_ObjType, so that conditional TCL_WIDE_INT_IS_LONG code
is confined to the header file.
* generic/tclCmdAH.c: Replaced most coding that was conditional
* generic/tclCmdIL.c: on TCL_WIDE_INT_IS_LONG with code that
* generic/tclExecute.c: works across platforms, sometimes using
* generic/tclTest.c: the new macros above to do it.
* generic/tclUtil.c:
* generic/tclVar.c:
|
| | |
| | |
| | |
| | | |
wherever ::errorInfo may be updated, for trace sanity). [Bug 3138178]
|
| | |
| | |
| | |
| | |
| | |
| | | |
sizing the new allocation - was ok in comment but wrong in the code.
Triggered by [Bug 3142026] which happened to require exactly one more
than what was in existence. BACKPORT.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* doc/tclvars.n: Performance fix for TIP #280.
* generic/tclBasic.c:
* generic/tclExecute.c:
* generic/tclInt.h:
* generic/tclInterp.c:
* tests/info.test:
* tests/interp.test:
|
| | |
| | |
| | |
| | | |
(mixing numwords and numbytes)
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
return data to interp by default, or if given an arg, use that as
filename to output to (accepts 'stdout' and 'stderr').
Fix output to print used inst count data.
* generic/tclCkalloc.c: change TclDumpMemoryInfo sig to allow
* generic/tclInt.decls: objPtr as well as FILE* as output.
* generic/tclIntDecls.h:
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* generic/tclVar.c: make the behaviour of lappend in bytecompiled
* tests/append.test: mode consistent with direct-eval and 'append'
* tests/appendComp.test: generally. Added tests (append*-9.*)
showing the difference.
|
| | |
| | |
| | |
| | |
| | |
| | | |
sure that errors caused by an argument to an operator being outside
the domain of the operator all result in ::errorCode being ARITH
DOMAIN and not NONE.
|
| | |
| | |
| | |
| | |
| | |
| | | |
* 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.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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).
|
| | |
| | |
| | |
| | | |
(silence msvc6 warnings)
|
| | |
| | |
| | |
| | |
| | | |
a table of static constants in the lookup table for exponent operator
computations that fit in a 64 bit integer result.
|
| | |
| | |
| | |
| | | |
logic of the INST_EXPON instruction to fix [Bug 2798543].
|
| | |
| | |
| | |
| | | |
[string repeat]. [Bug 2582327]
|
| | |
| | |
| | |
| | | |
the max length of a Tcl value. [Bug 2669109]
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
* tests/execute.test: stack trace when a compile epoch bump triggers
fallback to direct evaluation of commands in a compiled script.
[Bug 2037338]
|
| | |
| | |
| | |
| | |
| | | |
TclStackRealloc to panic on rare corner cases. Thx ajpasadyn for
diagnose and patch.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* 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].
|
| | | |
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | | |
automatic vars to reduce indirection, slight perf increase
|
| | |
| | |
| | |
| | |
| | |
| | | |
sizing the new allocation - was ok in comment but wrong in the
code. Triggered by [Bug 3142026] which happened to require
exactly one more than what was in existence.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* doc/tclvars.n: Performance fix for TIP #280.
* generic/tclBasic.c:
* generic/tclExecute.c:
* generic/tclInt.h:
* generic/tclInterp.c:
* tests/info.test:
* tests/interp.test:
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* generic/tclCompile.c (tclInstructionTable): of [dict for] so that
* generic/tclExecute.c (TEBCresume): it no longer makes any
use of INST_DICT_DONE now that's not needed, and make it clearer in
the implementation of the instruction that it's just a deprecated form
of unset operation. Followup to my commit of 2010-10-16.
|
| | |
| | |
| | |
| | |
| | | |
of the bytecode-level dictionary iterator information so that the
side-conditions on instruction issuing are simpler.
|
| | |
| | |
| | |
| | | |
* generic/tclExecute.c: sharing of empty scripts is allowed again.
|
| | |
| | |
| | |
| | | |
(mixing numwords and numbytes)
|
| | |
| | |
| | |
| | | |
of string representations of dictionaries in some cases.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
return data to interp by default, or if given an arg, use that as
filename to output to (accepts 'stdout' and 'stderr').
Fix output to print used inst count data.
* generic/tclCkalloc.c: change TclDumpMemoryInfo sig to allow
* generic/tclInt.decls: objPtr as well as FILE* as output.
* generic/tclIntDecls.h:
|
| | | |
|
| | |
| | |
| | |
| | | |
be accomplished by TEBCresume()
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* generic/tclCmdIL.c: update): a saner NRE.
* generic/tclCompExpr.c:
* generic/tclCompile.c: This makes TclNRExecuteByteCode
* generic/tclCompile.h: (ex TEBC) to be a normal NRE
* generic/tclExecute.c: citizen: it loses its special status.
* generic/tclInt.decls: The logic flow within the BC engine is
* generic/tclInt.h: simplified considerably.
* generic/tclIntDecls.h:
* generic/tclObj.c:
* generic/tclProc.c:
* generic/tclTest.c:
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* generic/tclExecute.c (TclExecuteByteCode): merge INST_STR_CMP
and INST_STR_EQ/INST_STR_NEQ paths. Speeds up eq/ne/[string eq]
with obj-aware comparisons and eq/==/ne/!= with length equality
check.
|
| | |
| | |
| | |
| | | |
fixes [Bug 3072640]
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
or ::errorCode with DECACHE_STACK_INFO(), as they could run
traces. The new calls to be protected are Tcl_ResetResult(),
Tcl_SetErrorCode(), IllegalExprOperandType(),
TclExprFloatError(). The error was triggered by [Patch 3072080].
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* generic/tclVar.c (TclLookupSimpleVar, CompareVarKeys):
* generic/tclPathObj.c (Tcl_FSGetNormalizedPath, Tcl_FSEqualPaths):
* generic/tclExecute.c (TclExecuteByteCode):
* generic/tclIOUtil.c (TclFSCwdPointerEquals): peephole opt
* generic/tclResult.c (TclMergeReturnOptions): use memcmp where
applicable as possible speedup on some libc variants.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* generic/tclVar.c: make the behaviour of lappend in bytecompiled
* tests/append.test: mode consistent with direct-eval and 'append'
* tests/appendComp.test: generally. Added tests (append*-9.*)
showing the difference.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* generic/tclCmdAH.c: it now schedules the command and returns
* generic/tclCmdMZ.c: TCL_RETURN. This fixes all issues with
* generic/tclExecute.c: [catch] and [try] - [Bug 3046594],
* generic/tclInt.h: [Bug 3047235] and [Bug 3048771]. Thanks
* generic/tclNamesp.c: dgp for exploring the dark corners.
* tests/tailcall.test: More thorough testing is required.
|