Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
f05f8f88
Commit
f05f8f88
authored
Jan 09, 1995
by
Guido van Rossum
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
__builtins__ mods (and sys_checkinterval for ceval.c)
parent
0818e12a
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
90 additions
and
45 deletions
+90
-45
Include/bltinmodule.h
Include/bltinmodule.h
+1
-3
Include/ceval.h
Include/ceval.h
+2
-0
Include/frameobject.h
Include/frameobject.h
+2
-0
Include/rename1.h
Include/rename1.h
+3
-2
Python/bltinmodule.c
Python/bltinmodule.c
+32
-19
Python/ceval.c
Python/ceval.c
+25
-21
Python/import.c
Python/import.c
+5
-0
Python/pythonrun.c
Python/pythonrun.c
+20
-0
No files found.
Include/bltinmodule.h
View file @
f05f8f88
...
...
@@ -30,9 +30,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
/* Built-in module interface */
extern
object
*
getbuiltin
PROTO
((
object
*
));
extern
object
*
getbuiltins
PROTO
((
char
*
));
extern
int
setbuiltin
PROTO
((
char
*
,
object
*
));
extern
object
*
getbuiltindict
PROTO
(());
#ifdef __cplusplus
}
...
...
Include/ceval.h
View file @
f05f8f88
...
...
@@ -32,10 +32,12 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
object
*
call_object
PROTO
((
object
*
,
object
*
));
object
*
getbuiltins
PROTO
((
void
));
object
*
getglobals
PROTO
((
void
));
object
*
getlocals
PROTO
((
void
));
object
*
getowner
PROTO
((
void
));
object
*
getframe
PROTO
((
void
));
int
getrestricted
PROTO
((
void
));
void
flushline
PROTO
((
void
));
...
...
Include/frameobject.h
View file @
f05f8f88
...
...
@@ -40,6 +40,7 @@ typedef struct _frame {
OB_HEAD
struct
_frame
*
f_back
;
/* previous frame, or NULL */
codeobject
*
f_code
;
/* code segment */
object
*
f_builtins
;
/* builtin symbol table (dictobject) */
object
*
f_globals
;
/* global symbol table (dictobject) */
object
*
f_locals
;
/* local symbol table (dictobject) */
object
*
f_owner
;
/* owner (e.g. class or module) or NULL */
...
...
@@ -52,6 +53,7 @@ typedef struct _frame {
int
f_iblock
;
/* index in f_blockstack */
int
f_lasti
;
/* Last instruction if called */
int
f_lineno
;
/* Current line number */
int
f_restricted
;
/* Flag set if restricted operations in this scope */
object
*
f_trace
;
/* Trace function */
}
frameobject
;
...
...
Include/rename1.h
View file @
f05f8f88
...
...
@@ -269,6 +269,7 @@ typedef struct methodlist PyMethodDef;
#define PyEval_CallObject call_object
#define PyEval_EvalCode eval_code
#define Py_FlushLine flushline
#define PyEval_GetBuiltins getbuiltins
#define PyEval_GetGlobals getglobals
#define PyEval_GetLocals getlocals
#define PyEval_InitThreads init_save_thread
...
...
@@ -287,7 +288,7 @@ typedef struct methodlist PyMethodDef;
#define PyImport_Init initimport
#define PyImport_ReloadModule reload_module
#define PyNumber_Coerce coerce
#define PyBuiltin_Get
Object getbuiltin
#define PyBuiltin_Get
Dict getbuiltindict
#define PyBuiltin_Init initbuiltin
#define PyMarshal_Init initmarshal
#define PyMarshal_ReadLongFromFile rd_long
...
...
@@ -317,7 +318,7 @@ typedef struct methodlist PyMethodDef;
#define PyRun_InteractiveLoop run_tty_loop
#define PyMember_Get getmember
#define PyMember_Set setmember
#define Py_InitModule
initmodule
#define Py_InitModule
(name, methods) initmodule(name, methods)
#define Py_BuildValue mkvalue
#define Py_VaBuildValue vmkvalue
#define PyArg_Parse getargs
...
...
Python/bltinmodule.c
View file @
f05f8f88
...
...
@@ -392,6 +392,17 @@ builtin_eval(self, args)
&
Mappingtype
,
&
globals
,
&
Mappingtype
,
&
locals
))
return
NULL
;
if
(
globals
==
NULL
)
{
globals
=
getglobals
();
if
(
globals
==
NULL
)
return
NULL
;
}
if
(
locals
==
NULL
)
locals
=
globals
;
if
(
dictlookup
(
globals
,
"__builtins__"
)
==
NULL
)
{
if
(
dictinsert
(
globals
,
"__builtins__"
,
getbuiltins
())
!=
0
)
return
NULL
;
}
if
(
is_codeobject
(
cmd
))
return
eval_code
((
codeobject
*
)
cmd
,
globals
,
locals
,
(
object
*
)
NULL
,
(
object
*
)
NULL
);
...
...
@@ -428,6 +439,17 @@ builtin_execfile(self, args)
&
Mappingtype
,
&
globals
,
&
Mappingtype
,
&
locals
))
return
NULL
;
if
(
globals
==
NULL
)
{
globals
=
getglobals
();
if
(
globals
==
NULL
)
return
NULL
;
}
if
(
locals
==
NULL
)
locals
=
globals
;
if
(
dictlookup
(
globals
,
"__builtins__"
)
==
NULL
)
{
if
(
dictinsert
(
globals
,
"__builtins__"
,
getbuiltins
())
!=
0
)
return
NULL
;
}
BGN_SAVE
fp
=
fopen
(
filename
,
"r"
);
END_SAVE
...
...
@@ -725,6 +747,7 @@ builtin_input(self, args)
object
*
line
;
char
*
str
;
object
*
res
;
object
*
globals
,
*
locals
;
line
=
builtin_raw_input
(
self
,
args
);
if
(
line
==
NULL
)
...
...
@@ -733,7 +756,13 @@ builtin_input(self, args)
return
NULL
;
while
(
*
str
==
' '
||
*
str
==
'\t'
)
str
++
;
res
=
run_string
(
str
,
eval_input
,
(
object
*
)
NULL
,
(
object
*
)
NULL
);
globals
=
getglobals
();
locals
=
getlocals
();
if
(
dictlookup
(
globals
,
"__builtins__"
)
==
NULL
)
{
if
(
dictinsert
(
globals
,
"__builtins__"
,
getbuiltins
())
!=
0
)
return
NULL
;
}
res
=
run_string
(
str
,
eval_input
,
globals
,
locals
);
DECREF
(
line
);
return
res
;
}
...
...
@@ -1363,25 +1392,9 @@ static struct methodlist builtin_methods[] = {
static
object
*
builtin_dict
;
object
*
getbuiltin
(
name
)
object
*
name
;
{
return
mappinglookup
(
builtin_dict
,
name
);
}
object
*
getbuiltins
(
name
)
char
*
name
;
{
return
dictlookup
(
builtin_dict
,
name
);
}
int
setbuiltin
(
cname
,
value
)
char
*
cname
;
object
*
value
;
getbuiltindict
()
{
return
dictinsert
(
builtin_dict
,
cname
,
value
)
;
return
builtin_dict
;
}
/* Predefined exceptions */
...
...
Python/ceval.c
View file @
f05f8f88
...
...
@@ -33,7 +33,6 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#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 @@ eval_code(co, globals, locals, owner, arg)
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 @@ eval_code(co, globals, locals, owner, arg)
#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 @@ eval_code(co, globals, locals, owner, arg)
}
}
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 @@ eval_code(co, globals, locals, owner, arg)
}
if
(
--
ticker
<
0
)
{
ticker
=
ticker_count
;
ticker
=
sys_checkinterval
;
if
(
sigcheck
())
{
why
=
WHY_EXCEPTION
;
goto
on_error
;
...
...
@@ -745,7 +732,7 @@ eval_code(co, globals, locals, owner, arg)
/* 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 @@ eval_code(co, globals, locals, owner, arg)
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 @@ eval_code(co, globals, locals, owner, arg)
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 @@ eval_code(co, globals, locals, owner, arg)
case
IMPORT_NAME
:
w
=
GETNAMEV
(
oparg
);
x
=
getbuiltins
(
"__import__"
);
x
=
dictlookup
(
f
->
f_builtins
,
"__import__"
);
if
(
x
==
NULL
)
{
err_setstr
(
ImportError
,
"__import__ not found"
);
...
...
@@ -1700,6 +1687,15 @@ call_trace(p_trace, p_newtrace, f, msg, arg)
}
}
object
*
getbuiltins
()
{
if
(
current_frame
==
NULL
)
return
NULL
;
else
return
current_frame
->
f_builtins
;
}
object
*
getlocals
()
{
...
...
@@ -1733,6 +1729,12 @@ getframe()
return
(
object
*
)
current_frame
;
}
int
getrestricted
()
{
return
current_frame
==
NULL
?
0
:
current_frame
->
f_restricted
;
}
void
flushline
()
{
...
...
@@ -2660,6 +2662,8 @@ exec_statement(prog, globals, locals)
"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
)
...
...
Python/import.c
View file @
f05f8f88
...
...
@@ -32,6 +32,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "import.h"
#include "errcode.h"
#include "sysmodule.h"
#include "bltinmodule.h"
#include "pythonrun.h"
#include "marshal.h"
#include "compile.h"
...
...
@@ -147,6 +148,10 @@ exec_code_module(name, co)
if
(
m
==
NULL
)
return
NULL
;
d
=
getmoduledict
(
m
);
if
(
dictlookup
(
d
,
"__builtins__"
)
==
NULL
)
{
if
(
dictinsert
(
d
,
"__builtins__"
,
getbuiltindict
())
!=
0
)
return
NULL
;
}
v
=
eval_code
((
codeobject
*
)
co
,
d
,
d
,
d
,
(
object
*
)
NULL
);
if
(
v
==
NULL
)
return
NULL
;
...
...
Python/pythonrun.c
View file @
f05f8f88
...
...
@@ -32,6 +32,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "graminit.h"
#include "errcode.h"
#include "sysmodule.h"
#include "bltinmodule.h"
#include "compile.h"
#include "eval.h"
#include "ceval.h"
...
...
@@ -48,6 +49,7 @@ extern char *getpythonpath();
extern
grammar
gram
;
/* From graminit.c */
/* Forward */
static
void
initmain
PROTO
((
void
));
static
object
*
run_err_node
PROTO
((
node
*
n
,
char
*
filename
,
object
*
globals
,
object
*
locals
));
static
object
*
run_node
PROTO
((
node
*
n
,
char
*
filename
,
...
...
@@ -83,6 +85,24 @@ initall()
setpythonpath
(
getpythonpath
());
initsigs
();
/* Signal handling stuff, including initintr() */
initmain
();
}
/* Create __main__ module */
static
void
initmain
()
{
object
*
m
,
*
d
;
m
=
add_module
(
"__main__"
);
if
(
m
==
NULL
)
fatal
(
"can't create __main__ module"
);
d
=
getmoduledict
(
m
);
if
(
dictlookup
(
d
,
"__builtins__"
)
==
NULL
)
{
if
(
dictinsert
(
d
,
"__builtins__"
,
getbuiltindict
()))
fatal
(
"can't add __builtins__ to __main__"
);
}
}
/* Parse input from a file and execute it */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment