mirror of
https://github.com/python/cpython.git
synced 2025-07-24 03:35:53 +00:00
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:
parent
a376a72bd9
commit
625ecbe92e
5 changed files with 36 additions and 63 deletions
4
Python/abstract_interp_cases.c.h
generated
4
Python/abstract_interp_cases.c.h
generated
|
@ -490,10 +490,6 @@
|
|||
break;
|
||||
}
|
||||
|
||||
case _GUARD_TYPE_VERSION_STORE: {
|
||||
break;
|
||||
}
|
||||
|
||||
case _STORE_ATTR_SLOT: {
|
||||
STACK_SHRINK(2);
|
||||
break;
|
||||
|
|
|
@ -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) = {
|
||||
|
|
10
Python/executor_cases.c.h
generated
10
Python/executor_cases.c.h
generated
|
@ -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;
|
||||
|
|
4
Python/generated_cases.c.h
generated
4
Python/generated_cases.c.h
generated
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue