mirror of
https://github.com/python/cpython.git
synced 2025-07-09 20:35:26 +00:00
gh-111789: Simplify bytecodes.c by using PyDict_GetItemRef() (GH-111978)
This commit is contained in:
parent
4f04172c92
commit
b11c443bb2
3 changed files with 51 additions and 140 deletions
64
Python/generated_cases.c.h
generated
64
Python/generated_cases.c.h
generated
|
@ -896,18 +896,13 @@
|
|||
dict = stack_pointer[-2];
|
||||
DEOPT_IF(!PyDict_CheckExact(dict), BINARY_SUBSCR);
|
||||
STAT_INC(BINARY_SUBSCR, hit);
|
||||
res = PyDict_GetItemWithError(dict, sub);
|
||||
if (res == NULL) {
|
||||
if (!_PyErr_Occurred(tstate)) {
|
||||
_PyErr_SetKeyError(sub);
|
||||
}
|
||||
Py_DECREF(dict);
|
||||
Py_DECREF(sub);
|
||||
if (true) goto pop_2_error;
|
||||
int rc = PyDict_GetItemRef(dict, sub, &res);
|
||||
if (rc == 0) {
|
||||
_PyErr_SetKeyError(sub);
|
||||
}
|
||||
Py_INCREF(res); // Do this before DECREF'ing dict, sub
|
||||
Py_DECREF(dict);
|
||||
Py_DECREF(sub);
|
||||
if (rc <= 0) goto pop_2_error;
|
||||
STACK_SHRINK(1);
|
||||
stack_pointer[-1] = res;
|
||||
DISPATCH();
|
||||
|
@ -1950,14 +1945,10 @@
|
|||
GOTO_ERROR(error);
|
||||
}
|
||||
if (v == NULL) {
|
||||
v = PyDict_GetItemWithError(GLOBALS(), name);
|
||||
if (v != NULL) {
|
||||
Py_INCREF(v);
|
||||
}
|
||||
else if (_PyErr_Occurred(tstate)) {
|
||||
if (PyDict_GetItemRef(GLOBALS(), name, &v) < 0) {
|
||||
GOTO_ERROR(error);
|
||||
}
|
||||
else {
|
||||
if (v == NULL) {
|
||||
if (PyMapping_GetOptionalItem(BUILTINS(), name, &v) < 0) {
|
||||
GOTO_ERROR(error);
|
||||
}
|
||||
|
@ -1990,14 +1981,10 @@
|
|||
GOTO_ERROR(error);
|
||||
}
|
||||
if (v == NULL) {
|
||||
v = PyDict_GetItemWithError(GLOBALS(), name);
|
||||
if (v != NULL) {
|
||||
Py_INCREF(v);
|
||||
}
|
||||
else if (_PyErr_Occurred(tstate)) {
|
||||
if (PyDict_GetItemRef(GLOBALS(), name, &v) < 0) {
|
||||
GOTO_ERROR(error);
|
||||
}
|
||||
else {
|
||||
if (v == NULL) {
|
||||
if (PyMapping_GetOptionalItem(BUILTINS(), name, &v) < 0) {
|
||||
GOTO_ERROR(error);
|
||||
}
|
||||
|
@ -2422,34 +2409,17 @@
|
|||
if (true) goto error;
|
||||
}
|
||||
/* check if __annotations__ in locals()... */
|
||||
if (PyDict_CheckExact(LOCALS())) {
|
||||
ann_dict = _PyDict_GetItemWithError(LOCALS(),
|
||||
&_Py_ID(__annotations__));
|
||||
if (ann_dict == NULL) {
|
||||
if (_PyErr_Occurred(tstate)) goto error;
|
||||
/* ...if not, create a new one */
|
||||
ann_dict = PyDict_New();
|
||||
if (ann_dict == NULL) goto error;
|
||||
err = PyDict_SetItem(LOCALS(), &_Py_ID(__annotations__),
|
||||
ann_dict);
|
||||
Py_DECREF(ann_dict);
|
||||
if (err) goto error;
|
||||
}
|
||||
if (PyMapping_GetOptionalItem(LOCALS(), &_Py_ID(__annotations__), &ann_dict) < 0) goto error;
|
||||
if (ann_dict == NULL) {
|
||||
ann_dict = PyDict_New();
|
||||
if (ann_dict == NULL) goto error;
|
||||
err = PyObject_SetItem(LOCALS(), &_Py_ID(__annotations__),
|
||||
ann_dict);
|
||||
Py_DECREF(ann_dict);
|
||||
if (err) goto error;
|
||||
}
|
||||
else {
|
||||
/* do the same if locals() is not a dict */
|
||||
if (PyMapping_GetOptionalItem(LOCALS(), &_Py_ID(__annotations__), &ann_dict) < 0) goto error;
|
||||
if (ann_dict == NULL) {
|
||||
ann_dict = PyDict_New();
|
||||
if (ann_dict == NULL) goto error;
|
||||
err = PyObject_SetItem(LOCALS(), &_Py_ID(__annotations__),
|
||||
ann_dict);
|
||||
Py_DECREF(ann_dict);
|
||||
if (err) goto error;
|
||||
}
|
||||
else {
|
||||
Py_DECREF(ann_dict);
|
||||
}
|
||||
Py_DECREF(ann_dict);
|
||||
}
|
||||
DISPATCH();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue