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.
...
@@ -30,9 +30,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
/* Built-in module interface */
/* Built-in module interface */
extern
object
*
getbuiltin
PROTO
((
object
*
));
extern
object
*
getbuiltindict
PROTO
(());
extern
object
*
getbuiltins
PROTO
((
char
*
));
extern
int
setbuiltin
PROTO
((
char
*
,
object
*
));
#ifdef __cplusplus
#ifdef __cplusplus
}
}
...
...
Include/ceval.h
View file @
f05f8f88
...
@@ -32,10 +32,12 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
...
@@ -32,10 +32,12 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
object
*
call_object
PROTO
((
object
*
,
object
*
));
object
*
call_object
PROTO
((
object
*
,
object
*
));
object
*
getbuiltins
PROTO
((
void
));
object
*
getglobals
PROTO
((
void
));
object
*
getglobals
PROTO
((
void
));
object
*
getlocals
PROTO
((
void
));
object
*
getlocals
PROTO
((
void
));
object
*
getowner
PROTO
((
void
));
object
*
getowner
PROTO
((
void
));
object
*
getframe
PROTO
((
void
));
object
*
getframe
PROTO
((
void
));
int
getrestricted
PROTO
((
void
));
void
flushline
PROTO
((
void
));
void
flushline
PROTO
((
void
));
...
...
Include/frameobject.h
View file @
f05f8f88
...
@@ -40,6 +40,7 @@ typedef struct _frame {
...
@@ -40,6 +40,7 @@ typedef struct _frame {
OB_HEAD
OB_HEAD
struct
_frame
*
f_back
;
/* previous frame, or NULL */
struct
_frame
*
f_back
;
/* previous frame, or NULL */
codeobject
*
f_code
;
/* code segment */
codeobject
*
f_code
;
/* code segment */
object
*
f_builtins
;
/* builtin symbol table (dictobject) */
object
*
f_globals
;
/* global symbol table (dictobject) */
object
*
f_globals
;
/* global symbol table (dictobject) */
object
*
f_locals
;
/* local symbol table (dictobject) */
object
*
f_locals
;
/* local symbol table (dictobject) */
object
*
f_owner
;
/* owner (e.g. class or module) or NULL */
object
*
f_owner
;
/* owner (e.g. class or module) or NULL */
...
@@ -52,6 +53,7 @@ typedef struct _frame {
...
@@ -52,6 +53,7 @@ typedef struct _frame {
int
f_iblock
;
/* index in f_blockstack */
int
f_iblock
;
/* index in f_blockstack */
int
f_lasti
;
/* Last instruction if called */
int
f_lasti
;
/* Last instruction if called */
int
f_lineno
;
/* Current line number */
int
f_lineno
;
/* Current line number */
int
f_restricted
;
/* Flag set if restricted operations in this scope */
object
*
f_trace
;
/* Trace function */
object
*
f_trace
;
/* Trace function */
}
frameobject
;
}
frameobject
;
...
...
Include/rename1.h
View file @
f05f8f88
...
@@ -269,6 +269,7 @@ typedef struct methodlist PyMethodDef;
...
@@ -269,6 +269,7 @@ typedef struct methodlist PyMethodDef;
#define PyEval_CallObject call_object
#define PyEval_CallObject call_object
#define PyEval_EvalCode eval_code
#define PyEval_EvalCode eval_code
#define Py_FlushLine flushline
#define Py_FlushLine flushline
#define PyEval_GetBuiltins getbuiltins
#define PyEval_GetGlobals getglobals
#define PyEval_GetGlobals getglobals
#define PyEval_GetLocals getlocals
#define PyEval_GetLocals getlocals
#define PyEval_InitThreads init_save_thread
#define PyEval_InitThreads init_save_thread
...
@@ -287,7 +288,7 @@ typedef struct methodlist PyMethodDef;
...
@@ -287,7 +288,7 @@ typedef struct methodlist PyMethodDef;
#define PyImport_Init initimport
#define PyImport_Init initimport
#define PyImport_ReloadModule reload_module
#define PyImport_ReloadModule reload_module
#define PyNumber_Coerce coerce
#define PyNumber_Coerce coerce
#define PyBuiltin_Get
Object getbuiltin
#define PyBuiltin_Get
Dict getbuiltindict
#define PyBuiltin_Init initbuiltin
#define PyBuiltin_Init initbuiltin
#define PyMarshal_Init initmarshal
#define PyMarshal_Init initmarshal
#define PyMarshal_ReadLongFromFile rd_long
#define PyMarshal_ReadLongFromFile rd_long
...
@@ -317,7 +318,7 @@ typedef struct methodlist PyMethodDef;
...
@@ -317,7 +318,7 @@ typedef struct methodlist PyMethodDef;
#define PyRun_InteractiveLoop run_tty_loop
#define PyRun_InteractiveLoop run_tty_loop
#define PyMember_Get getmember
#define PyMember_Get getmember
#define PyMember_Set setmember
#define PyMember_Set setmember
#define Py_InitModule
initmodule
#define Py_InitModule
(name, methods) initmodule(name, methods)
#define Py_BuildValue mkvalue
#define Py_BuildValue mkvalue
#define Py_VaBuildValue vmkvalue
#define Py_VaBuildValue vmkvalue
#define PyArg_Parse getargs
#define PyArg_Parse getargs
...
...
Python/bltinmodule.c
View file @
f05f8f88
...
@@ -392,6 +392,17 @@ builtin_eval(self, args)
...
@@ -392,6 +392,17 @@ builtin_eval(self, args)
&
Mappingtype
,
&
globals
,
&
Mappingtype
,
&
globals
,
&
Mappingtype
,
&
locals
))
&
Mappingtype
,
&
locals
))
return
NULL
;
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
))
if
(
is_codeobject
(
cmd
))
return
eval_code
((
codeobject
*
)
cmd
,
globals
,
locals
,
return
eval_code
((
codeobject
*
)
cmd
,
globals
,
locals
,
(
object
*
)
NULL
,
(
object
*
)
NULL
);
(
object
*
)
NULL
,
(
object
*
)
NULL
);
...
@@ -428,6 +439,17 @@ builtin_execfile(self, args)
...
@@ -428,6 +439,17 @@ builtin_execfile(self, args)
&
Mappingtype
,
&
globals
,
&
Mappingtype
,
&
globals
,
&
Mappingtype
,
&
locals
))
&
Mappingtype
,
&
locals
))
return
NULL
;
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
BGN_SAVE
fp
=
fopen
(
filename
,
"r"
);
fp
=
fopen
(
filename
,
"r"
);
END_SAVE
END_SAVE
...
@@ -725,6 +747,7 @@ builtin_input(self, args)
...
@@ -725,6 +747,7 @@ builtin_input(self, args)
object
*
line
;
object
*
line
;
char
*
str
;
char
*
str
;
object
*
res
;
object
*
res
;
object
*
globals
,
*
locals
;
line
=
builtin_raw_input
(
self
,
args
);
line
=
builtin_raw_input
(
self
,
args
);
if
(
line
==
NULL
)
if
(
line
==
NULL
)
...
@@ -733,7 +756,13 @@ builtin_input(self, args)
...
@@ -733,7 +756,13 @@ builtin_input(self, args)
return
NULL
;
return
NULL
;
while
(
*
str
==
' '
||
*
str
==
'\t'
)
while
(
*
str
==
' '
||
*
str
==
'\t'
)
str
++
;
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
);
DECREF
(
line
);
return
res
;
return
res
;
}
}
...
@@ -1363,25 +1392,9 @@ static struct methodlist builtin_methods[] = {
...
@@ -1363,25 +1392,9 @@ static struct methodlist builtin_methods[] = {
static
object
*
builtin_dict
;
static
object
*
builtin_dict
;
object
*
object
*
getbuiltin
(
name
)
getbuiltindict
()
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
;
{
{
return
dictinsert
(
builtin_dict
,
cname
,
value
)
;
return
builtin_dict
;
}
}
/* Predefined exceptions */
/* Predefined exceptions */
...
...
Python/ceval.c
View file @
f05f8f88
...
@@ -33,7 +33,6 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
...
@@ -33,7 +33,6 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "eval.h"
#include "eval.h"
#include "ceval.h"
#include "ceval.h"
#include "opcode.h"
#include "opcode.h"
#include "bltinmodule.h"
#include "traceback.h"
#include "traceback.h"
#include "graminit.h"
#include "graminit.h"
#include "pythonrun.h"
#include "pythonrun.h"
...
@@ -285,7 +284,6 @@ eval_code(co, globals, locals, owner, arg)
...
@@ -285,7 +284,6 @@ eval_code(co, globals, locals, owner, arg)
char
*
name
;
/* Name used by some instructions */
char
*
name
;
/* Name used by some instructions */
int
needmerge
=
0
;
/* Set if need to merge locals back at end */
int
needmerge
=
0
;
/* Set if need to merge locals back at end */
int
defmode
=
0
;
/* Default access mode for new variables */
int
defmode
=
0
;
/* Default access mode for new variables */
int
ticker_count
=
10
;
/* Check for intr every Nth instruction */
#ifdef LLTRACE
#ifdef LLTRACE
int
lltrace
;
int
lltrace
;
#endif
#endif
...
@@ -325,16 +323,9 @@ eval_code(co, globals, locals, owner, arg)
...
@@ -325,16 +323,9 @@ eval_code(co, globals, locals, owner, arg)
#define POP() BASIC_POP()
#define POP() BASIC_POP()
#endif
#endif
if
(
globals
==
NULL
)
{
if
(
globals
==
NULL
||
locals
==
NULL
)
{
globals
=
getglobals
();
err_setstr
(
SystemError
,
"eval_code: NULL globals or locals"
);
if
(
locals
==
NULL
)
{
return
NULL
;
locals
=
getlocals
();
needmerge
=
1
;
}
}
else
{
if
(
locals
==
NULL
)
locals
=
globals
;
}
}
#ifdef LLTRACE
#ifdef LLTRACE
...
@@ -385,10 +376,6 @@ eval_code(co, globals, locals, owner, arg)
...
@@ -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
);
next_instr
=
GETUSTRINGVALUE
(
f
->
f_code
->
co_code
);
stack_pointer
=
f
->
f_valuestack
;
stack_pointer
=
f
->
f_valuestack
;
...
@@ -417,7 +404,7 @@ eval_code(co, globals, locals, owner, arg)
...
@@ -417,7 +404,7 @@ eval_code(co, globals, locals, owner, arg)
}
}
if
(
--
ticker
<
0
)
{
if
(
--
ticker
<
0
)
{
ticker
=
ticker_count
;
ticker
=
sys_checkinterval
;
if
(
sigcheck
())
{
if
(
sigcheck
())
{
why
=
WHY_EXCEPTION
;
why
=
WHY_EXCEPTION
;
goto
on_error
;
goto
on_error
;
...
@@ -745,7 +732,7 @@ eval_code(co, globals, locals, owner, arg)
...
@@ -745,7 +732,7 @@ eval_code(co, globals, locals, owner, arg)
/* Print value except if procedure result */
/* Print value except if procedure result */
/* Before printing, also assign to '_' */
/* Before printing, also assign to '_' */
if
(
v
!=
None
&&
if
(
v
!=
None
&&
(
err
=
setbuiltin
(
"_"
,
v
))
==
0
&&
(
err
=
dictinsert
(
f
->
f_builtins
,
"_"
,
v
))
==
0
&&
!
suppress_print
)
{
!
suppress_print
)
{
flushline
();
flushline
();
x
=
sysget
(
"stdout"
);
x
=
sysget
(
"stdout"
);
...
@@ -1157,7 +1144,7 @@ eval_code(co, globals, locals, owner, arg)
...
@@ -1157,7 +1144,7 @@ eval_code(co, globals, locals, owner, arg)
x
=
dict2lookup
(
f
->
f_globals
,
w
);
x
=
dict2lookup
(
f
->
f_globals
,
w
);
if
(
x
==
NULL
)
{
if
(
x
==
NULL
)
{
err_clear
();
err_clear
();
x
=
getbuiltin
(
w
);
x
=
dict2lookup
(
f
->
f_builtins
,
w
);
if
(
x
==
NULL
)
{
if
(
x
==
NULL
)
{
err_setval
(
NameError
,
w
);
err_setval
(
NameError
,
w
);
break
;
break
;
...
@@ -1179,7 +1166,7 @@ eval_code(co, globals, locals, owner, arg)
...
@@ -1179,7 +1166,7 @@ eval_code(co, globals, locals, owner, arg)
x
=
dict2lookup
(
f
->
f_globals
,
w
);
x
=
dict2lookup
(
f
->
f_globals
,
w
);
if
(
x
==
NULL
)
{
if
(
x
==
NULL
)
{
err_clear
();
err_clear
();
x
=
getbuiltin
(
w
);
x
=
dict2lookup
(
f
->
f_builtins
,
w
);
if
(
x
==
NULL
)
{
if
(
x
==
NULL
)
{
err_setval
(
NameError
,
w
);
err_setval
(
NameError
,
w
);
break
;
break
;
...
@@ -1324,7 +1311,7 @@ eval_code(co, globals, locals, owner, arg)
...
@@ -1324,7 +1311,7 @@ eval_code(co, globals, locals, owner, arg)
case
IMPORT_NAME
:
case
IMPORT_NAME
:
w
=
GETNAMEV
(
oparg
);
w
=
GETNAMEV
(
oparg
);
x
=
getbuiltins
(
"__import__"
);
x
=
dictlookup
(
f
->
f_builtins
,
"__import__"
);
if
(
x
==
NULL
)
{
if
(
x
==
NULL
)
{
err_setstr
(
ImportError
,
err_setstr
(
ImportError
,
"__import__ not found"
);
"__import__ not found"
);
...
@@ -1700,6 +1687,15 @@ call_trace(p_trace, p_newtrace, f, msg, arg)
...
@@ -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
*
object
*
getlocals
()
getlocals
()
{
{
...
@@ -1733,6 +1729,12 @@ getframe()
...
@@ -1733,6 +1729,12 @@ getframe()
return
(
object
*
)
current_frame
;
return
(
object
*
)
current_frame
;
}
}
int
getrestricted
()
{
return
current_frame
==
NULL
?
0
:
current_frame
->
f_restricted
;
}
void
void
flushline
()
flushline
()
{
{
...
@@ -2660,6 +2662,8 @@ exec_statement(prog, globals, locals)
...
@@ -2660,6 +2662,8 @@ exec_statement(prog, globals, locals)
"exec 2nd/3rd args must be dict or None"
);
"exec 2nd/3rd args must be dict or None"
);
return
-
1
;
return
-
1
;
}
}
if
(
dictlookup
(
globals
,
"__builtins__"
)
==
NULL
)
dictinsert
(
globals
,
"__builtins__"
,
current_frame
->
f_builtins
);
if
(
is_codeobject
(
prog
))
{
if
(
is_codeobject
(
prog
))
{
if
(
eval_code
((
codeobject
*
)
prog
,
globals
,
locals
,
if
(
eval_code
((
codeobject
*
)
prog
,
globals
,
locals
,
(
object
*
)
NULL
,
(
object
*
)
NULL
)
==
NULL
)
(
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.
...
@@ -32,6 +32,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "import.h"
#include "import.h"
#include "errcode.h"
#include "errcode.h"
#include "sysmodule.h"
#include "sysmodule.h"
#include "bltinmodule.h"
#include "pythonrun.h"
#include "pythonrun.h"
#include "marshal.h"
#include "marshal.h"
#include "compile.h"
#include "compile.h"
...
@@ -147,6 +148,10 @@ exec_code_module(name, co)
...
@@ -147,6 +148,10 @@ exec_code_module(name, co)
if
(
m
==
NULL
)
if
(
m
==
NULL
)
return
NULL
;
return
NULL
;
d
=
getmoduledict
(
m
);
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
);
v
=
eval_code
((
codeobject
*
)
co
,
d
,
d
,
d
,
(
object
*
)
NULL
);
if
(
v
==
NULL
)
if
(
v
==
NULL
)
return
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.
...
@@ -32,6 +32,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "graminit.h"
#include "graminit.h"
#include "errcode.h"
#include "errcode.h"
#include "sysmodule.h"
#include "sysmodule.h"
#include "bltinmodule.h"
#include "compile.h"
#include "compile.h"
#include "eval.h"
#include "eval.h"
#include "ceval.h"
#include "ceval.h"
...
@@ -48,6 +49,7 @@ extern char *getpythonpath();
...
@@ -48,6 +49,7 @@ extern char *getpythonpath();
extern
grammar
gram
;
/* From graminit.c */
extern
grammar
gram
;
/* From graminit.c */
/* Forward */
/* Forward */
static
void
initmain
PROTO
((
void
));
static
object
*
run_err_node
PROTO
((
node
*
n
,
char
*
filename
,
static
object
*
run_err_node
PROTO
((
node
*
n
,
char
*
filename
,
object
*
globals
,
object
*
locals
));
object
*
globals
,
object
*
locals
));
static
object
*
run_node
PROTO
((
node
*
n
,
char
*
filename
,
static
object
*
run_node
PROTO
((
node
*
n
,
char
*
filename
,
...
@@ -83,6 +85,24 @@ initall()
...
@@ -83,6 +85,24 @@ initall()
setpythonpath
(
getpythonpath
());
setpythonpath
(
getpythonpath
());
initsigs
();
/* Signal handling stuff, including initintr() */
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 */
/* 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