Fix specialization of load global

This commit is contained in:
Dino Viehland 2025-10-20 14:13:57 -07:00
parent ee776652d0
commit a3ddde4187

View file

@ -803,7 +803,7 @@ specialize_module_load_attr_lock_held(PyDictObject *dict, _Py_CODEUNIT *instr, P
if (PyDict_GetItemRef((PyObject *)dict, name, &value) < 0 ||
(value != NULL && PyLazyImport_CheckExact(value))) {
Py_XDECREF(value);
SPECIALIZATION_FAIL(SPEC_FAIL_ATTR_MODULE_LAZY_VALUE, SPEC_FAIL_OUT_OF_VERSIONS);
SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_MODULE_LAZY_VALUE);
return -1;
}
Py_XDECREF(value);
@ -1707,6 +1707,13 @@ specialize_load_global_lock_held(
SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_LOAD_GLOBAL_NON_STRING_OR_SPLIT);
goto fail;
}
PyObject *value = NULL;
if (PyDict_GetItemRef(globals, name, &value) < 0 ||
(value != NULL && PyLazyImport_CheckExact(value))) {
SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_ATTR_MODULE_LAZY_VALUE);
Py_DECREF(value);
}
Py_XDECREF(value);
Py_ssize_t index = _PyDictKeys_StringLookup(globals_keys, name);
if (index == DKIX_ERROR) {
SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_EXPECTED_ERROR);