]> granicus.if.org Git - python/commitdiff
frameobject.c: Use an identifer instead of creating explicitly an interned
authorVictor Stinner <victor.stinner@gmail.com>
Thu, 7 Nov 2013 21:22:39 +0000 (22:22 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Thu, 7 Nov 2013 21:22:39 +0000 (22:22 +0100)
string for "__builtins__" literal string

Objects/frameobject.c

index 76e77b8a9b498c3a92885e3749053372859b9a76..63f03a64e056e2a33f15c8cf4b29117c1d8f27f8 100644 (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 */