Mercurial > cpython-lru_cache-weakref
diff Python/ceval.c @ 2098:b7be0382f9ee legacy-trunk
__builtins__ mods (and sys_checkinterval for ceval.c)
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Mon, 09 Jan 1995 17:53:26 +0000 |
| parents | 1940e1e0cedf |
| children | 92da8901517e |
line wrap: on
line diff
--- a/Python/ceval.c Mon Jan 09 17:50:47 1995 +0000 +++ b/Python/ceval.c Mon Jan 09 17:53:26 1995 +0000 @@ -33,7 +33,6 @@ #include "eval.h" #include "ceval.h" #include "opcode.h" -#include "bltinmodule.h" #include "traceback.h" #include "graminit.h" #include "pythonrun.h" @@ -285,7 +284,6 @@ char *name; /* Name used by some instructions */ int needmerge = 0; /* Set if need to merge locals back at end */ int defmode = 0; /* Default access mode for new variables */ - int ticker_count = 10; /* Check for intr every Nth instruction */ #ifdef LLTRACE int lltrace; #endif @@ -325,16 +323,9 @@ #define POP() BASIC_POP() #endif - if (globals == NULL) { - globals = getglobals(); - if (locals == NULL) { - locals = getlocals(); - needmerge = 1; - } - } - else { - if (locals == NULL) - locals = globals; + if (globals == NULL || locals == NULL) { + err_setstr(SystemError, "eval_code: NULL globals or locals"); + return NULL; } #ifdef LLTRACE @@ -385,10 +376,6 @@ } } - x = sysget("check_interval"); - if (x != NULL && is_intobject(x)) - ticker_count = getintvalue(x); - next_instr = GETUSTRINGVALUE(f->f_code->co_code); stack_pointer = f->f_valuestack; @@ -417,7 +404,7 @@ } if (--ticker < 0) { - ticker = ticker_count; + ticker = sys_checkinterval; if (sigcheck()) { why = WHY_EXCEPTION; goto on_error; @@ -745,7 +732,7 @@ /* Print value except if procedure result */ /* Before printing, also assign to '_' */ if (v != None && - (err = setbuiltin("_", v)) == 0 && + (err = dictinsert(f->f_builtins, "_", v)) == 0 && !suppress_print) { flushline(); x = sysget("stdout"); @@ -1157,7 +1144,7 @@ x = dict2lookup(f->f_globals, w); if (x == NULL) { err_clear(); - x = getbuiltin(w); + x = dict2lookup(f->f_builtins, w); if (x == NULL) { err_setval(NameError, w); break; @@ -1179,7 +1166,7 @@ x = dict2lookup(f->f_globals, w); if (x == NULL) { err_clear(); - x = getbuiltin(w); + x = dict2lookup(f->f_builtins, w); if (x == NULL) { err_setval(NameError, w); break; @@ -1324,7 +1311,7 @@ case IMPORT_NAME: w = GETNAMEV(oparg); - x = getbuiltins("__import__"); + x = dictlookup(f->f_builtins, "__import__"); if (x == NULL) { err_setstr(ImportError, "__import__ not found"); @@ -1701,6 +1688,15 @@ } object * +getbuiltins() +{ + if (current_frame == NULL) + return NULL; + else + return current_frame->f_builtins; +} + +object * getlocals() { if (current_frame == NULL) @@ -1733,6 +1729,12 @@ return (object *)current_frame; } +int +getrestricted() +{ + return current_frame == NULL ? 0 : current_frame->f_restricted; +} + void flushline() { @@ -2660,6 +2662,8 @@ "exec 2nd/3rd args must be dict or None"); return -1; } + if (dictlookup(globals, "__builtins__") == NULL) + dictinsert(globals, "__builtins__", current_frame->f_builtins); if (is_codeobject(prog)) { if (eval_code((codeobject *) prog, globals, locals, (object *)NULL, (object *)NULL) == NULL)
