mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
gh-121459: Deferred LOAD_GLOBAL (GH-123128)
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> Co-authored-by: Sam Gross <655866+colesbury@users.noreply.github.com>
This commit is contained in:
parent
74330d992b
commit
8810e286fa
8 changed files with 108 additions and 29 deletions
9
Python/generated_cases.c.h
generated
9
Python/generated_cases.c.h
generated
|
|
@ -5674,7 +5674,7 @@
|
|||
PREDICTED(LOAD_GLOBAL);
|
||||
_Py_CODEUNIT *this_instr = next_instr - 5;
|
||||
(void)this_instr;
|
||||
_PyStackRef res;
|
||||
_PyStackRef *res;
|
||||
_PyStackRef null = PyStackRef_NULL;
|
||||
// _SPECIALIZE_LOAD_GLOBAL
|
||||
{
|
||||
|
|
@ -5696,13 +5696,12 @@
|
|||
/* Skip 1 cache entry */
|
||||
// _LOAD_GLOBAL
|
||||
{
|
||||
res = &stack_pointer[0];
|
||||
PyObject *name = GETITEM(FRAME_CO_NAMES, oparg>>1);
|
||||
PyObject *res_o = _PyEval_LoadGlobal(GLOBALS(), BUILTINS(), name);
|
||||
if (res_o == NULL) goto error;
|
||||
_PyEval_LoadGlobalStackRef(GLOBALS(), BUILTINS(), name, res);
|
||||
if (PyStackRef_IsNull(*res)) goto error;
|
||||
null = PyStackRef_NULL;
|
||||
res = PyStackRef_FromPyObjectSteal(res_o);
|
||||
}
|
||||
stack_pointer[0] = res;
|
||||
if (oparg & 1) stack_pointer[1] = null;
|
||||
stack_pointer += 1 + (oparg & 1);
|
||||
assert(WITHIN_STACK_BOUNDS());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue