diff options
author | Guido van Rossum <guido@python.org> | 1993-04-15 15:33:52 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1993-04-15 15:33:52 (GMT) |
commit | acbe8da4f886ad733401631a870ff58f8c0ad9a4 (patch) | |
tree | 648c6b7454c184e30332fc612826fd45f64cd188 /Python/ceval.c | |
parent | 8a0c3456c2020d1a1f87619c4651e4eab831938a (diff) | |
download | cpython-acbe8da4f886ad733401631a870ff58f8c0ad9a4.zip cpython-acbe8da4f886ad733401631a870ff58f8c0ad9a4.tar.gz cpython-acbe8da4f886ad733401631a870ff58f8c0ad9a4.tar.bz2 |
(I suggest a recompile after getting this, the ceval.c bugfix may be crucial!)
* Makefile: removed superfluous AR=ar, fixed misleading comment.
* ceval.c: fixed debugging code; save/restore errors in locals_2_fast.
* intrcheck.c: for SunOS etc., turn off syscall resumption.
* regexpr.h: bump number of registers to 100.
Diffstat (limited to 'Python/ceval.c')
-rw-r--r-- | Python/ceval.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/Python/ceval.c b/Python/ceval.c index 1206570..935ce52 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -37,16 +37,18 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #include "traceback.h" /* Turn this on if your compiler chokes on the big switch: */ -/* #define CASE_TOO_BIG 1 /**/ +/* #define CASE_TOO_BIG 1 /**/ -#ifndef NDEBUG +/* Turn this on if you want to debug the interpreter: */ +/* (This can be on even if NDEBUG is defined) */ +/* #define DEBUG 1 /**/ + +#if defined(DEBUG) || !defined(NDEBUG) /* For debugging the interpreter: */ #define LLTRACE 1 /* Low-level trace feature */ #define CHECKEXC 1 /* Double-check exception checking */ #endif -#define DEBUG - /* Forward declarations */ @@ -183,7 +185,7 @@ eval_code(co, globals, locals, arg) char *name; /* Name used by some instructions */ int needmerge = 0; #ifdef LLTRACE - int lltrace = dictlookup(globals, "__lltrace__") != NULL; + int lltrace; #endif #ifdef DEBUG /* Make it easier to find out where we are with dbx */ @@ -233,6 +235,10 @@ eval_code(co, globals, locals, arg) locals = globals; } +#ifdef LLTRACE + lltrace = dictlookup(globals, "__lltrace__") != NULL; +#endif + f = newframeobject( current_frame, /*back*/ co, /*code*/ @@ -1523,6 +1529,7 @@ locals_2_fast(f, clear) { /* Merge f->f_locals into f->f_fastlocals */ object *locals, *fast, *map; + object *error_type, *error_value; int i; if (f == NULL) return; @@ -1534,6 +1541,7 @@ locals_2_fast(f, clear) if (!is_dictobject(locals) || !is_listobject(fast) || !is_dictobject(map)) return; + err_get(&error_type, &error_value); i = getdictsize(map); while (--i >= 0) { object *key; @@ -1555,6 +1563,7 @@ locals_2_fast(f, clear) if (setlistitem(fast, j, value) != 0) err_clear(); } + err_setval(error_type, error_value); } void |