gh-145214: Narrow _GUARD_TOS_ANY_{SET,DICT} by using probable type (gh-145215)

This commit is contained in:
Donghee Na 2026-03-03 09:58:38 +09:00 committed by GitHub
parent ea90b032a0
commit 6908372fb8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 1728 additions and 1061 deletions

View file

@ -1082,6 +1082,16 @@ dummy_func(
EXIT_IF(!PyAnyDict_CheckExact(o));
}
op(_GUARD_TOS_DICT, (tos -- tos)) {
PyObject *o = PyStackRef_AsPyObjectBorrow(tos);
EXIT_IF(!PyDict_CheckExact(o));
}
op(_GUARD_TOS_FROZENDICT, (tos -- tos)) {
PyObject *o = PyStackRef_AsPyObjectBorrow(tos);
EXIT_IF(!PyFrozenDict_CheckExact(o));
}
macro(BINARY_OP_SUBSCR_DICT) =
_GUARD_NOS_ANY_DICT + unused/5 + _BINARY_OP_SUBSCR_DICT + POP_TOP + POP_TOP;
@ -2931,6 +2941,16 @@ dummy_func(
DEOPT_IF(!PyAnySet_CheckExact(o));
}
op(_GUARD_TOS_SET, (tos -- tos)) {
PyObject *o = PyStackRef_AsPyObjectBorrow(tos);
DEOPT_IF(!PySet_CheckExact(o));
}
op(_GUARD_TOS_FROZENSET, (tos -- tos)) {
PyObject *o = PyStackRef_AsPyObjectBorrow(tos);
DEOPT_IF(!PyFrozenSet_CheckExact(o));
}
macro(CONTAINS_OP_SET) = _GUARD_TOS_ANY_SET + unused/1 + _CONTAINS_OP_SET + POP_TOP + POP_TOP;
op(_CONTAINS_OP_SET, (left, right -- b, l, r)) {