]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-38858: Add pycore_interp_init() code to factorize code (GH-17483)
authorVictor Stinner <vstinner@python.org>
Fri, 6 Dec 2019 02:37:07 +0000 (03:37 +0100)
committerGitHub <noreply@github.com>
Fri, 6 Dec 2019 02:37:07 +0000 (03:37 +0100)
Add a new pycore_interp_init() function called by new_interpreter()
and pyinit_config().

Python/pylifecycle.c

index 9822cce4ae3b738a7646c58ccebb4690430682d0..8bd71a350de86a83379fb1e859ddb65109ba3c09 100644 (file)
@@ -702,42 +702,51 @@ pycore_init_import_warnings(PyThreadState *tstate, PyObject *sysmod)
 
 
 static PyStatus
-pyinit_config(_PyRuntimeState *runtime,
-              PyThreadState **tstate_p,
-              const PyConfig *config)
+pycore_interp_init(PyThreadState *tstate)
 {
-    _PyConfig_Write(config, runtime);
+    PyStatus status;
 
-    PyStatus status = pycore_init_runtime(runtime, config);
+    status = pycore_init_types(tstate);
     if (_PyStatus_EXCEPTION(status)) {
         return status;
     }
 
-    PyThreadState *tstate;
-    status = pycore_create_interpreter(runtime, config, &tstate);
+    PyObject *sysmod;
+    status = _PySys_Create(tstate, &sysmod);
     if (_PyStatus_EXCEPTION(status)) {
         return status;
     }
-    config = &tstate->interp->config;
-    *tstate_p = tstate;
 
-    status = pycore_init_types(tstate);
+    status = pycore_init_builtins(tstate);
     if (_PyStatus_EXCEPTION(status)) {
         return status;
     }
 
-    PyObject *sysmod;
-    status = _PySys_Create(tstate, &sysmod);
+    return pycore_init_import_warnings(tstate, sysmod);
+}
+
+
+static PyStatus
+pyinit_config(_PyRuntimeState *runtime,
+              PyThreadState **tstate_p,
+              const PyConfig *config)
+{
+    _PyConfig_Write(config, runtime);
+
+    PyStatus status = pycore_init_runtime(runtime, config);
     if (_PyStatus_EXCEPTION(status)) {
         return status;
     }
 
-    status = pycore_init_builtins(tstate);
+    PyThreadState *tstate;
+    status = pycore_create_interpreter(runtime, config, &tstate);
     if (_PyStatus_EXCEPTION(status)) {
         return status;
     }
+    config = &tstate->interp->config;
+    *tstate_p = tstate;
 
-    status = pycore_init_import_warnings(tstate, sysmod);
+    status = pycore_interp_init(tstate);
     if (_PyStatus_EXCEPTION(status)) {
         return status;
     }
@@ -1549,25 +1558,8 @@ new_interpreter(PyThreadState **tstate_p)
     if (_PyStatus_EXCEPTION(status)) {
         goto error;
     }
-    config = &interp->config;
-
-    status = pycore_init_types(tstate);
-    if (_PyStatus_EXCEPTION(status)) {
-        goto error;
-    }
-
-    PyObject *sysmod;
-    status = _PySys_Create(tstate, &sysmod);
-    if (_PyStatus_EXCEPTION(status)) {
-        return status;
-    }
-
-    status = pycore_init_builtins(tstate);
-    if (_PyStatus_EXCEPTION(status)) {
-        goto error;
-    }
 
-    status = pycore_init_import_warnings(tstate, sysmod);
+    status = pycore_interp_init(tstate);
     if (_PyStatus_EXCEPTION(status)) {
         goto error;
     }