gh-109979: Unify _GUARD_TYPE_VERSION{,_STORE} (#110301)

Now the target for `DEOPT_IF()` is auto-filled,
we don't need a separate `_GUARD_TYPE_VERSION_STORE` uop.
This commit is contained in:
Guido van Rossum 2023-10-03 15:37:21 -07:00 committed by GitHub
parent a376a72bd9
commit 625ecbe92e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 36 additions and 63 deletions

View file

@ -490,10 +490,6 @@
break;
}
case _GUARD_TYPE_VERSION_STORE: {
break;
}
case _STORE_ATTR_SLOT: {
STACK_SHRINK(2);
break;

View file

@ -2038,7 +2038,7 @@ dummy_func(
macro(STORE_ATTR_INSTANCE_VALUE) =
unused/1 +
_GUARD_TYPE_VERSION_STORE +
_GUARD_TYPE_VERSION +
_GUARD_DORV_VALUES +
_STORE_ATTR_INSTANCE_VALUE;
@ -2083,12 +2083,6 @@ dummy_func(
Py_DECREF(owner);
}
op(_GUARD_TYPE_VERSION_STORE, (type_version/2, owner -- owner)) {
PyTypeObject *tp = Py_TYPE(owner);
assert(type_version != 0);
DEOPT_IF(tp->tp_version_tag != type_version);
}
op(_STORE_ATTR_SLOT, (index/1, value, owner --)) {
char *addr = (char *)owner + index;
STAT_INC(STORE_ATTR, hit);
@ -2100,7 +2094,7 @@ dummy_func(
macro(STORE_ATTR_SLOT) =
unused/1 +
_GUARD_TYPE_VERSION_STORE +
_GUARD_TYPE_VERSION +
_STORE_ATTR_SLOT;
family(COMPARE_OP, INLINE_CACHE_ENTRIES_COMPARE_OP) = {

View file

@ -1761,16 +1761,6 @@
break;
}
case _GUARD_TYPE_VERSION_STORE: {
PyObject *owner;
owner = stack_pointer[-1];
uint32_t type_version = (uint32_t)operand;
PyTypeObject *tp = Py_TYPE(owner);
assert(type_version != 0);
DEOPT_IF(tp->tp_version_tag != type_version, _GUARD_TYPE_VERSION_STORE);
break;
}
case _STORE_ATTR_SLOT: {
PyObject *owner;
PyObject *value;

View file

@ -2616,7 +2616,7 @@
TARGET(STORE_ATTR_INSTANCE_VALUE) {
PyObject *owner;
PyObject *value;
// _GUARD_TYPE_VERSION_STORE
// _GUARD_TYPE_VERSION
owner = stack_pointer[-1];
{
uint32_t type_version = read_u32(&next_instr[1].cache);
@ -2705,7 +2705,7 @@
TARGET(STORE_ATTR_SLOT) {
PyObject *owner;
PyObject *value;
// _GUARD_TYPE_VERSION_STORE
// _GUARD_TYPE_VERSION
owner = stack_pointer[-1];
{
uint32_t type_version = read_u32(&next_instr[1].cache);