Issue #19512: Use the new _PyId_builtins identifier
diff --git a/Modules/_lsprof.c b/Modules/_lsprof.c
index 8947889..3ef7d65 100644
--- a/Modules/_lsprof.c
+++ b/Modules/_lsprof.c
@@ -185,7 +185,7 @@
             }
         }
         if (modname != NULL) {
-            if (PyUnicode_CompareWithASCIIString(modname, "builtins") != 0) {
+            if (_PyUnicode_CompareWithId(modname, &_PyId_builtins) != 0) {
                 PyObject *result;
                 result = PyUnicode_FromFormat("<%U.%s>", modname,
                                               fn->m_ml->ml_name);
diff --git a/Objects/object.c b/Objects/object.c
index 8078623..9d96e86 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -1122,8 +1122,12 @@
 PyObject *
 _PyObject_GetBuiltin(const char *name)
 {
-    PyObject *mod, *attr;
-    mod = PyImport_ImportModule("builtins");
+    PyObject *mod_name, *mod, *attr;
+
+    mod_name = _PyUnicode_FromId(&_PyId_builtins);   /* borrowed */
+    if (mod_name == NULL)
+        return NULL;
+    mod = PyImport_Import(mod_name);
     if (mod == NULL)
         return NULL;
     attr = PyObject_GetAttrString(mod, name);
diff --git a/Python/import.c b/Python/import.c
index c96106f..aea29e2 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -310,7 +310,7 @@
 
     /* XXX Perhaps these precautions are obsolete. Who knows? */
 
-    value = PyDict_GetItemString(modules, "builtins");
+    value = _PyDict_GetItemId(modules, &_PyId_builtins);
     if (value != NULL && PyModule_Check(value)) {
         dict = PyModule_GetDict(value);
         if (Py_VerboseFlag)