Skip to content

Commit 9dc236e

Browse files
committed
Flow _PyInterpreterFrame into _PyLazyImport_New
1 parent b960d3a commit 9dc236e

File tree

8 files changed

+15
-16
lines changed

8 files changed

+15
-16
lines changed

Include/internal/pycore_ceval.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ PyAPI_FUNC(PyObject *) _PyEval_LazyImportName(
316316
PyObject *locals, PyObject *name, PyObject *fromlist, PyObject *level,
317317
int lazy);
318318
PyAPI_FUNC(PyObject *) _PyEval_LazyImportFrom(
319-
PyThreadState *tstate, PyObject *v, PyObject *name);
319+
PyThreadState *tstate, _PyInterpreterFrame *frame, PyObject *v, PyObject *name);
320320
PyAPI_FUNC(PyObject *) _PyEval_ImportName(
321321
PyThreadState *tstate, PyObject *builtins, PyObject *globals,
322322
PyObject *locals, PyObject *name, PyObject *fromlist, PyObject *level);

Include/internal/pycore_lazyimportobject.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ typedef struct {
2727

2828
PyAPI_FUNC(PyObject *) _PyLazyImport_GetName(PyObject *lazy_import);
2929
PyAPI_FUNC(PyObject *) _PyLazyImport_New(
30-
PyObject *import_func, PyObject *from, PyObject *attr);
30+
struct _PyInterpreterFrame *frame, PyObject *import_func, PyObject *from, PyObject *attr);
3131

3232
#ifdef __cplusplus
3333
}

Objects/lazyimportobject.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#define PyLazyImportObject_CAST(op) ((PyLazyImportObject *)(op))
1212

1313
PyObject *
14-
_PyLazyImport_New(PyObject *builtins, PyObject *name, PyObject *fromlist)
14+
_PyLazyImport_New(_PyInterpreterFrame *frame, PyObject *builtins, PyObject *name, PyObject *fromlist)
1515
{
1616
PyLazyImportObject *m;
1717
if (!name || !PyUnicode_Check(name)) {
@@ -38,7 +38,6 @@ _PyLazyImport_New(PyObject *builtins, PyObject *name, PyObject *fromlist)
3838
m->lz_code = NULL;
3939
m->lz_instr_offset = -1;
4040

41-
_PyInterpreterFrame *frame = _PyEval_GetFrame();
4241
if (frame != NULL) {
4342
PyCodeObject *code = _PyFrame_GetCode(frame);
4443
if (code != NULL) {

Python/bytecodes.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3021,7 +3021,7 @@ dummy_func(
30213021
PyObject *res_o;
30223022
if (PyLazyImport_CheckExact(PyStackRef_AsPyObjectBorrow(from))) {
30233023
res_o = _PyEval_LazyImportFrom(
3024-
tstate, PyStackRef_AsPyObjectBorrow(from), name);
3024+
tstate, frame, PyStackRef_AsPyObjectBorrow(from), name);
30253025
}
30263026
else {
30273027
res_o = _PyEval_ImportFrom(

Python/ceval.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3831,7 +3831,7 @@ _PyEval_ImportFrom(PyThreadState *tstate, PyObject *v, PyObject *name)
38313831
}
38323832

38333833
PyObject *
3834-
_PyEval_LazyImportFrom(PyThreadState *tstate, PyObject *v, PyObject *name)
3834+
_PyEval_LazyImportFrom(PyThreadState *tstate, _PyInterpreterFrame *frame, PyObject *v, PyObject *name)
38353835
{
38363836
assert(PyLazyImport_CheckExact(v));
38373837
assert(name);
@@ -3865,7 +3865,7 @@ _PyEval_LazyImportFrom(PyThreadState *tstate, PyObject *v, PyObject *name)
38653865
if (from == NULL) {
38663866
return NULL;
38673867
}
3868-
ret = _PyLazyImport_New(d->lz_builtins, from, name);
3868+
ret = _PyLazyImport_New(frame, d->lz_builtins, from, name);
38693869
Py_DECREF(from);
38703870
return ret;
38713871
}
@@ -3879,12 +3879,12 @@ _PyEval_LazyImportFrom(PyThreadState *tstate, PyObject *v, PyObject *name)
38793879
if (from == NULL) {
38803880
return NULL;
38813881
}
3882-
ret = _PyLazyImport_New(d->lz_builtins, from, name);
3882+
ret = _PyLazyImport_New(frame, d->lz_builtins, from, name);
38833883
Py_DECREF(from);
38843884
return ret;
38853885
}
38863886
}
3887-
ret = _PyLazyImport_New(d->lz_builtins, d->lz_from, name);
3887+
ret = _PyLazyImport_New(frame, d->lz_builtins, d->lz_from, name);
38883888
return ret;
38893889
}
38903890

@@ -4178,7 +4178,7 @@ _PyEval_LoadGlobalStackRef(PyObject *globals, PyObject *builtins, PyObject *name
41784178
}
41794179

41804180
PyObject *res_o = PyStackRef_AsPyObjectBorrow(*writeto);
4181-
if (PyLazyImport_CheckExact(res_o)) {
4181+
if (res_o != NULL && PyLazyImport_CheckExact(res_o)) {
41824182
PyObject *l_v = _PyImport_LoadLazyImportTstate(PyThreadState_GET(), res_o);
41834183
PyStackRef_CLOSE(writeto[0]);
41844184
if (l_v == NULL) {

Python/executor_cases.c.h

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Python/generated_cases.c.h

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Python/import.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4363,7 +4363,7 @@ register_lazy_on_parent(PyThreadState *tstate, PyObject *name,
43634363
}
43644364
if (!contains) {
43654365
PyObject *lazy_module_attr = _PyLazyImport_New(
4366-
builtins, parent, child
4366+
tstate->current_frame, builtins, parent, child
43674367
);
43684368
if (lazy_module_attr == NULL) {
43694369
goto done;
@@ -4472,7 +4472,7 @@ _PyImport_LazyImportModuleLevelObject(PyThreadState *tstate,
44724472
}
44734473

44744474
// here, 'filter' is either NULL or is equivalent to a borrowed reference
4475-
PyObject *res = _PyLazyImport_New(builtins, abs_name, fromlist);
4475+
PyObject *res = _PyLazyImport_New(frame, builtins, abs_name, fromlist);
44764476
if (res == NULL) {
44774477
Py_DECREF(abs_name);
44784478
return NULL;
@@ -5522,8 +5522,8 @@ publish_lazy_imports_on_module(PyThreadState *tstate,
55225522
}
55235523
// Create a new lazy module attr for the subpackage which was
55245524
// previously lazily imported.
5525-
PyObject *lazy_module_attr = _PyLazyImport_New(builtins, name,
5526-
attr_name);
5525+
PyObject *lazy_module_attr = _PyLazyImport_New(tstate->current_frame, builtins,
5526+
name, attr_name);
55275527
if (lazy_module_attr == NULL) {
55285528
Py_DECREF(attr_name);
55295529
return -1;

0 commit comments

Comments
 (0)