mirror of
https://github.com/python/cpython.git
synced 2026-05-09 12:00:49 +00:00
Merge 49aa0101ab into d254d6ee49
This commit is contained in:
commit
3638f52bde
8 changed files with 89 additions and 1 deletions
|
|
@ -2976,6 +2976,11 @@ dummy_func(
|
|||
}
|
||||
|
||||
op(_LOAD_ATTR_CLASS, (descr/4, owner -- attr)) {
|
||||
PyTypeObject *descr_type = Py_TYPE(descr);
|
||||
PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
|
||||
EXIT_IF((descr_type->tp_flags & Py_TPFLAGS_IMMUTABLETYPE) == 0
|
||||
&& descr_type != (PyTypeObject *)owner_o);
|
||||
|
||||
STAT_INC(LOAD_ATTR, hit);
|
||||
assert(descr != NULL);
|
||||
attr = PyStackRef_FromPyObjectNew(descr);
|
||||
|
|
|
|||
9
Python/executor_cases.c.h
generated
9
Python/executor_cases.c.h
generated
|
|
@ -11967,6 +11967,15 @@
|
|||
_PyStackRef _stack_item_0 = _tos_cache0;
|
||||
owner = _stack_item_0;
|
||||
PyObject *descr = (PyObject *)CURRENT_OPERAND0_64();
|
||||
PyTypeObject *descr_type = Py_TYPE(descr);
|
||||
PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
|
||||
if ((descr_type->tp_flags & Py_TPFLAGS_IMMUTABLETYPE) == 0
|
||||
&& descr_type != (PyTypeObject *)owner_o) {
|
||||
UOP_STAT_INC(uopcode, miss);
|
||||
_tos_cache0 = owner;
|
||||
SET_CURRENT_CACHED_VALUES(1);
|
||||
JUMP_TO_JUMP_TARGET();
|
||||
}
|
||||
STAT_INC(LOAD_ATTR, hit);
|
||||
assert(descr != NULL);
|
||||
attr = PyStackRef_FromPyObjectNew(descr);
|
||||
|
|
|
|||
16
Python/generated_cases.c.h
generated
16
Python/generated_cases.c.h
generated
|
|
@ -8359,6 +8359,14 @@
|
|||
// _LOAD_ATTR_CLASS
|
||||
{
|
||||
PyObject *descr = read_obj(&this_instr[6].cache);
|
||||
PyTypeObject *descr_type = Py_TYPE(descr);
|
||||
PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
|
||||
if ((descr_type->tp_flags & Py_TPFLAGS_IMMUTABLETYPE) == 0
|
||||
&& descr_type != (PyTypeObject *)owner_o) {
|
||||
UPDATE_MISS_STATS(LOAD_ATTR);
|
||||
assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
|
||||
JUMP_TO_PREDICTED(LOAD_ATTR);
|
||||
}
|
||||
STAT_INC(LOAD_ATTR, hit);
|
||||
assert(descr != NULL);
|
||||
attr = PyStackRef_FromPyObjectNew(descr);
|
||||
|
|
@ -8427,6 +8435,14 @@
|
|||
// _LOAD_ATTR_CLASS
|
||||
{
|
||||
PyObject *descr = read_obj(&this_instr[6].cache);
|
||||
PyTypeObject *descr_type = Py_TYPE(descr);
|
||||
PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
|
||||
if ((descr_type->tp_flags & Py_TPFLAGS_IMMUTABLETYPE) == 0
|
||||
&& descr_type != (PyTypeObject *)owner_o) {
|
||||
UPDATE_MISS_STATS(LOAD_ATTR);
|
||||
assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
|
||||
JUMP_TO_PREDICTED(LOAD_ATTR);
|
||||
}
|
||||
STAT_INC(LOAD_ATTR, hit);
|
||||
assert(descr != NULL);
|
||||
attr = PyStackRef_FromPyObjectNew(descr);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue