diff options
author | Diego Russo <diego.russo@arm.com> | 2025-05-19 15:48:55 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-19 15:48:55 -0400 |
commit | 42d03f393313d8a228a45dad1d0897ea99f5ec89 (patch) | |
tree | f736d4fbdff627bc2497d58a9f2103a93f467398 /Python/executor_cases.c.h | |
parent | 92f85ff3a07335e32a0e00a55b7b6aaf3657019b (diff) | |
download | cpython-42d03f393313d8a228a45dad1d0897ea99f5ec89.tar.gz cpython-42d03f393313d8a228a45dad1d0897ea99f5ec89.zip |
GH-131798: Split CALL_LIST_APPEND into several uops (GH-134240)
Diffstat (limited to 'Python/executor_cases.c.h')
-rw-r--r-- | Python/executor_cases.c.h | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h index 41c9bd5ba70..c5e481932e7 100644 --- a/Python/executor_cases.c.h +++ b/Python/executor_cases.c.h @@ -5276,6 +5276,17 @@ break; } + case _GUARD_NOS_NOT_NULL: { + _PyStackRef nos; + nos = stack_pointer[-2]; + PyObject *o = PyStackRef_AsPyObjectBorrow(nos); + if (o == NULL) { + UOP_STAT_INC(uopcode, miss); + JUMP_TO_JUMP_TARGET(); + } + break; + } + case _GUARD_THIRD_NULL: { _PyStackRef null; null = stack_pointer[-3]; @@ -5920,6 +5931,18 @@ break; } + case _GUARD_CALLABLE_LIST_APPEND: { + _PyStackRef callable; + callable = stack_pointer[-3]; + PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); + PyInterpreterState *interp = tstate->interp; + if (callable_o != interp->callable_cache.list_append) { + UOP_STAT_INC(uopcode, miss); + JUMP_TO_JUMP_TARGET(); + } + break; + } + case _CALL_LIST_APPEND: { _PyStackRef arg; _PyStackRef self; @@ -5929,18 +5952,8 @@ self = stack_pointer[-2]; callable = stack_pointer[-3]; assert(oparg == 1); - PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); PyObject *self_o = PyStackRef_AsPyObjectBorrow(self); - PyInterpreterState *interp = tstate->interp; - if (callable_o != interp->callable_cache.list_append) { - UOP_STAT_INC(uopcode, miss); - JUMP_TO_JUMP_TARGET(); - } - if (self_o == NULL) { - UOP_STAT_INC(uopcode, miss); - JUMP_TO_JUMP_TARGET(); - } - if (!PyList_Check(self_o)) { + if (!PyList_CheckExact(self_o)) { UOP_STAT_INC(uopcode, miss); JUMP_TO_JUMP_TARGET(); } |