Browse Source

bpo-38858: Add pycore_interp_init() code to factorize code (GH-17483)

Add a new pycore_interp_init() function called by new_interpreter()
and pyinit_config().
pull/17484/head
Victor Stinner 6 years ago
committed by GitHub
parent
commit
d863ade0c7
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 56
      Python/pylifecycle.c

56
Python/pylifecycle.c

@ -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;
}

Loading…
Cancel
Save