aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Include/internal
diff options
context:
space:
mode:
Diffstat (limited to 'Include/internal')
-rw-r--r--Include/internal/mimalloc/mimalloc/internal.h8
-rw-r--r--Include/internal/mimalloc/mimalloc/types.h2
-rw-r--r--Include/internal/pycore_debug_offsets.h8
-rw-r--r--Include/internal/pycore_dict.h2
-rw-r--r--Include/internal/pycore_magic_number.h3
-rw-r--r--Include/internal/pycore_opcode_metadata.h54
-rw-r--r--Include/internal/pycore_stackref.h13
-rw-r--r--Include/internal/pycore_uop_ids.h396
-rw-r--r--Include/internal/pycore_uop_metadata.h26
9 files changed, 276 insertions, 236 deletions
diff --git a/Include/internal/mimalloc/mimalloc/internal.h b/Include/internal/mimalloc/mimalloc/internal.h
index d97f51b8eef..71b7ea702d6 100644
--- a/Include/internal/mimalloc/mimalloc/internal.h
+++ b/Include/internal/mimalloc/mimalloc/internal.h
@@ -634,10 +634,10 @@ static inline mi_block_t* mi_block_nextx( const void* null, const mi_block_t* bl
mi_track_mem_defined(block,sizeof(mi_block_t));
mi_block_t* next;
#ifdef MI_ENCODE_FREELIST
- next = (mi_block_t*)mi_ptr_decode(null, block->next, keys);
+ next = (mi_block_t*)mi_ptr_decode(null, mi_atomic_load_relaxed(&block->next), keys);
#else
MI_UNUSED(keys); MI_UNUSED(null);
- next = (mi_block_t*)block->next;
+ next = (mi_block_t*)mi_atomic_load_relaxed(&block->next);
#endif
mi_track_mem_noaccess(block,sizeof(mi_block_t));
return next;
@@ -646,10 +646,10 @@ static inline mi_block_t* mi_block_nextx( const void* null, const mi_block_t* bl
static inline void mi_block_set_nextx(const void* null, mi_block_t* block, const mi_block_t* next, const uintptr_t* keys) {
mi_track_mem_undefined(block,sizeof(mi_block_t));
#ifdef MI_ENCODE_FREELIST
- block->next = mi_ptr_encode(null, next, keys);
+ mi_atomic_store_relaxed(&block->next, mi_ptr_encode(null, next, keys));
#else
MI_UNUSED(keys); MI_UNUSED(null);
- block->next = (mi_encoded_t)next;
+ mi_atomic_store_relaxed(&block->next, (mi_encoded_t)next);
#endif
mi_track_mem_noaccess(block,sizeof(mi_block_t));
}
diff --git a/Include/internal/mimalloc/mimalloc/types.h b/Include/internal/mimalloc/mimalloc/types.h
index 354839ba955..4f77bd7bc52 100644
--- a/Include/internal/mimalloc/mimalloc/types.h
+++ b/Include/internal/mimalloc/mimalloc/types.h
@@ -235,7 +235,7 @@ typedef size_t mi_threadid_t;
// free lists contain blocks
typedef struct mi_block_s {
- mi_encoded_t next;
+ _Atomic(mi_encoded_t) next;
} mi_block_t;
diff --git a/Include/internal/pycore_debug_offsets.h b/Include/internal/pycore_debug_offsets.h
index 59d2c9d5377..1a265c59ff8 100644
--- a/Include/internal/pycore_debug_offsets.h
+++ b/Include/internal/pycore_debug_offsets.h
@@ -52,9 +52,13 @@ extern "C" {
#ifdef Py_GIL_DISABLED
# define _Py_Debug_gilruntimestate_enabled offsetof(struct _gil_runtime_state, enabled)
# define _Py_Debug_Free_Threaded 1
+# define _Py_Debug_code_object_co_tlbc offsetof(PyCodeObject, co_tlbc)
+# define _Py_Debug_interpreter_frame_tlbc_index offsetof(_PyInterpreterFrame, tlbc_index)
#else
# define _Py_Debug_gilruntimestate_enabled 0
# define _Py_Debug_Free_Threaded 0
+# define _Py_Debug_code_object_co_tlbc 0
+# define _Py_Debug_interpreter_frame_tlbc_index 0
#endif
@@ -109,6 +113,7 @@ typedef struct _Py_DebugOffsets {
uint64_t localsplus;
uint64_t owner;
uint64_t stackpointer;
+ uint64_t tlbc_index;
} interpreter_frame;
// Code object offset;
@@ -123,6 +128,7 @@ typedef struct _Py_DebugOffsets {
uint64_t localsplusnames;
uint64_t localspluskinds;
uint64_t co_code_adaptive;
+ uint64_t co_tlbc;
} code_object;
// PyObject offset;
@@ -265,6 +271,7 @@ typedef struct _Py_DebugOffsets {
.localsplus = offsetof(_PyInterpreterFrame, localsplus), \
.owner = offsetof(_PyInterpreterFrame, owner), \
.stackpointer = offsetof(_PyInterpreterFrame, stackpointer), \
+ .tlbc_index = _Py_Debug_interpreter_frame_tlbc_index, \
}, \
.code_object = { \
.size = sizeof(PyCodeObject), \
@@ -277,6 +284,7 @@ typedef struct _Py_DebugOffsets {
.localsplusnames = offsetof(PyCodeObject, co_localsplusnames), \
.localspluskinds = offsetof(PyCodeObject, co_localspluskinds), \
.co_code_adaptive = offsetof(PyCodeObject, co_code_adaptive), \
+ .co_tlbc = _Py_Debug_code_object_co_tlbc, \
}, \
.pyobject = { \
.size = sizeof(PyObject), \
diff --git a/Include/internal/pycore_dict.h b/Include/internal/pycore_dict.h
index 754eb88a85c..25bb224921a 100644
--- a/Include/internal/pycore_dict.h
+++ b/Include/internal/pycore_dict.h
@@ -150,6 +150,8 @@ extern int _PyDict_Pop_KnownHash(
Py_hash_t hash,
PyObject **result);
+extern void _PyDict_Clear_LockHeld(PyObject *op);
+
#ifdef Py_GIL_DISABLED
PyAPI_FUNC(void) _PyDict_EnsureSharedOnRead(PyDictObject *mp);
#endif
diff --git a/Include/internal/pycore_magic_number.h b/Include/internal/pycore_magic_number.h
index 22375a3b16b..3fd56c346b9 100644
--- a/Include/internal/pycore_magic_number.h
+++ b/Include/internal/pycore_magic_number.h
@@ -278,6 +278,7 @@ Known values:
Python 3.14a7 3623 (Add BUILD_INTERPOLATION & BUILD_TEMPLATE opcodes)
Python 3.14b1 3624 (Don't optimize LOAD_FAST when local is killed by DELETE_FAST)
Python 3.15a0 3650 (Initial version)
+ Python 3.15a1 3651 (Simplify LOAD_CONST)
Python 3.16 will start with 3700
@@ -290,7 +291,7 @@ PC/launcher.c must also be updated.
*/
-#define PYC_MAGIC_NUMBER 3650
+#define PYC_MAGIC_NUMBER 3651
/* This is equivalent to converting PYC_MAGIC_NUMBER to 2 bytes
(little-endian) and then appending b'\r\n'. */
#define PYC_MAGIC_NUMBER_TOKEN \
diff --git a/Include/internal/pycore_opcode_metadata.h b/Include/internal/pycore_opcode_metadata.h
index e55e26783a6..b7787653d25 100644
--- a/Include/internal/pycore_opcode_metadata.h
+++ b/Include/internal/pycore_opcode_metadata.h
@@ -334,10 +334,6 @@ int _PyOpcode_num_popped(int opcode, int oparg) {
return 0;
case LOAD_CONST:
return 0;
- case LOAD_CONST_IMMORTAL:
- return 0;
- case LOAD_CONST_MORTAL:
- return 0;
case LOAD_DEREF:
return 0;
case LOAD_FAST:
@@ -821,10 +817,6 @@ int _PyOpcode_num_pushed(int opcode, int oparg) {
return 1;
case LOAD_CONST:
return 1;
- case LOAD_CONST_IMMORTAL:
- return 1;
- case LOAD_CONST_MORTAL:
- return 1;
case LOAD_DEREF:
return 1;
case LOAD_FAST:
@@ -1121,7 +1113,7 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[267] = {
[CALL_KW_NON_PY] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[CALL_KW_PY] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[CALL_LEN] = { true, INSTR_FMT_IXC00, HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
- [CALL_LIST_APPEND] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
+ [CALL_LIST_APPEND] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[CALL_METHOD_DESCRIPTOR_FAST] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[CALL_METHOD_DESCRIPTOR_NOARGS] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
@@ -1221,8 +1213,6 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[267] = {
[LOAD_BUILD_CLASS] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[LOAD_COMMON_CONSTANT] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },
[LOAD_CONST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_CONST_FLAG },
- [LOAD_CONST_IMMORTAL] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_CONST_FLAG },
- [LOAD_CONST_MORTAL] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_CONST_FLAG },
[LOAD_DEREF] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[LOAD_FAST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_PURE_FLAG },
[LOAD_FAST_AND_CLEAR] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG },
@@ -1368,7 +1358,7 @@ _PyOpcode_macro_expansion[256] = {
[CALL_KW_NON_PY] = { .nuops = 3, .uops = { { _CHECK_IS_NOT_PY_CALLABLE_KW, OPARG_SIMPLE, 3 }, { _CALL_KW_NON_PY, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } },
[CALL_KW_PY] = { .nuops = 5, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 1 }, { _CHECK_FUNCTION_VERSION_KW, 2, 1 }, { _PY_FRAME_KW, OPARG_SIMPLE, 3 }, { _SAVE_RETURN_OFFSET, OPARG_SAVE_RETURN_OFFSET, 3 }, { _PUSH_FRAME, OPARG_SIMPLE, 3 } } },
[CALL_LEN] = { .nuops = 3, .uops = { { _GUARD_NOS_NULL, OPARG_SIMPLE, 3 }, { _GUARD_CALLABLE_LEN, OPARG_SIMPLE, 3 }, { _CALL_LEN, OPARG_SIMPLE, 3 } } },
- [CALL_LIST_APPEND] = { .nuops = 1, .uops = { { _CALL_LIST_APPEND, OPARG_SIMPLE, 3 } } },
+ [CALL_LIST_APPEND] = { .nuops = 4, .uops = { { _GUARD_CALLABLE_LIST_APPEND, OPARG_SIMPLE, 3 }, { _GUARD_NOS_NOT_NULL, OPARG_SIMPLE, 3 }, { _GUARD_NOS_LIST, OPARG_SIMPLE, 3 }, { _CALL_LIST_APPEND, OPARG_SIMPLE, 3 } } },
[CALL_METHOD_DESCRIPTOR_FAST] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_FAST, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } },
[CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } },
[CALL_METHOD_DESCRIPTOR_NOARGS] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_NOARGS, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } },
@@ -1435,8 +1425,7 @@ _PyOpcode_macro_expansion[256] = {
[LOAD_ATTR_WITH_HINT] = { .nuops = 3, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _LOAD_ATTR_WITH_HINT, 1, 3 }, { _PUSH_NULL_CONDITIONAL, OPARG_SIMPLE, 9 } } },
[LOAD_BUILD_CLASS] = { .nuops = 1, .uops = { { _LOAD_BUILD_CLASS, OPARG_SIMPLE, 0 } } },
[LOAD_COMMON_CONSTANT] = { .nuops = 1, .uops = { { _LOAD_COMMON_CONSTANT, OPARG_SIMPLE, 0 } } },
- [LOAD_CONST_IMMORTAL] = { .nuops = 1, .uops = { { _LOAD_CONST_IMMORTAL, OPARG_SIMPLE, 0 } } },
- [LOAD_CONST_MORTAL] = { .nuops = 1, .uops = { { _LOAD_CONST_MORTAL, OPARG_SIMPLE, 0 } } },
+ [LOAD_CONST] = { .nuops = 1, .uops = { { _LOAD_CONST, OPARG_SIMPLE, 0 } } },
[LOAD_DEREF] = { .nuops = 1, .uops = { { _LOAD_DEREF, OPARG_SIMPLE, 0 } } },
[LOAD_FAST] = { .nuops = 1, .uops = { { _LOAD_FAST, OPARG_SIMPLE, 0 } } },
[LOAD_FAST_AND_CLEAR] = { .nuops = 1, .uops = { { _LOAD_FAST_AND_CLEAR, OPARG_SIMPLE, 0 } } },
@@ -1667,8 +1656,6 @@ const char *_PyOpcode_OpName[267] = {
[LOAD_CLOSURE] = "LOAD_CLOSURE",
[LOAD_COMMON_CONSTANT] = "LOAD_COMMON_CONSTANT",
[LOAD_CONST] = "LOAD_CONST",
- [LOAD_CONST_IMMORTAL] = "LOAD_CONST_IMMORTAL",
- [LOAD_CONST_MORTAL] = "LOAD_CONST_MORTAL",
[LOAD_DEREF] = "LOAD_DEREF",
[LOAD_FAST] = "LOAD_FAST",
[LOAD_FAST_AND_CLEAR] = "LOAD_FAST_AND_CLEAR",
@@ -1787,6 +1774,37 @@ const uint8_t _PyOpcode_Caches[256] = {
extern const uint8_t _PyOpcode_Deopt[256];
#ifdef NEED_OPCODE_METADATA
const uint8_t _PyOpcode_Deopt[256] = {
+ [121] = 121,
+ [122] = 122,
+ [123] = 123,
+ [124] = 124,
+ [125] = 125,
+ [126] = 126,
+ [127] = 127,
+ [210] = 210,
+ [211] = 211,
+ [212] = 212,
+ [213] = 213,
+ [214] = 214,
+ [215] = 215,
+ [216] = 216,
+ [217] = 217,
+ [218] = 218,
+ [219] = 219,
+ [220] = 220,
+ [221] = 221,
+ [222] = 222,
+ [223] = 223,
+ [224] = 224,
+ [225] = 225,
+ [226] = 226,
+ [227] = 227,
+ [228] = 228,
+ [229] = 229,
+ [230] = 230,
+ [231] = 231,
+ [232] = 232,
+ [233] = 233,
[BINARY_OP] = BINARY_OP,
[BINARY_OP_ADD_FLOAT] = BINARY_OP,
[BINARY_OP_ADD_INT] = BINARY_OP,
@@ -1930,8 +1948,6 @@ const uint8_t _PyOpcode_Deopt[256] = {
[LOAD_BUILD_CLASS] = LOAD_BUILD_CLASS,
[LOAD_COMMON_CONSTANT] = LOAD_COMMON_CONSTANT,
[LOAD_CONST] = LOAD_CONST,
- [LOAD_CONST_IMMORTAL] = LOAD_CONST,
- [LOAD_CONST_MORTAL] = LOAD_CONST,
[LOAD_DEREF] = LOAD_DEREF,
[LOAD_FAST] = LOAD_FAST,
[LOAD_FAST_AND_CLEAR] = LOAD_FAST_AND_CLEAR,
@@ -2026,6 +2042,8 @@ const uint8_t _PyOpcode_Deopt[256] = {
case 125: \
case 126: \
case 127: \
+ case 210: \
+ case 211: \
case 212: \
case 213: \
case 214: \
diff --git a/Include/internal/pycore_stackref.h b/Include/internal/pycore_stackref.h
index dc5e56102fa..3ead6bc63c1 100644
--- a/Include/internal/pycore_stackref.h
+++ b/Include/internal/pycore_stackref.h
@@ -134,12 +134,11 @@ _PyStackRef_FromPyObjectSteal(PyObject *obj, const char *filename, int linenumbe
#define PyStackRef_FromPyObjectSteal(obj) _PyStackRef_FromPyObjectSteal(_PyObject_CAST(obj), __FILE__, __LINE__)
static inline _PyStackRef
-_PyStackRef_FromPyObjectImmortal(PyObject *obj, const char *filename, int linenumber)
+_PyStackRef_FromPyObjectBorrow(PyObject *obj, const char *filename, int linenumber)
{
- assert(_Py_IsImmortal(obj));
return _Py_stackref_create(obj, filename, linenumber);
}
-#define PyStackRef_FromPyObjectImmortal(obj) _PyStackRef_FromPyObjectImmortal(_PyObject_CAST(obj), __FILE__, __LINE__)
+#define PyStackRef_FromPyObjectBorrow(obj) _PyStackRef_FromPyObjectBorrow(_PyObject_CAST(obj), __FILE__, __LINE__)
static inline void
_PyStackRef_CLOSE(_PyStackRef ref, const char *filename, int linenumber)
@@ -366,15 +365,14 @@ PyStackRef_FromPyObjectNew(PyObject *obj)
#define PyStackRef_FromPyObjectNew(obj) PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
static inline _PyStackRef
-PyStackRef_FromPyObjectImmortal(PyObject *obj)
+PyStackRef_FromPyObjectBorrow(PyObject *obj)
{
// Make sure we don't take an already tagged value.
assert(((uintptr_t)obj & Py_TAG_BITS) == 0);
assert(obj != NULL);
- assert(_Py_IsImmortal(obj));
return (_PyStackRef){ .bits = (uintptr_t)obj | Py_TAG_DEFERRED };
}
-#define PyStackRef_FromPyObjectImmortal(obj) PyStackRef_FromPyObjectImmortal(_PyObject_CAST(obj))
+#define PyStackRef_FromPyObjectBorrow(obj) PyStackRef_FromPyObjectBorrow(_PyObject_CAST(obj))
#define PyStackRef_CLOSE(REF) \
do { \
@@ -582,9 +580,8 @@ _PyStackRef_FromPyObjectNewMortal(PyObject *obj)
/* Create a new reference from an object with an embedded reference count */
static inline _PyStackRef
-PyStackRef_FromPyObjectImmortal(PyObject *obj)
+PyStackRef_FromPyObjectBorrow(PyObject *obj)
{
- assert(_Py_IsImmortal(obj));
return (_PyStackRef){ .bits = (uintptr_t)obj | Py_TAG_REFCNT};
}
diff --git a/Include/internal/pycore_uop_ids.h b/Include/internal/pycore_uop_ids.h
index 71a288a3a39..4c270211d4c 100644
--- a/Include/internal/pycore_uop_ids.h
+++ b/Include/internal/pycore_uop_ids.h
@@ -46,124 +46,126 @@ extern "C" {
#define _CALL_ISINSTANCE 324
#define _CALL_KW_NON_PY 325
#define _CALL_LEN 326
-#define _CALL_LIST_APPEND CALL_LIST_APPEND
-#define _CALL_METHOD_DESCRIPTOR_FAST 327
-#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 328
-#define _CALL_METHOD_DESCRIPTOR_NOARGS 329
-#define _CALL_METHOD_DESCRIPTOR_O 330
-#define _CALL_NON_PY_GENERAL 331
-#define _CALL_STR_1 332
-#define _CALL_TUPLE_1 333
-#define _CALL_TYPE_1 334
-#define _CHECK_AND_ALLOCATE_OBJECT 335
-#define _CHECK_ATTR_CLASS 336
-#define _CHECK_ATTR_METHOD_LAZY_DICT 337
-#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS 338
+#define _CALL_LIST_APPEND 327
+#define _CALL_METHOD_DESCRIPTOR_FAST 328
+#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 329
+#define _CALL_METHOD_DESCRIPTOR_NOARGS 330
+#define _CALL_METHOD_DESCRIPTOR_O 331
+#define _CALL_NON_PY_GENERAL 332
+#define _CALL_STR_1 333
+#define _CALL_TUPLE_1 334
+#define _CALL_TYPE_1 335
+#define _CHECK_AND_ALLOCATE_OBJECT 336
+#define _CHECK_ATTR_CLASS 337
+#define _CHECK_ATTR_METHOD_LAZY_DICT 338
+#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS 339
#define _CHECK_EG_MATCH CHECK_EG_MATCH
#define _CHECK_EXC_MATCH CHECK_EXC_MATCH
-#define _CHECK_FUNCTION 339
-#define _CHECK_FUNCTION_EXACT_ARGS 340
-#define _CHECK_FUNCTION_VERSION 341
-#define _CHECK_FUNCTION_VERSION_INLINE 342
-#define _CHECK_FUNCTION_VERSION_KW 343
-#define _CHECK_IS_NOT_PY_CALLABLE 344
-#define _CHECK_IS_NOT_PY_CALLABLE_KW 345
-#define _CHECK_MANAGED_OBJECT_HAS_VALUES 346
-#define _CHECK_METHOD_VERSION 347
-#define _CHECK_METHOD_VERSION_KW 348
-#define _CHECK_PEP_523 349
-#define _CHECK_PERIODIC 350
-#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM 351
-#define _CHECK_RECURSION_REMAINING 352
-#define _CHECK_STACK_SPACE 353
-#define _CHECK_STACK_SPACE_OPERAND 354
-#define _CHECK_VALIDITY 355
-#define _COMPARE_OP 356
-#define _COMPARE_OP_FLOAT 357
-#define _COMPARE_OP_INT 358
-#define _COMPARE_OP_STR 359
-#define _CONTAINS_OP 360
-#define _CONTAINS_OP_DICT 361
-#define _CONTAINS_OP_SET 362
+#define _CHECK_FUNCTION 340
+#define _CHECK_FUNCTION_EXACT_ARGS 341
+#define _CHECK_FUNCTION_VERSION 342
+#define _CHECK_FUNCTION_VERSION_INLINE 343
+#define _CHECK_FUNCTION_VERSION_KW 344
+#define _CHECK_IS_NOT_PY_CALLABLE 345
+#define _CHECK_IS_NOT_PY_CALLABLE_KW 346
+#define _CHECK_MANAGED_OBJECT_HAS_VALUES 347
+#define _CHECK_METHOD_VERSION 348
+#define _CHECK_METHOD_VERSION_KW 349
+#define _CHECK_PEP_523 350
+#define _CHECK_PERIODIC 351
+#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM 352
+#define _CHECK_RECURSION_REMAINING 353
+#define _CHECK_STACK_SPACE 354
+#define _CHECK_STACK_SPACE_OPERAND 355
+#define _CHECK_VALIDITY 356
+#define _COMPARE_OP 357
+#define _COMPARE_OP_FLOAT 358
+#define _COMPARE_OP_INT 359
+#define _COMPARE_OP_STR 360
+#define _CONTAINS_OP 361
+#define _CONTAINS_OP_DICT 362
+#define _CONTAINS_OP_SET 363
#define _CONVERT_VALUE CONVERT_VALUE
#define _COPY COPY
#define _COPY_FREE_VARS COPY_FREE_VARS
-#define _CREATE_INIT_FRAME 363
+#define _CREATE_INIT_FRAME 364
#define _DELETE_ATTR DELETE_ATTR
#define _DELETE_DEREF DELETE_DEREF
#define _DELETE_FAST DELETE_FAST
#define _DELETE_GLOBAL DELETE_GLOBAL
#define _DELETE_NAME DELETE_NAME
#define _DELETE_SUBSCR DELETE_SUBSCR
-#define _DEOPT 364
+#define _DEOPT 365
#define _DICT_MERGE DICT_MERGE
#define _DICT_UPDATE DICT_UPDATE
-#define _DO_CALL 365
-#define _DO_CALL_FUNCTION_EX 366
-#define _DO_CALL_KW 367
+#define _DO_CALL 366
+#define _DO_CALL_FUNCTION_EX 367
+#define _DO_CALL_KW 368
#define _END_FOR END_FOR
#define _END_SEND END_SEND
-#define _ERROR_POP_N 368
+#define _ERROR_POP_N 369
#define _EXIT_INIT_CHECK EXIT_INIT_CHECK
-#define _EXPAND_METHOD 369
-#define _EXPAND_METHOD_KW 370
-#define _FATAL_ERROR 371
+#define _EXPAND_METHOD 370
+#define _EXPAND_METHOD_KW 371
+#define _FATAL_ERROR 372
#define _FORMAT_SIMPLE FORMAT_SIMPLE
#define _FORMAT_WITH_SPEC FORMAT_WITH_SPEC
-#define _FOR_ITER 372
-#define _FOR_ITER_GEN_FRAME 373
-#define _FOR_ITER_TIER_TWO 374
+#define _FOR_ITER 373
+#define _FOR_ITER_GEN_FRAME 374
+#define _FOR_ITER_TIER_TWO 375
#define _GET_AITER GET_AITER
#define _GET_ANEXT GET_ANEXT
#define _GET_AWAITABLE GET_AWAITABLE
#define _GET_ITER GET_ITER
#define _GET_LEN GET_LEN
#define _GET_YIELD_FROM_ITER GET_YIELD_FROM_ITER
-#define _GUARD_BINARY_OP_EXTEND 375
-#define _GUARD_CALLABLE_ISINSTANCE 376
-#define _GUARD_CALLABLE_LEN 377
-#define _GUARD_CALLABLE_STR_1 378
-#define _GUARD_CALLABLE_TUPLE_1 379
-#define _GUARD_CALLABLE_TYPE_1 380
-#define _GUARD_DORV_NO_DICT 381
-#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 382
-#define _GUARD_GLOBALS_VERSION 383
-#define _GUARD_IS_FALSE_POP 384
-#define _GUARD_IS_NONE_POP 385
-#define _GUARD_IS_NOT_NONE_POP 386
-#define _GUARD_IS_TRUE_POP 387
-#define _GUARD_KEYS_VERSION 388
-#define _GUARD_NOS_DICT 389
-#define _GUARD_NOS_FLOAT 390
-#define _GUARD_NOS_INT 391
-#define _GUARD_NOS_LIST 392
-#define _GUARD_NOS_NULL 393
-#define _GUARD_NOS_TUPLE 394
-#define _GUARD_NOS_UNICODE 395
-#define _GUARD_NOT_EXHAUSTED_LIST 396
-#define _GUARD_NOT_EXHAUSTED_RANGE 397
-#define _GUARD_NOT_EXHAUSTED_TUPLE 398
-#define _GUARD_THIRD_NULL 399
-#define _GUARD_TOS_ANY_SET 400
-#define _GUARD_TOS_DICT 401
-#define _GUARD_TOS_FLOAT 402
-#define _GUARD_TOS_INT 403
-#define _GUARD_TOS_LIST 404
-#define _GUARD_TOS_SLICE 405
-#define _GUARD_TOS_TUPLE 406
-#define _GUARD_TOS_UNICODE 407
-#define _GUARD_TYPE_VERSION 408
-#define _GUARD_TYPE_VERSION_AND_LOCK 409
+#define _GUARD_BINARY_OP_EXTEND 376
+#define _GUARD_CALLABLE_ISINSTANCE 377
+#define _GUARD_CALLABLE_LEN 378
+#define _GUARD_CALLABLE_LIST_APPEND 379
+#define _GUARD_CALLABLE_STR_1 380
+#define _GUARD_CALLABLE_TUPLE_1 381
+#define _GUARD_CALLABLE_TYPE_1 382
+#define _GUARD_DORV_NO_DICT 383
+#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 384
+#define _GUARD_GLOBALS_VERSION 385
+#define _GUARD_IS_FALSE_POP 386
+#define _GUARD_IS_NONE_POP 387
+#define _GUARD_IS_NOT_NONE_POP 388
+#define _GUARD_IS_TRUE_POP 389
+#define _GUARD_KEYS_VERSION 390
+#define _GUARD_NOS_DICT 391
+#define _GUARD_NOS_FLOAT 392
+#define _GUARD_NOS_INT 393
+#define _GUARD_NOS_LIST 394
+#define _GUARD_NOS_NOT_NULL 395
+#define _GUARD_NOS_NULL 396
+#define _GUARD_NOS_TUPLE 397
+#define _GUARD_NOS_UNICODE 398
+#define _GUARD_NOT_EXHAUSTED_LIST 399
+#define _GUARD_NOT_EXHAUSTED_RANGE 400
+#define _GUARD_NOT_EXHAUSTED_TUPLE 401
+#define _GUARD_THIRD_NULL 402
+#define _GUARD_TOS_ANY_SET 403
+#define _GUARD_TOS_DICT 404
+#define _GUARD_TOS_FLOAT 405
+#define _GUARD_TOS_INT 406
+#define _GUARD_TOS_LIST 407
+#define _GUARD_TOS_SLICE 408
+#define _GUARD_TOS_TUPLE 409
+#define _GUARD_TOS_UNICODE 410
+#define _GUARD_TYPE_VERSION 411
+#define _GUARD_TYPE_VERSION_AND_LOCK 412
#define _IMPORT_FROM IMPORT_FROM
#define _IMPORT_NAME IMPORT_NAME
-#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS 410
-#define _INIT_CALL_PY_EXACT_ARGS 411
-#define _INIT_CALL_PY_EXACT_ARGS_0 412
-#define _INIT_CALL_PY_EXACT_ARGS_1 413
-#define _INIT_CALL_PY_EXACT_ARGS_2 414
-#define _INIT_CALL_PY_EXACT_ARGS_3 415
-#define _INIT_CALL_PY_EXACT_ARGS_4 416
-#define _INSERT_NULL 417
+#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS 413
+#define _INIT_CALL_PY_EXACT_ARGS 414
+#define _INIT_CALL_PY_EXACT_ARGS_0 415
+#define _INIT_CALL_PY_EXACT_ARGS_1 416
+#define _INIT_CALL_PY_EXACT_ARGS_2 417
+#define _INIT_CALL_PY_EXACT_ARGS_3 418
+#define _INIT_CALL_PY_EXACT_ARGS_4 419
+#define _INSERT_NULL 420
#define _INSTRUMENTED_FOR_ITER INSTRUMENTED_FOR_ITER
#define _INSTRUMENTED_INSTRUCTION INSTRUMENTED_INSTRUCTION
#define _INSTRUMENTED_JUMP_FORWARD INSTRUMENTED_JUMP_FORWARD
@@ -173,163 +175,163 @@ extern "C" {
#define _INSTRUMENTED_POP_JUMP_IF_NONE INSTRUMENTED_POP_JUMP_IF_NONE
#define _INSTRUMENTED_POP_JUMP_IF_NOT_NONE INSTRUMENTED_POP_JUMP_IF_NOT_NONE
#define _INSTRUMENTED_POP_JUMP_IF_TRUE INSTRUMENTED_POP_JUMP_IF_TRUE
-#define _IS_NONE 418
+#define _IS_NONE 421
#define _IS_OP IS_OP
-#define _ITER_CHECK_LIST 419
-#define _ITER_CHECK_RANGE 420
-#define _ITER_CHECK_TUPLE 421
-#define _ITER_JUMP_LIST 422
-#define _ITER_JUMP_RANGE 423
-#define _ITER_JUMP_TUPLE 424
-#define _ITER_NEXT_LIST 425
-#define _ITER_NEXT_LIST_TIER_TWO 426
-#define _ITER_NEXT_RANGE 427
-#define _ITER_NEXT_TUPLE 428
-#define _JUMP_TO_TOP 429
+#define _ITER_CHECK_LIST 422
+#define _ITER_CHECK_RANGE 423
+#define _ITER_CHECK_TUPLE 424
+#define _ITER_JUMP_LIST 425
+#define _ITER_JUMP_RANGE 426
+#define _ITER_JUMP_TUPLE 427
+#define _ITER_NEXT_LIST 428
+#define _ITER_NEXT_LIST_TIER_TWO 429
+#define _ITER_NEXT_RANGE 430
+#define _ITER_NEXT_TUPLE 431
+#define _JUMP_TO_TOP 432
#define _LIST_APPEND LIST_APPEND
#define _LIST_EXTEND LIST_EXTEND
-#define _LOAD_ATTR 430
-#define _LOAD_ATTR_CLASS 431
+#define _LOAD_ATTR 433
+#define _LOAD_ATTR_CLASS 434
#define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN
-#define _LOAD_ATTR_INSTANCE_VALUE 432
-#define _LOAD_ATTR_METHOD_LAZY_DICT 433
-#define _LOAD_ATTR_METHOD_NO_DICT 434
-#define _LOAD_ATTR_METHOD_WITH_VALUES 435
-#define _LOAD_ATTR_MODULE 436
-#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 437
-#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 438
-#define _LOAD_ATTR_PROPERTY_FRAME 439
-#define _LOAD_ATTR_SLOT 440
-#define _LOAD_ATTR_WITH_HINT 441
+#define _LOAD_ATTR_INSTANCE_VALUE 435
+#define _LOAD_ATTR_METHOD_LAZY_DICT 436
+#define _LOAD_ATTR_METHOD_NO_DICT 437
+#define _LOAD_ATTR_METHOD_WITH_VALUES 438
+#define _LOAD_ATTR_MODULE 439
+#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 440
+#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 441
+#define _LOAD_ATTR_PROPERTY_FRAME 442
+#define _LOAD_ATTR_SLOT 443
+#define _LOAD_ATTR_WITH_HINT 444
#define _LOAD_BUILD_CLASS LOAD_BUILD_CLASS
-#define _LOAD_BYTECODE 442
+#define _LOAD_BYTECODE 445
#define _LOAD_COMMON_CONSTANT LOAD_COMMON_CONSTANT
#define _LOAD_CONST LOAD_CONST
-#define _LOAD_CONST_IMMORTAL LOAD_CONST_IMMORTAL
-#define _LOAD_CONST_INLINE 443
-#define _LOAD_CONST_INLINE_BORROW 444
-#define _LOAD_CONST_MORTAL LOAD_CONST_MORTAL
+#define _LOAD_CONST_INLINE 446
+#define _LOAD_CONST_INLINE_BORROW 447
#define _LOAD_DEREF LOAD_DEREF
-#define _LOAD_FAST 445
-#define _LOAD_FAST_0 446
-#define _LOAD_FAST_1 447
-#define _LOAD_FAST_2 448
-#define _LOAD_FAST_3 449
-#define _LOAD_FAST_4 450
-#define _LOAD_FAST_5 451
-#define _LOAD_FAST_6 452
-#define _LOAD_FAST_7 453
+#define _LOAD_FAST 448
+#define _LOAD_FAST_0 449
+#define _LOAD_FAST_1 450
+#define _LOAD_FAST_2 451
+#define _LOAD_FAST_3 452
+#define _LOAD_FAST_4 453
+#define _LOAD_FAST_5 454
+#define _LOAD_FAST_6 455
+#define _LOAD_FAST_7 456
#define _LOAD_FAST_AND_CLEAR LOAD_FAST_AND_CLEAR
-#define _LOAD_FAST_BORROW 454
-#define _LOAD_FAST_BORROW_0 455
-#define _LOAD_FAST_BORROW_1 456
-#define _LOAD_FAST_BORROW_2 457
-#define _LOAD_FAST_BORROW_3 458
-#define _LOAD_FAST_BORROW_4 459
-#define _LOAD_FAST_BORROW_5 460
-#define _LOAD_FAST_BORROW_6 461
-#define _LOAD_FAST_BORROW_7 462
+#define _LOAD_FAST_BORROW 457
+#define _LOAD_FAST_BORROW_0 458
+#define _LOAD_FAST_BORROW_1 459
+#define _LOAD_FAST_BORROW_2 460
+#define _LOAD_FAST_BORROW_3 461
+#define _LOAD_FAST_BORROW_4 462
+#define _LOAD_FAST_BORROW_5 463
+#define _LOAD_FAST_BORROW_6 464
+#define _LOAD_FAST_BORROW_7 465
#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW LOAD_FAST_BORROW_LOAD_FAST_BORROW
#define _LOAD_FAST_CHECK LOAD_FAST_CHECK
#define _LOAD_FAST_LOAD_FAST LOAD_FAST_LOAD_FAST
#define _LOAD_FROM_DICT_OR_DEREF LOAD_FROM_DICT_OR_DEREF
#define _LOAD_FROM_DICT_OR_GLOBALS LOAD_FROM_DICT_OR_GLOBALS
-#define _LOAD_GLOBAL 463
-#define _LOAD_GLOBAL_BUILTINS 464
-#define _LOAD_GLOBAL_MODULE 465
+#define _LOAD_GLOBAL 466
+#define _LOAD_GLOBAL_BUILTINS 467
+#define _LOAD_GLOBAL_MODULE 468
#define _LOAD_LOCALS LOAD_LOCALS
#define _LOAD_NAME LOAD_NAME
-#define _LOAD_SMALL_INT 466
-#define _LOAD_SMALL_INT_0 467
-#define _LOAD_SMALL_INT_1 468
-#define _LOAD_SMALL_INT_2 469
-#define _LOAD_SMALL_INT_3 470
-#define _LOAD_SPECIAL 471
+#define _LOAD_SMALL_INT 469
+#define _LOAD_SMALL_INT_0 470
+#define _LOAD_SMALL_INT_1 471
+#define _LOAD_SMALL_INT_2 472
+#define _LOAD_SMALL_INT_3 473
+#define _LOAD_SPECIAL 474
#define _LOAD_SUPER_ATTR_ATTR LOAD_SUPER_ATTR_ATTR
#define _LOAD_SUPER_ATTR_METHOD LOAD_SUPER_ATTR_METHOD
-#define _MAKE_CALLARGS_A_TUPLE 472
+#define _MAKE_CALLARGS_A_TUPLE 475
#define _MAKE_CELL MAKE_CELL
#define _MAKE_FUNCTION MAKE_FUNCTION
-#define _MAKE_WARM 473
+#define _MAKE_WARM 476
#define _MAP_ADD MAP_ADD
#define _MATCH_CLASS MATCH_CLASS
#define _MATCH_KEYS MATCH_KEYS
#define _MATCH_MAPPING MATCH_MAPPING
#define _MATCH_SEQUENCE MATCH_SEQUENCE
-#define _MAYBE_EXPAND_METHOD 474
-#define _MAYBE_EXPAND_METHOD_KW 475
-#define _MONITOR_CALL 476
-#define _MONITOR_CALL_KW 477
-#define _MONITOR_JUMP_BACKWARD 478
-#define _MONITOR_RESUME 479
+#define _MAYBE_EXPAND_METHOD 477
+#define _MAYBE_EXPAND_METHOD_KW 478
+#define _MONITOR_CALL 479
+#define _MONITOR_CALL_KW 480
+#define _MONITOR_JUMP_BACKWARD 481
+#define _MONITOR_RESUME 482
#define _NOP NOP
+#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW 483
#define _POP_EXCEPT POP_EXCEPT
-#define _POP_JUMP_IF_FALSE 480
-#define _POP_JUMP_IF_TRUE 481
+#define _POP_JUMP_IF_FALSE 484
+#define _POP_JUMP_IF_TRUE 485
#define _POP_TOP POP_TOP
-#define _POP_TOP_LOAD_CONST_INLINE 482
-#define _POP_TOP_LOAD_CONST_INLINE_BORROW 483
-#define _POP_TWO_LOAD_CONST_INLINE_BORROW 484
+#define _POP_TOP_LOAD_CONST_INLINE 486
+#define _POP_TOP_LOAD_CONST_INLINE_BORROW 487
+#define _POP_TWO 488
+#define _POP_TWO_LOAD_CONST_INLINE_BORROW 489
#define _PUSH_EXC_INFO PUSH_EXC_INFO
-#define _PUSH_FRAME 485
+#define _PUSH_FRAME 490
#define _PUSH_NULL PUSH_NULL
-#define _PUSH_NULL_CONDITIONAL 486
-#define _PY_FRAME_GENERAL 487
-#define _PY_FRAME_KW 488
-#define _QUICKEN_RESUME 489
-#define _REPLACE_WITH_TRUE 490
+#define _PUSH_NULL_CONDITIONAL 491
+#define _PY_FRAME_GENERAL 492
+#define _PY_FRAME_KW 493
+#define _QUICKEN_RESUME 494
+#define _REPLACE_WITH_TRUE 495
#define _RESUME_CHECK RESUME_CHECK
#define _RETURN_GENERATOR RETURN_GENERATOR
#define _RETURN_VALUE RETURN_VALUE
-#define _SAVE_RETURN_OFFSET 491
-#define _SEND 492
-#define _SEND_GEN_FRAME 493
+#define _SAVE_RETURN_OFFSET 496
+#define _SEND 497
+#define _SEND_GEN_FRAME 498
#define _SETUP_ANNOTATIONS SETUP_ANNOTATIONS
#define _SET_ADD SET_ADD
#define _SET_FUNCTION_ATTRIBUTE SET_FUNCTION_ATTRIBUTE
#define _SET_UPDATE SET_UPDATE
-#define _START_EXECUTOR 494
-#define _STORE_ATTR 495
-#define _STORE_ATTR_INSTANCE_VALUE 496
-#define _STORE_ATTR_SLOT 497
-#define _STORE_ATTR_WITH_HINT 498
+#define _START_EXECUTOR 499
+#define _STORE_ATTR 500
+#define _STORE_ATTR_INSTANCE_VALUE 501
+#define _STORE_ATTR_SLOT 502
+#define _STORE_ATTR_WITH_HINT 503
#define _STORE_DEREF STORE_DEREF
-#define _STORE_FAST 499
-#define _STORE_FAST_0 500
-#define _STORE_FAST_1 501
-#define _STORE_FAST_2 502
-#define _STORE_FAST_3 503
-#define _STORE_FAST_4 504
-#define _STORE_FAST_5 505
-#define _STORE_FAST_6 506
-#define _STORE_FAST_7 507
+#define _STORE_FAST 504
+#define _STORE_FAST_0 505
+#define _STORE_FAST_1 506
+#define _STORE_FAST_2 507
+#define _STORE_FAST_3 508
+#define _STORE_FAST_4 509
+#define _STORE_FAST_5 510
+#define _STORE_FAST_6 511
+#define _STORE_FAST_7 512
#define _STORE_FAST_LOAD_FAST STORE_FAST_LOAD_FAST
#define _STORE_FAST_STORE_FAST STORE_FAST_STORE_FAST
#define _STORE_GLOBAL STORE_GLOBAL
#define _STORE_NAME STORE_NAME
-#define _STORE_SLICE 508
-#define _STORE_SUBSCR 509
-#define _STORE_SUBSCR_DICT 510
-#define _STORE_SUBSCR_LIST_INT 511
+#define _STORE_SLICE 513
+#define _STORE_SUBSCR 514
+#define _STORE_SUBSCR_DICT 515
+#define _STORE_SUBSCR_LIST_INT 516
#define _SWAP SWAP
-#define _TIER2_RESUME_CHECK 512
-#define _TO_BOOL 513
+#define _TIER2_RESUME_CHECK 517
+#define _TO_BOOL 518
#define _TO_BOOL_BOOL TO_BOOL_BOOL
#define _TO_BOOL_INT TO_BOOL_INT
-#define _TO_BOOL_LIST 514
+#define _TO_BOOL_LIST 519
#define _TO_BOOL_NONE TO_BOOL_NONE
-#define _TO_BOOL_STR 515
+#define _TO_BOOL_STR 520
#define _UNARY_INVERT UNARY_INVERT
#define _UNARY_NEGATIVE UNARY_NEGATIVE
#define _UNARY_NOT UNARY_NOT
#define _UNPACK_EX UNPACK_EX
-#define _UNPACK_SEQUENCE 516
-#define _UNPACK_SEQUENCE_LIST 517
-#define _UNPACK_SEQUENCE_TUPLE 518
-#define _UNPACK_SEQUENCE_TWO_TUPLE 519
+#define _UNPACK_SEQUENCE 521
+#define _UNPACK_SEQUENCE_LIST 522
+#define _UNPACK_SEQUENCE_TUPLE 523
+#define _UNPACK_SEQUENCE_TWO_TUPLE 524
#define _WITH_EXCEPT_START WITH_EXCEPT_START
#define _YIELD_VALUE YIELD_VALUE
-#define MAX_UOP_ID 519
+#define MAX_UOP_ID 524
#ifdef __cplusplus
}
diff --git a/Include/internal/pycore_uop_metadata.h b/Include/internal/pycore_uop_metadata.h
index 88a2e538447..5f8c4f3210a 100644
--- a/Include/internal/pycore_uop_metadata.h
+++ b/Include/internal/pycore_uop_metadata.h
@@ -45,8 +45,7 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = {
[_LOAD_FAST_AND_CLEAR] = HAS_ARG_FLAG | HAS_LOCAL_FLAG,
[_LOAD_FAST_LOAD_FAST] = HAS_ARG_FLAG | HAS_LOCAL_FLAG,
[_LOAD_FAST_BORROW_LOAD_FAST_BORROW] = HAS_ARG_FLAG | HAS_LOCAL_FLAG,
- [_LOAD_CONST_MORTAL] = HAS_ARG_FLAG | HAS_CONST_FLAG,
- [_LOAD_CONST_IMMORTAL] = HAS_ARG_FLAG | HAS_CONST_FLAG,
+ [_LOAD_CONST] = HAS_ARG_FLAG | HAS_CONST_FLAG,
[_LOAD_SMALL_INT_0] = 0,
[_LOAD_SMALL_INT_1] = 0,
[_LOAD_SMALL_INT_2] = 0,
@@ -64,6 +63,7 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = {
[_STORE_FAST_LOAD_FAST] = HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ESCAPES_FLAG,
[_STORE_FAST_STORE_FAST] = HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ESCAPES_FLAG,
[_POP_TOP] = HAS_ESCAPES_FLAG | HAS_PURE_FLAG,
+ [_POP_TWO] = HAS_ESCAPES_FLAG,
[_PUSH_NULL] = HAS_PURE_FLAG,
[_END_FOR] = HAS_ESCAPES_FLAG | HAS_NO_SAVE_IP_FLAG,
[_END_SEND] = HAS_ESCAPES_FLAG | HAS_PURE_FLAG,
@@ -247,6 +247,7 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = {
[_INIT_CALL_PY_EXACT_ARGS] = HAS_ARG_FLAG | HAS_PURE_FLAG,
[_PUSH_FRAME] = 0,
[_GUARD_NOS_NULL] = HAS_DEOPT_FLAG,
+ [_GUARD_NOS_NOT_NULL] = HAS_EXIT_FLAG,
[_GUARD_THIRD_NULL] = HAS_DEOPT_FLAG,
[_GUARD_CALLABLE_TYPE_1] = HAS_DEOPT_FLAG,
[_CALL_TYPE_1] = HAS_ARG_FLAG | HAS_ESCAPES_FLAG,
@@ -265,6 +266,7 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = {
[_CALL_LEN] = HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG,
[_GUARD_CALLABLE_ISINSTANCE] = HAS_DEOPT_FLAG,
[_CALL_ISINSTANCE] = HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG,
+ [_GUARD_CALLABLE_LIST_APPEND] = HAS_DEOPT_FLAG,
[_CALL_LIST_APPEND] = HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_CALL_METHOD_DESCRIPTOR_O] = HAS_ARG_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = HAS_ARG_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
@@ -303,6 +305,7 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = {
[_LOAD_CONST_INLINE_BORROW] = HAS_PURE_FLAG,
[_POP_TOP_LOAD_CONST_INLINE_BORROW] = HAS_ESCAPES_FLAG | HAS_PURE_FLAG,
[_POP_TWO_LOAD_CONST_INLINE_BORROW] = HAS_ESCAPES_FLAG | HAS_PURE_FLAG,
+ [_POP_CALL_TWO_LOAD_CONST_INLINE_BORROW] = HAS_ESCAPES_FLAG | HAS_PURE_FLAG,
[_CHECK_FUNCTION] = HAS_DEOPT_FLAG,
[_START_EXECUTOR] = 0,
[_MAKE_WARM] = 0,
@@ -429,6 +432,7 @@ const char *const _PyOpcode_uop_name[MAX_UOP_ID+1] = {
[_GUARD_BINARY_OP_EXTEND] = "_GUARD_BINARY_OP_EXTEND",
[_GUARD_CALLABLE_ISINSTANCE] = "_GUARD_CALLABLE_ISINSTANCE",
[_GUARD_CALLABLE_LEN] = "_GUARD_CALLABLE_LEN",
+ [_GUARD_CALLABLE_LIST_APPEND] = "_GUARD_CALLABLE_LIST_APPEND",
[_GUARD_CALLABLE_STR_1] = "_GUARD_CALLABLE_STR_1",
[_GUARD_CALLABLE_TUPLE_1] = "_GUARD_CALLABLE_TUPLE_1",
[_GUARD_CALLABLE_TYPE_1] = "_GUARD_CALLABLE_TYPE_1",
@@ -444,6 +448,7 @@ const char *const _PyOpcode_uop_name[MAX_UOP_ID+1] = {
[_GUARD_NOS_FLOAT] = "_GUARD_NOS_FLOAT",
[_GUARD_NOS_INT] = "_GUARD_NOS_INT",
[_GUARD_NOS_LIST] = "_GUARD_NOS_LIST",
+ [_GUARD_NOS_NOT_NULL] = "_GUARD_NOS_NOT_NULL",
[_GUARD_NOS_NULL] = "_GUARD_NOS_NULL",
[_GUARD_NOS_TUPLE] = "_GUARD_NOS_TUPLE",
[_GUARD_NOS_UNICODE] = "_GUARD_NOS_UNICODE",
@@ -496,10 +501,9 @@ const char *const _PyOpcode_uop_name[MAX_UOP_ID+1] = {
[_LOAD_ATTR_WITH_HINT] = "_LOAD_ATTR_WITH_HINT",
[_LOAD_BUILD_CLASS] = "_LOAD_BUILD_CLASS",
[_LOAD_COMMON_CONSTANT] = "_LOAD_COMMON_CONSTANT",
- [_LOAD_CONST_IMMORTAL] = "_LOAD_CONST_IMMORTAL",
+ [_LOAD_CONST] = "_LOAD_CONST",
[_LOAD_CONST_INLINE] = "_LOAD_CONST_INLINE",
[_LOAD_CONST_INLINE_BORROW] = "_LOAD_CONST_INLINE_BORROW",
- [_LOAD_CONST_MORTAL] = "_LOAD_CONST_MORTAL",
[_LOAD_DEREF] = "_LOAD_DEREF",
[_LOAD_FAST] = "_LOAD_FAST",
[_LOAD_FAST_0] = "_LOAD_FAST_0",
@@ -549,10 +553,12 @@ const char *const _PyOpcode_uop_name[MAX_UOP_ID+1] = {
[_MAYBE_EXPAND_METHOD] = "_MAYBE_EXPAND_METHOD",
[_MAYBE_EXPAND_METHOD_KW] = "_MAYBE_EXPAND_METHOD_KW",
[_NOP] = "_NOP",
+ [_POP_CALL_TWO_LOAD_CONST_INLINE_BORROW] = "_POP_CALL_TWO_LOAD_CONST_INLINE_BORROW",
[_POP_EXCEPT] = "_POP_EXCEPT",
[_POP_TOP] = "_POP_TOP",
[_POP_TOP_LOAD_CONST_INLINE] = "_POP_TOP_LOAD_CONST_INLINE",
[_POP_TOP_LOAD_CONST_INLINE_BORROW] = "_POP_TOP_LOAD_CONST_INLINE_BORROW",
+ [_POP_TWO] = "_POP_TWO",
[_POP_TWO_LOAD_CONST_INLINE_BORROW] = "_POP_TWO_LOAD_CONST_INLINE_BORROW",
[_PUSH_EXC_INFO] = "_PUSH_EXC_INFO",
[_PUSH_FRAME] = "_PUSH_FRAME",
@@ -668,9 +674,7 @@ int _PyUop_num_popped(int opcode, int oparg)
return 0;
case _LOAD_FAST_BORROW_LOAD_FAST_BORROW:
return 0;
- case _LOAD_CONST_MORTAL:
- return 0;
- case _LOAD_CONST_IMMORTAL:
+ case _LOAD_CONST:
return 0;
case _LOAD_SMALL_INT_0:
return 0;
@@ -706,6 +710,8 @@ int _PyUop_num_popped(int opcode, int oparg)
return 2;
case _POP_TOP:
return 1;
+ case _POP_TWO:
+ return 2;
case _PUSH_NULL:
return 0;
case _END_FOR:
@@ -1072,6 +1078,8 @@ int _PyUop_num_popped(int opcode, int oparg)
return 1;
case _GUARD_NOS_NULL:
return 0;
+ case _GUARD_NOS_NOT_NULL:
+ return 0;
case _GUARD_THIRD_NULL:
return 0;
case _GUARD_CALLABLE_TYPE_1:
@@ -1108,6 +1116,8 @@ int _PyUop_num_popped(int opcode, int oparg)
return 0;
case _CALL_ISINSTANCE:
return 4;
+ case _GUARD_CALLABLE_LIST_APPEND:
+ return 0;
case _CALL_LIST_APPEND:
return 3;
case _CALL_METHOD_DESCRIPTOR_O:
@@ -1184,6 +1194,8 @@ int _PyUop_num_popped(int opcode, int oparg)
return 1;
case _POP_TWO_LOAD_CONST_INLINE_BORROW:
return 2;
+ case _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW:
+ return 4;
case _CHECK_FUNCTION:
return 0;
case _START_EXECUTOR: