Skip to content

Commit d863ade

Browse files
authored
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().
1 parent 81fe5bd commit d863ade

File tree

1 file changed

+24
-32
lines changed

1 file changed

+24
-32
lines changed

Python/pylifecycle.c

Lines changed: 24 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -702,42 +702,51 @@ pycore_init_import_warnings(PyThreadState *tstate, PyObject *sysmod)
702702

703703

704704
static PyStatus
705-
pyinit_config(_PyRuntimeState *runtime,
706-
PyThreadState **tstate_p,
707-
const PyConfig *config)
705+
pycore_interp_init(PyThreadState *tstate)
708706
{
709-
_PyConfig_Write(config, runtime);
707+
PyStatus status;
710708

711-
PyStatus status = pycore_init_runtime(runtime, config);
709+
status = pycore_init_types(tstate);
712710
if (_PyStatus_EXCEPTION(status)) {
713711
return status;
714712
}
715713

716-
PyThreadState *tstate;
717-
status = pycore_create_interpreter(runtime, config, &tstate);
714+
PyObject *sysmod;
715+
status = _PySys_Create(tstate, &sysmod);
718716
if (_PyStatus_EXCEPTION(status)) {
719717
return status;
720718
}
721-
config = &tstate->interp->config;
722-
*tstate_p = tstate;
723719

724-
status = pycore_init_types(tstate);
720+
status = pycore_init_builtins(tstate);
725721
if (_PyStatus_EXCEPTION(status)) {
726722
return status;
727723
}
728724

729-
PyObject *sysmod;
730-
status = _PySys_Create(tstate, &sysmod);
725+
return pycore_init_import_warnings(tstate, sysmod);
726+
}
727+
728+
729+
static PyStatus
730+
pyinit_config(_PyRuntimeState *runtime,
731+
PyThreadState **tstate_p,
732+
const PyConfig *config)
733+
{
734+
_PyConfig_Write(config, runtime);
735+
736+
PyStatus status = pycore_init_runtime(runtime, config);
731737
if (_PyStatus_EXCEPTION(status)) {
732738
return status;
733739
}
734740

735-
status = pycore_init_builtins(tstate);
741+
PyThreadState *tstate;
742+
status = pycore_create_interpreter(runtime, config, &tstate);
736743
if (_PyStatus_EXCEPTION(status)) {
737744
return status;
738745
}
746+
config = &tstate->interp->config;
747+
*tstate_p = tstate;
739748

740-
status = pycore_init_import_warnings(tstate, sysmod);
749+
status = pycore_interp_init(tstate);
741750
if (_PyStatus_EXCEPTION(status)) {
742751
return status;
743752
}
@@ -1549,25 +1558,8 @@ new_interpreter(PyThreadState **tstate_p)
15491558
if (_PyStatus_EXCEPTION(status)) {
15501559
goto error;
15511560
}
1552-
config = &interp->config;
1553-
1554-
status = pycore_init_types(tstate);
1555-
if (_PyStatus_EXCEPTION(status)) {
1556-
goto error;
1557-
}
1558-
1559-
PyObject *sysmod;
1560-
status = _PySys_Create(tstate, &sysmod);
1561-
if (_PyStatus_EXCEPTION(status)) {
1562-
return status;
1563-
}
1564-
1565-
status = pycore_init_builtins(tstate);
1566-
if (_PyStatus_EXCEPTION(status)) {
1567-
goto error;
1568-
}
15691561

1570-
status = pycore_init_import_warnings(tstate, sysmod);
1562+
status = pycore_interp_init(tstate);
15711563
if (_PyStatus_EXCEPTION(status)) {
15721564
goto error;
15731565
}

0 commit comments

Comments
 (0)