| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
obj ref passed to TRACE_WITH_OBJ).
|
|
|
|
|
| |
fixed the peephole opt in INST_POP so that it is not used when
TCL_COMPILE_DEBUG is defined.
|
|
|
|
| |
left behind in prior code reorganization.
|
|
|
|
| |
the TclRegisterNewLiteral macro [Patch 1090905]
|
|
|
|
|
|
|
|
|
|
| |
from the execution stack (TclStackAlloc, TclStackFree). Added
functions TclPushStackFrame and TclPopStackFrame that do the work
of Tcl_PushCallFrame and Tcl_PopCallFrame, but using frames
allocated in the execution stack - i.e., heap instead of
C-stack. The core uses these two new functions exclusively; the
old ones remain for backwards compat, as at least two popular
extensions (itcl, xotcl) are known to use them.
|
|
|
|
|
| |
* generic/tclExecute.c: multiple .c files into one common header where
* generic/tclVar.c: it is verifiably after tclConfig.h inclusion.
|
|
|
|
| |
[Bug 761471]
|
| |
|
| |
|
|
|
|
| |
work and fix.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Removed several DECACHE_INFO/CACHE_INFO pairs that are no longer
needed for protection because routines like Tcl_SetErrorCode() and
Tcl_AddErrorInfo() can no longer re-enter bytecode execution.
* generic/tclResult.c (TclProcessReturn): Bug fix. Be sure that
a missing -errorinfo option when code == TCL_ERROR causes the
errorInfo field to get reset.
* tests/thread.test (thread-4.4): Test depended on a ::errorInfo
value initialized to "". Added code to test to setup that requirement.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclCmdAH.c (Tcl_CatchObjCmd):
* generic/tclCmdMZ.c (TclMergeReturnOptions,TclProcessReturn):
* generic/tclCompCmds.c (TclCompileReturnCmd):
* generic/tclExecute.c (TclCompEvalObj):
* generic/tclInt.h (Interp):
* generic/tclProc.c (TclUpdateReturnInfo):
Place primary storage of the -level and -code information in private
fields of the Interp struct, rather than in a DictObj. This should
significantly improve performance of TclUpdateReturnInfo.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
TclEvalObjvInternal,Tcl_LogCommandInfo,TclAddObjErrorInfo):
* generic/tclCmdAH.c (Tcl_CatchObjCmd):
* generic/tclEvent.c (BgError,ErrAssocData,Tcl_BackgroundError,
HandleBgErrors,BgErrorDeleteProc):
* generic/tclExecute.c (TclCreateExecEnv,TclDeleteExecEnv):
* generic/tclIOUtil.c (comments only):
* generic/tclInt.h (ExecEnv,Interp, ERR_IN_PROGRESS):
* generic/tclInterp.c ([tclInit]):
* generic/tclMain.c (comments only):
* generic/tclNamesp.c
(Tcl_CreateNamespace,Tcl_DeleteNamespace,TclTeardownNamespace):
* generic/tclProc.c (TclUpdateReturnInfo):
* generic/tclResult.c
(Tcl_ResetResult,TclTransferResult):
* generic/tclTrace.c (CallVarTraces):
Reworked management of the "errorInfo" data of an interp.
That information is now primarily stored in a new private
(Tcl_Obj *) field of the Interp struct, rather than using a
global variable ::errorInfo as the primary storage. The
ERR_IN_PROGRESS flag bit value is no longer required to manage
the value in its new location, and is removed. Variable traces
are established to support compatibility for any code expecting
the ::errorInfo variable to hold the information.
***POTENTIAL INCOMPATIBILITY***
Code that sets traces on the ::errorInfo variable may notice a
difference in timing of the firing of those traces. Code that
uses the value ERR_IN_PROGRESS.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclBinary.c:
* generic/tclCmdAH.c:
* generic/tclCmdIL.c:
* generic/tclCmdMZ.c:
* generic/tclCompExpr.c:
* generic/tclDictObj.c:
* generic/tclEncoding.c:
* generic/tclExecute.c:
* generic/tclFCmd.c:
* generic/tclHistory.c:
* generic/tclIndexObj.c:
* generic/tclInterp.c:
It is a poor practice to directly set or append to the value
of the objResult of an interp, because that value might be
shared, and in that circumstance a Tcl_Panic() will be the
result. Searched for example of this practice and replaced
with safer alternatives, often using the Tcl_AppendResult()
routine that dkf just rehabilitated.
|
|
|
|
|
|
|
|
| |
* generic/tclExecute.c: regarding ERR_ALREADY_LOGGED. That commit
* generic/tclNamesp.c: caused Tk test send-10.7 to fail. Added
* tests/namespace.test (25.7,8): tests in the Tcl test suite
* tests/pkg.test (2.25,26): to catch this error without the
aid of Tk in the future.
|
|
|
|
|
| |
* tests/proc.test (7.2-3): fix for [Bug 729692] was incorrect
whenever a loop exception was returned.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclCompile.c: flag ERR_ALREADY_LOGGED, to reduce
* generic/tclExecute.c: its exposure. Still left several
* generic/tclNamesp.c: references that are just too nice
on performace to do away with. These changes also resolve
an inconsistency in the ::errorInfo values produced by
[namespace eval x error foo bar] and
[namespace eval x {error foo bar}].
* generic/tclExecute.c (TclCompEvalObj): Simplified
the TclCompEvalObj routine. Much housekeeping now reliably
happens elsewhere. [Patch 1031949]
|
|
|
|
|
| |
the TclCompEvalObj routine. Much housekeeping now reliably
happens elsewhere. [Patch 1031949]
|
| |
|
| |
|
|
|
|
| |
avoid unnecessary string copies.
|
|
|
|
|
|
| |
optimisation for concatting an empty string. This enables
replacing the idiom 'K $x [set x {}]' by '$x[set x {}]' for
fastest execution.
|
|
|
|
|
| |
when there is an error while an expansion is in progress (code
added at checkForCatch).
|
|
|
|
| |
Hemang Lavana.
|
|
|
|
| |
* generic/tclExecute.c: handle warning [Bug 969066]
|
| |
|
|
|
|
|
| |
* generic/tclVar.c: using (ptrdiff_t) instead of (int) casting to
correct compiler warnings [Bug 961657], reported by Bob Techentin.
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclExecute.c (TclExecuteByteCode): reorganised TEBC
automatic variables, defining them in tight blocks instead of at
the function level. This has three purposes:
- it simplifies the analysis of individual instructions
- it is preliminary work to the non-recursive engine
- it allows a better register allocation by the optimiser; under
gcc3.3, this results in up to 10% runtime in some tests
|
|
|
|
| |
classify the variables according to their use in TEBC.
|
| |
|
|
|
|
|
| |
* generic/tclExecute.c (TclExecuteByteCode): remove one level of
indirection for compiledLocals addressing.
|
| |
|
|
|
|
| |
indirection for compiledLocals addressing.
|
|
|
|
|
| |
(DE)CACHE_STACK_INFO pair around the call - the user defined math
function could cause a recursive call to TEBC.
|
|
|
|
|
|
| |
* generic/tclExecute.c (INST_START_CMD): interp deletion now
modifies the compileEpoch, eliminating the need for the check for
interp deletion in INST_START_CMD.
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclCompile.c:
* generic/tclExecute.c: changed implementation of {expand}, last
chance while in alpha as ...
***POTENTIAL INCOMPATIBILITY***
Scripts precompiled with ProComp under previous tcl8.5a versions
may malfunction due to changed instruction numbers for
INST_LIST_INDEX_IMM, INST_LIST_RANGE_IMM and INST_START_CMD.
|
|
|
|
|
|
|
| |
* generic/tclCompile.h: the math functions receive a pointer to
top of the stack (tosPtr) instead of the execution environment
(eePtr). First step towards a change in the execution stack
management - it is now only used within TEBC.
|
| |
|
|
|
|
|
|
|
|
|
| |
* generic/tclCompile.c (TclCompileScript): avoid emitting
INST_START_CMD as the first instruction in a bytecoded Tcl_Obj. It
is not needed, as the checks are done before calling TEBC.
* generic/tclExecute.c (TclExecuteByteCode): runtime peephole
optimisation: check at INST_POP if the next instruction is
INST_START_CMD, in which case we fall through.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclInt.h: Reworked the Tcl header files into a clean
* unix/tclUnixPort.h: hierarchy where tcl.h < tclPort.h < tclInt.h
* win/tclWinInt.h: and every C source file should #include
* win/tclWinPort.h: at most one of those files to satisfy its
declaration needs. tclWinInt.h and tclWinPort.h also better organized
so that tclWinPort.h includes the Windows implementation of
cross-platform declarations, while tclWinInt.h makes declarations that
are available on Windows only.
* generic/tclBinary.c (TCL_NO_MATH): Deleted the generic/tclMath.h
* generic/tclMath.h (removed): header file. The internal Tcl
* macosx/Makefile (PRIVATE_HEADERS): header, tclInt.h, has a
* win/tcl.dsp: #include <math.h> directly,
and file external to Tcl needing libm should do the same.
* win/Makefile.in (WIN_OBJS): Deleted the win/tclWinMtherr.c file.
* win/makefile.bc (TCLOBJS): It's a vestige from matherr() days
* win/makefile.vc (TCLOBJS): gone by.
* win/tcl.dsp:
* win/tclWinMtherr.c (removed):
|
|
|
|
|
| |
for async tests in TEBC, as the new method turned out to be too
costly. Async tests now run every 64 instructions.
|