frameobject.c: Use an identifer instead of creating explicitly an interned

string for "__builtins__" literal string
This commit is contained in:
Victor Stinner 2013-11-07 22:22:39 +01:00
parent e8453bc136
commit 07e9e380f9
1 changed files with 5 additions and 7 deletions

View File

@ -601,13 +601,13 @@ PyTypeObject PyFrame_Type = {
0, /* tp_dict */
};
static PyObject *builtin_object;
_Py_IDENTIFIER(__builtins__);
int _PyFrame_Init()
{
builtin_object = PyUnicode_InternFromString("__builtins__");
if (builtin_object == NULL)
return 0;
/* Before, PyId___builtins__ was a string created explicitly in
this function. Now there is nothing to initialize anymore, but
the function is kept for backward compatibility. */
return 1;
}
@ -628,7 +628,7 @@ PyFrame_New(PyThreadState *tstate, PyCodeObject *code, PyObject *globals,
}
#endif
if (back == NULL || back->f_globals != globals) {
builtins = PyDict_GetItem(globals, builtin_object);
builtins = _PyDict_GetItemId(globals, &PyId___builtins__);
if (builtins) {
if (PyModule_Check(builtins)) {
builtins = PyModule_GetDict(builtins);
@ -994,8 +994,6 @@ void
PyFrame_Fini(void)
{
(void)PyFrame_ClearFreeList();
Py_XDECREF(builtin_object);
builtin_object = NULL;
}
/* Print summary info about the state of the optimized allocator */