summaryrefslogtreecommitdiffstats
path: root/generic/tclExecute.c
Commit message (Collapse)AuthorAgeFilesLines
* * generic/tclExecute.c: adding (DE)CACHE_STACK_INFO() pairs toMiguel Sofer2003-09-191-17/+75
| | | | | protect all calls that may cause traces on ::errorInfo or ::errorCode to corrupt the stack [Bug 804681]
* * generic/tclExecute.c (INST_INVOKE, INST_EVAL, INST_PUSH_RESULT):Miguel Sofer2003-08-051-4/+30
| | | | | | | | 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/tclBasic.c:Miguel Sofer2003-06-101-3/+6
| | | | | | | * 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
* * generic/tclExecute.c (ExprCallMathFunc): remove incorrecthobbs2003-04-181-2/+2
| | | | extraneous cast from Tcl_WideAsDouble.
* * generic/tcl.h Made changes so that the "wideInt" Tcl_ObjTypedgp2003-04-161-190/+63
| | | | | | | | | | | | | | | | | | | | | | * 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:
* * generic/tclCompile.c (TclCompileExprWords): remove unusedMiguel Sofer2003-02-191-3/+1
| | | | | | | | | variable "range" [Bug 664743] * generic/tclExecute.c (ExprSrandFunc): remove unused variable "result" [Bug 664743] * generic/tclStringObj.c (UpdateStringOfString): remove unused variable "length" [Bug 664751] * tests/execute.test (execute-7.30): fix for [Bug 664775]
* * generic/tclExecute.c (TclExecuteByteCode INST_STR_MATCH):hobbs2003-02-181-3/+9
| | | | | | | | | | | | * generic/tclCmdMZ.c (Tcl_StringObjCmd STR_MATCH): * generic/tclUtf.c (TclUniCharMatch): * generic/tclInt.decls: add private TclUniCharMatch function that * generic/tclIntDecls.h: does string match on counted unicode * generic/tclStubInit.c: strings. Tcl_UniCharCaseMatch has the * tests/string.test: failing that it can't handle strings or * tests/stringComp.test: patterns with embedded NULLs. Added tests that actually try strings/pats with NULLs. TclUniCharMatch should be TIPed and made public in the next minor version rev.
* * generic/tclExecute.c (TclExecuteByteCode): When anmdejong2003-02-061-1/+2
| | | | | | | | | | | | | error is encountered reading the increment value during a compiled call to incr, add a "(reading increment)" error string to the errorInfo variable. This makes the errorInfo variable set by the compiled incr command match the value set by the non-compiled version. * tests/incr-old.test: Change errorInfo result for the compiled incr command case to match the modified implementation. * tests/incr.test: Add tests to make sure the compiled and non-compiled errorInfo messages are the same.
* * generic/tclExecute.c (TclExprFloatError): Use the IS_NAN macrodgp2003-01-081-2/+2
| | | | for greater clarity of code.
* * generic/tclExecute.c (TclExecuteByteCode): improve INST_STR_CMPhobbs2002-11-121-10/+19
| | | | | to use memcmp in the one-byte/char case, also use direct index for INST_STR_INDEX in that case.
* Removing more CONST-related warnings.dkf2002-09-241-11/+12
|
* * generic/tclExecute.c: bugfix (reading freed memory). TestsuiteMiguel Sofer2002-08-011-22/+18
| | | | passed on linux/i386, compile-13.1 hung on linux/alpha.
* * generic/tclInt.h (USE_THREAD_ALLOC): for unshared objects,Miguel Sofer2002-08-011-19/+73
|
* Comment formatting fixesdkf2002-07-311-46/+46
|
* * generic/tclExecute.c: fixed Tcl_Obj leak in code correspondingMiguel Sofer2002-07-271-2/+2
| | | | to the macro NEXT_INST_V(x, 0, 1) [Bug 587495].
* * generic/tclExecute.c:Miguel Sofer2002-07-261-6/+55
| | | | | * tests/expr-old.test: fix for erroneous error messages in [expr], [Bug 587140] reported by Martin Lemburg.
* * generic/tclExecute.c: restoring full TCL_COMPILE_DEBUGMiguel Sofer2002-07-241-239/+117
| | | | functionality.
* * generic/tclExecute.c: restoring the tcl_traceCompile functionalityMiguel Sofer2002-07-241-1/+7
| | | | | | while I repair tcl_traceExec. The core now compiles and runs also under TCL_COMPILE_DEBUG, but execution in the bytecode engine can still not be traced.
* Allowed parser to recognise 'Inf' as a floating-point number. [Bug 218000]dkf2002-07-221-2/+19
| | | | Also produce better error messages when this happens.
* Global symbols are now all either prefixed with 'tcl' (or 'Tcl' or ...) or ↵dkf2002-07-191-7/+6
| | | | have file-scope.
* Minor changes to make things build with SunPro CC...dkf2002-07-171-2/+6
|
* variable access optimisationsMiguel Sofer2002-07-171-240/+410
|
* using the new variable name caching possibilities when setting errorMiguel Sofer2002-07-161-1/+9
| | | | results in (Tcl_AddObjErrorInfo) and (TclUpdateReturnInfo)
* Fix for bug 579284; registered math funcs can now correctly return wide-ints.dkf2002-07-101-4/+8
|
* * generic/tclExecute.c (TclCompEvalObj): clarified and simplified theMiguel Sofer2002-06-201-49/+39
| | | | logic for compilation/recompilation.
* Added parens for claritydgp2002-06-201-2/+2
|
* generic/tclExecute.c (TEBC): removing unused "for(;;)" loop; improvedMiguel Sofer2002-06-191-2581/+2562
| | | | comments; re-indentation.
* * generic/tclExecute.c (TEBC): elimination of duplicated code in theMiguel Sofer2002-06-181-545/+416
| | | | | | non-immediate INST_INCR instructions; elimination of 103 (!) TclDecrRefCount macros. The different instructions now jump back to a common "DecrRefCount zone" at the topof the loop.
* generic/tclExecute.c (TEBC, INST_DONE): small bug in the panic codeMiguel Sofer2002-06-181-1/+2
| | | | for tcl-stack corruption.
* * doc/CrtTrace.3: Added TIP#62 implementation of commandhobbs2002-06-171-3/+10
| | | | | | | | | | | | | | | * doc/trace.n: execution tracing [FR #462580] (lavana). * generic/tcl.h: This includes enter/leave tracing as well * generic/tclBasic.c: as inter-procedure stepping. * generic/tclCmdMZ.c: * generic/tclCompile.c: * generic/tclExecute.c: * generic/tclInt.decls: * generic/tclInt.h: * generic/tclIntDecls.h: * generic/tclStubInit.c: * generic/tclVar.c: * tests/trace.test:
* bug in the consolidation of the INCR_..._STK instructionsMiguel Sofer2002-06-161-2/+3
|
* runtime peep-hole optimisation of variables (INST_STORE, INST_INCR)Miguel Sofer2002-06-141-10/+45
| | | | and commands (INST_INVOKE); faster check for the existence of a catch.
* runtime peep-hole optimisation of comparisons.Miguel Sofer2002-06-141-17/+43
|
* BC-engine: runtime peep-hole optimisation of INST_FOREACHMiguel Sofer2002-06-141-10/+21
|
* consolidated code for the conditional branch instructions.Miguel Sofer2002-06-131-53/+34
|
* fixed the previous patch - wouldn't compile with TCL_COMPILE_DEBUG set.Miguel Sofer2002-06-131-13/+13
|
* TclExecuteByteCode: consolidated exception handling of INST_INVOKE,Miguel Sofer2002-06-131-201/+260
| | | | INST_EVAL, INST_BREAK and INST_CONTINUE.
* consolidated opcodes in the bytecode engine, eliminating duplicatedMiguel Sofer2002-06-131-474/+200
| | | | | code. Added the new (but pre-existent in tcl.h) possible flag bit TCL_TRACE_READS to Tcl_(Obj)?SetVar.*
* generic/tclExecute.c: optimised algorithm for exception range lookupMiguel Sofer2002-06-111-15/+24
|
* Cleaned up inclusion of float.h; that's really tcl<platform>Port.h's jobdkf2002-06-071-25/+38
|
* reverting an accidental modification in the last commit.Miguel Sofer2002-06-031-61/+1
|
* clarify the empty variable name issue ([Bug 549285])Miguel Sofer2002-06-031-1/+61
|
* * Removed internal routinedgp2002-05-311-61/+1
| | | | | | | | TclMathInProgress and Unix implementation of matherr(). These are now obsolete, dealing with very old versions of the C math library. Windows version is retained in case Borland compilers require it, but it is inactive. Thanks to Joe English. [Bug 474335, Patch 555635].
* * generic/tclExecute.c (TclExecuteByteCode INST_STR_CMP):hobbs2002-05-301-6/+6
| | | | | | | * generic/tclCmdMZ.c (Tcl_StringObjCmd): changed the case for choosing the Tcl_UniCharNcmp compare to when both objs are of StringType, as benchmarks show that is the optimal check (both bigendian and littleendian systems).
* Made Tcl_UniCharNcmp faster on big-endian machines; the system memcmp()isdkf2002-05-291-2/+2
| | | | | probably optimized far in excess of anything we could do! Little-endian just use the old code...
* * generic/tclInt.decls:hobbs2002-05-291-32/+59
| | | | | | | | | | | | | | | | | | | | | | | * 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.
* fix for [Bug #542588], where "too large integers" were reported asMiguel Sofer2002-04-181-12/+20
| | | | "floating-point value" in [expr] error messages.
* made bytecodes check for a catch before returning; the compiled [return] is ↵Miguel Sofer2002-04-151-10/+12
| | | | otherwise non-catchable. [Bug 542588]
* * Corrected problems with Tcl_AllowExceptionsdgp2002-03-291-30/+16
| | | | | having influence over the wrong scope of Tcl_*Eval* calls. Patch from Miguel Sofer. Report from Jean-Claude Wippler. [Bug 219181]
* fixed the errorInfo for return codes other than (TCL_OK, TCL_ERROR) toMiguel Sofer2002-03-221-62/+4
| | | | | runLevel 0 [Bug 533758]. Removed the static RecordTracebackInfo(), as its functionality is easily replicated by Tcl_LogCommandInfo.