summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiguel Sofer <miguel.sofer@gmail.com>2002-06-16 17:59:12 (GMT)
committerMiguel Sofer <miguel.sofer@gmail.com>2002-06-16 17:59:12 (GMT)
commit9f5e83a07bc6c07bee76ef80ffc94146b02adacd (patch)
tree121b4e095bc7d455f478998aabfb0fec4fec97a7
parentbe8fdb37920fef9eda3777d85af7ff2dc87dad05 (diff)
downloadtcl-9f5e83a07bc6c07bee76ef80ffc94146b02adacd.zip
tcl-9f5e83a07bc6c07bee76ef80ffc94146b02adacd.tar.gz
tcl-9f5e83a07bc6c07bee76ef80ffc94146b02adacd.tar.bz2
bug in the consolidation of the INCR_..._STK instructions
-rw-r--r--ChangeLog7
-rw-r--r--generic/tclExecute.c5
2 files changed, 10 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 7bec2f0..786f579 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2002-06-14 Miguel Sofer <msofer@users.sourceforge.net>
+ * generic/tclExecute.c: bug in the consolidation of the
+ INCR_..._STK instructions; the bug could not be exercised as the
+ (faulty) instruction INST_INCR_ARRAY_STK was never compiled-in
+ (related to [Bug 569438]).
+
+2002-06-14 Miguel Sofer <msofer@users.sourceforge.net>
+
* generic/tclExecute.c (TclExecuteByteCode): runtime peep-hole
optimisation of variables (INST_STORE, INST_INCR) and commands
(INST_INVOKE); faster check for the existence of a catch.
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index 6682abe..b1893f2 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclExecute.c,v 1.68 2002/06/14 21:08:31 msofer Exp $
+ * RCS: @(#) $Id: tclExecute.c,v 1.69 2002/06/16 17:59:12 msofer Exp $
*/
#include "tclInt.h"
@@ -1702,15 +1702,16 @@ TclExecuteByteCode(interp, codePtr)
ADJUST_PC(pcAdjustment);
case INST_INCR_ARRAY_STK:
+ valuePtr = POP_OBJECT();
elemPtr = POP_OBJECT();
goto doIncrStkGetIncr;
case INST_INCR_SCALAR_STK:
case INST_INCR_STK:
+ valuePtr = POP_OBJECT();
elemPtr = NULL;
doIncrStkGetIncr:
- valuePtr = POP_OBJECT();
if (valuePtr->typePtr == &tclIntType) {
i = valuePtr->internalRep.longValue;
#ifndef TCL_WIDE_INT_IS_LONG