GH-131798: Remove JIT guards for dict, frozenset, list, set, and tuple (GH-132289)

This commit is contained in:
Brandt Bucher 2025-04-09 14:32:21 -07:00 committed by GitHub
parent d47584aae6
commit 20926c73b5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 942 additions and 543 deletions

View file

@ -1069,7 +1069,7 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[266] = {
[BINARY_OP_INPLACE_ADD_UNICODE] = { true, INSTR_FMT_IXC0000, HAS_LOCAL_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[BINARY_OP_MULTIPLY_FLOAT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG },
[BINARY_OP_MULTIPLY_INT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[BINARY_OP_SUBSCR_DICT] = { true, INSTR_FMT_IXC0000, HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[BINARY_OP_SUBSCR_DICT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[BINARY_OP_SUBSCR_GETITEM] = { true, INSTR_FMT_IXC0000, HAS_DEOPT_FLAG },
[BINARY_OP_SUBSCR_LIST_INT] = { true, INSTR_FMT_IXC0000, HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG },
[BINARY_OP_SUBSCR_STR_INT] = { true, INSTR_FMT_IXC0000, HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG },
@ -1120,7 +1120,7 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[266] = {
[COMPARE_OP_INT] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
[COMPARE_OP_STR] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_EXIT_FLAG },
[CONTAINS_OP] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[CONTAINS_OP_DICT] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[CONTAINS_OP_DICT] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[CONTAINS_OP_SET] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[CONVERT_VALUE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[COPY] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_PURE_FLAG },
@ -1265,7 +1265,7 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[266] = {
[STORE_NAME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[STORE_SLICE] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[STORE_SUBSCR] = { true, INSTR_FMT_IXC, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[STORE_SUBSCR_DICT] = { true, INSTR_FMT_IXC, HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[STORE_SUBSCR_DICT] = { true, INSTR_FMT_IXC, HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[STORE_SUBSCR_LIST_INT] = { true, INSTR_FMT_IXC, HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG },
[SWAP] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_PURE_FLAG },
[TO_BOOL] = { true, INSTR_FMT_IXC00, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
@ -1280,9 +1280,9 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[266] = {
[UNARY_NOT] = { true, INSTR_FMT_IX, HAS_PURE_FLAG },
[UNPACK_EX] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[UNPACK_SEQUENCE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[UNPACK_SEQUENCE_LIST] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG },
[UNPACK_SEQUENCE_TUPLE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG },
[UNPACK_SEQUENCE_TWO_TUPLE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG },
[UNPACK_SEQUENCE_LIST] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
[UNPACK_SEQUENCE_TUPLE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
[UNPACK_SEQUENCE_TWO_TUPLE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG },
[WITH_EXCEPT_START] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[YIELD_VALUE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },
[JUMP] = { true, -1, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
@ -1316,11 +1316,11 @@ _PyOpcode_macro_expansion[256] = {
[BINARY_OP_INPLACE_ADD_UNICODE] = { .nuops = 3, .uops = { { _GUARD_TOS_UNICODE, OPARG_SIMPLE, 0 }, { _GUARD_NOS_UNICODE, OPARG_SIMPLE, 0 }, { _BINARY_OP_INPLACE_ADD_UNICODE, OPARG_SIMPLE, 5 } } },
[BINARY_OP_MULTIPLY_FLOAT] = { .nuops = 3, .uops = { { _GUARD_TOS_FLOAT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_FLOAT, OPARG_SIMPLE, 0 }, { _BINARY_OP_MULTIPLY_FLOAT, OPARG_SIMPLE, 5 } } },
[BINARY_OP_MULTIPLY_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_INT, OPARG_SIMPLE, 0 }, { _BINARY_OP_MULTIPLY_INT, OPARG_SIMPLE, 5 } } },
[BINARY_OP_SUBSCR_DICT] = { .nuops = 1, .uops = { { _BINARY_OP_SUBSCR_DICT, OPARG_SIMPLE, 5 } } },
[BINARY_OP_SUBSCR_DICT] = { .nuops = 2, .uops = { { _GUARD_NOS_DICT, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_DICT, OPARG_SIMPLE, 5 } } },
[BINARY_OP_SUBSCR_GETITEM] = { .nuops = 4, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 5 }, { _BINARY_OP_SUBSCR_CHECK_FUNC, OPARG_SIMPLE, 5 }, { _BINARY_OP_SUBSCR_INIT_CALL, OPARG_SIMPLE, 5 }, { _PUSH_FRAME, OPARG_SIMPLE, 5 } } },
[BINARY_OP_SUBSCR_LIST_INT] = { .nuops = 2, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_LIST_INT, OPARG_SIMPLE, 5 } } },
[BINARY_OP_SUBSCR_LIST_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_LIST, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_LIST_INT, OPARG_SIMPLE, 5 } } },
[BINARY_OP_SUBSCR_STR_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_UNICODE, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_STR_INT, OPARG_SIMPLE, 5 } } },
[BINARY_OP_SUBSCR_TUPLE_INT] = { .nuops = 2, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_TUPLE_INT, OPARG_SIMPLE, 5 } } },
[BINARY_OP_SUBSCR_TUPLE_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_TUPLE, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_TUPLE_INT, OPARG_SIMPLE, 5 } } },
[BINARY_OP_SUBTRACT_FLOAT] = { .nuops = 3, .uops = { { _GUARD_TOS_FLOAT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_FLOAT, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBTRACT_FLOAT, OPARG_SIMPLE, 5 } } },
[BINARY_OP_SUBTRACT_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_INT, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBTRACT_INT, OPARG_SIMPLE, 5 } } },
[BINARY_SLICE] = { .nuops = 1, .uops = { { _BINARY_SLICE, OPARG_SIMPLE, 0 } } },
@ -1362,8 +1362,8 @@ _PyOpcode_macro_expansion[256] = {
[COMPARE_OP_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_INT, OPARG_SIMPLE, 0 }, { _COMPARE_OP_INT, OPARG_SIMPLE, 1 } } },
[COMPARE_OP_STR] = { .nuops = 3, .uops = { { _GUARD_TOS_UNICODE, OPARG_SIMPLE, 0 }, { _GUARD_NOS_UNICODE, OPARG_SIMPLE, 0 }, { _COMPARE_OP_STR, OPARG_SIMPLE, 1 } } },
[CONTAINS_OP] = { .nuops = 1, .uops = { { _CONTAINS_OP, OPARG_SIMPLE, 0 } } },
[CONTAINS_OP_DICT] = { .nuops = 1, .uops = { { _CONTAINS_OP_DICT, OPARG_SIMPLE, 1 } } },
[CONTAINS_OP_SET] = { .nuops = 1, .uops = { { _CONTAINS_OP_SET, OPARG_SIMPLE, 1 } } },
[CONTAINS_OP_DICT] = { .nuops = 2, .uops = { { _GUARD_TOS_DICT, OPARG_SIMPLE, 0 }, { _CONTAINS_OP_DICT, OPARG_SIMPLE, 1 } } },
[CONTAINS_OP_SET] = { .nuops = 2, .uops = { { _GUARD_TOS_ANY_SET, OPARG_SIMPLE, 0 }, { _CONTAINS_OP_SET, OPARG_SIMPLE, 1 } } },
[CONVERT_VALUE] = { .nuops = 1, .uops = { { _CONVERT_VALUE, OPARG_SIMPLE, 0 } } },
[COPY] = { .nuops = 1, .uops = { { _COPY, OPARG_SIMPLE, 0 } } },
[COPY_FREE_VARS] = { .nuops = 1, .uops = { { _COPY_FREE_VARS, OPARG_SIMPLE, 0 } } },
@ -1468,14 +1468,14 @@ _PyOpcode_macro_expansion[256] = {
[STORE_NAME] = { .nuops = 1, .uops = { { _STORE_NAME, OPARG_SIMPLE, 0 } } },
[STORE_SLICE] = { .nuops = 1, .uops = { { _STORE_SLICE, OPARG_SIMPLE, 0 } } },
[STORE_SUBSCR] = { .nuops = 1, .uops = { { _STORE_SUBSCR, OPARG_SIMPLE, 0 } } },
[STORE_SUBSCR_DICT] = { .nuops = 1, .uops = { { _STORE_SUBSCR_DICT, OPARG_SIMPLE, 1 } } },
[STORE_SUBSCR_LIST_INT] = { .nuops = 2, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _STORE_SUBSCR_LIST_INT, OPARG_SIMPLE, 1 } } },
[STORE_SUBSCR_DICT] = { .nuops = 2, .uops = { { _GUARD_NOS_DICT, OPARG_SIMPLE, 0 }, { _STORE_SUBSCR_DICT, OPARG_SIMPLE, 1 } } },
[STORE_SUBSCR_LIST_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_LIST, OPARG_SIMPLE, 0 }, { _STORE_SUBSCR_LIST_INT, OPARG_SIMPLE, 1 } } },
[SWAP] = { .nuops = 1, .uops = { { _SWAP, OPARG_SIMPLE, 0 } } },
[TO_BOOL] = { .nuops = 1, .uops = { { _TO_BOOL, OPARG_SIMPLE, 2 } } },
[TO_BOOL_ALWAYS_TRUE] = { .nuops = 2, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _REPLACE_WITH_TRUE, OPARG_SIMPLE, 3 } } },
[TO_BOOL_BOOL] = { .nuops = 1, .uops = { { _TO_BOOL_BOOL, OPARG_SIMPLE, 3 } } },
[TO_BOOL_INT] = { .nuops = 1, .uops = { { _TO_BOOL_INT, OPARG_SIMPLE, 3 } } },
[TO_BOOL_LIST] = { .nuops = 1, .uops = { { _TO_BOOL_LIST, OPARG_SIMPLE, 3 } } },
[TO_BOOL_LIST] = { .nuops = 2, .uops = { { _GUARD_TOS_LIST, OPARG_SIMPLE, 0 }, { _TO_BOOL_LIST, OPARG_SIMPLE, 3 } } },
[TO_BOOL_NONE] = { .nuops = 1, .uops = { { _TO_BOOL_NONE, OPARG_SIMPLE, 3 } } },
[TO_BOOL_STR] = { .nuops = 2, .uops = { { _GUARD_TOS_UNICODE, OPARG_SIMPLE, 0 }, { _TO_BOOL_STR, OPARG_SIMPLE, 3 } } },
[UNARY_INVERT] = { .nuops = 1, .uops = { { _UNARY_INVERT, OPARG_SIMPLE, 0 } } },
@ -1483,9 +1483,9 @@ _PyOpcode_macro_expansion[256] = {
[UNARY_NOT] = { .nuops = 1, .uops = { { _UNARY_NOT, OPARG_SIMPLE, 0 } } },
[UNPACK_EX] = { .nuops = 1, .uops = { { _UNPACK_EX, OPARG_SIMPLE, 0 } } },
[UNPACK_SEQUENCE] = { .nuops = 1, .uops = { { _UNPACK_SEQUENCE, OPARG_SIMPLE, 0 } } },
[UNPACK_SEQUENCE_LIST] = { .nuops = 1, .uops = { { _UNPACK_SEQUENCE_LIST, OPARG_SIMPLE, 1 } } },
[UNPACK_SEQUENCE_TUPLE] = { .nuops = 1, .uops = { { _UNPACK_SEQUENCE_TUPLE, OPARG_SIMPLE, 1 } } },
[UNPACK_SEQUENCE_TWO_TUPLE] = { .nuops = 1, .uops = { { _UNPACK_SEQUENCE_TWO_TUPLE, OPARG_SIMPLE, 1 } } },
[UNPACK_SEQUENCE_LIST] = { .nuops = 2, .uops = { { _GUARD_TOS_LIST, OPARG_SIMPLE, 0 }, { _UNPACK_SEQUENCE_LIST, OPARG_SIMPLE, 1 } } },
[UNPACK_SEQUENCE_TUPLE] = { .nuops = 2, .uops = { { _GUARD_TOS_TUPLE, OPARG_SIMPLE, 0 }, { _UNPACK_SEQUENCE_TUPLE, OPARG_SIMPLE, 1 } } },
[UNPACK_SEQUENCE_TWO_TUPLE] = { .nuops = 2, .uops = { { _GUARD_TOS_TUPLE, OPARG_SIMPLE, 0 }, { _UNPACK_SEQUENCE_TWO_TUPLE, OPARG_SIMPLE, 1 } } },
[WITH_EXCEPT_START] = { .nuops = 1, .uops = { { _WITH_EXCEPT_START, OPARG_SIMPLE, 0 } } },
[YIELD_VALUE] = { .nuops = 1, .uops = { { _YIELD_VALUE, OPARG_SIMPLE, 0 } } },
};

View file

@ -20,130 +20,137 @@ extern "C" {
#define _BINARY_OP_MULTIPLY_FLOAT 308
#define _BINARY_OP_MULTIPLY_INT 309
#define _BINARY_OP_SUBSCR_CHECK_FUNC 310
#define _BINARY_OP_SUBSCR_DICT BINARY_OP_SUBSCR_DICT
#define _BINARY_OP_SUBSCR_INIT_CALL 311
#define _BINARY_OP_SUBSCR_LIST_INT 312
#define _BINARY_OP_SUBSCR_STR_INT 313
#define _BINARY_OP_SUBSCR_TUPLE_INT 314
#define _BINARY_OP_SUBTRACT_FLOAT 315
#define _BINARY_OP_SUBTRACT_INT 316
#define _BINARY_SLICE 317
#define _BINARY_OP_SUBSCR_DICT 311
#define _BINARY_OP_SUBSCR_INIT_CALL 312
#define _BINARY_OP_SUBSCR_LIST_INT 313
#define _BINARY_OP_SUBSCR_STR_INT 314
#define _BINARY_OP_SUBSCR_TUPLE_INT 315
#define _BINARY_OP_SUBTRACT_FLOAT 316
#define _BINARY_OP_SUBTRACT_INT 317
#define _BINARY_SLICE 318
#define _BUILD_LIST BUILD_LIST
#define _BUILD_MAP BUILD_MAP
#define _BUILD_SET BUILD_SET
#define _BUILD_SLICE BUILD_SLICE
#define _BUILD_STRING BUILD_STRING
#define _BUILD_TUPLE BUILD_TUPLE
#define _CALL_BUILTIN_CLASS 318
#define _CALL_BUILTIN_FAST 319
#define _CALL_BUILTIN_FAST_WITH_KEYWORDS 320
#define _CALL_BUILTIN_O 321
#define _CALL_BUILTIN_CLASS 319
#define _CALL_BUILTIN_FAST 320
#define _CALL_BUILTIN_FAST_WITH_KEYWORDS 321
#define _CALL_BUILTIN_O 322
#define _CALL_INTRINSIC_1 CALL_INTRINSIC_1
#define _CALL_INTRINSIC_2 CALL_INTRINSIC_2
#define _CALL_ISINSTANCE CALL_ISINSTANCE
#define _CALL_KW_NON_PY 322
#define _CALL_KW_NON_PY 323
#define _CALL_LEN CALL_LEN
#define _CALL_LIST_APPEND CALL_LIST_APPEND
#define _CALL_METHOD_DESCRIPTOR_FAST 323
#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 324
#define _CALL_METHOD_DESCRIPTOR_NOARGS 325
#define _CALL_METHOD_DESCRIPTOR_O 326
#define _CALL_NON_PY_GENERAL 327
#define _CALL_STR_1 328
#define _CALL_TUPLE_1 329
#define _CALL_METHOD_DESCRIPTOR_FAST 324
#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 325
#define _CALL_METHOD_DESCRIPTOR_NOARGS 326
#define _CALL_METHOD_DESCRIPTOR_O 327
#define _CALL_NON_PY_GENERAL 328
#define _CALL_STR_1 329
#define _CALL_TUPLE_1 330
#define _CALL_TYPE_1 CALL_TYPE_1
#define _CHECK_AND_ALLOCATE_OBJECT 330
#define _CHECK_ATTR_CLASS 331
#define _CHECK_ATTR_METHOD_LAZY_DICT 332
#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS 333
#define _CHECK_AND_ALLOCATE_OBJECT 331
#define _CHECK_ATTR_CLASS 332
#define _CHECK_ATTR_METHOD_LAZY_DICT 333
#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS 334
#define _CHECK_EG_MATCH CHECK_EG_MATCH
#define _CHECK_EXC_MATCH CHECK_EXC_MATCH
#define _CHECK_FUNCTION 334
#define _CHECK_FUNCTION_EXACT_ARGS 335
#define _CHECK_FUNCTION_VERSION 336
#define _CHECK_FUNCTION_VERSION_INLINE 337
#define _CHECK_FUNCTION_VERSION_KW 338
#define _CHECK_IS_NOT_PY_CALLABLE 339
#define _CHECK_IS_NOT_PY_CALLABLE_KW 340
#define _CHECK_MANAGED_OBJECT_HAS_VALUES 341
#define _CHECK_METHOD_VERSION 342
#define _CHECK_METHOD_VERSION_KW 343
#define _CHECK_PEP_523 344
#define _CHECK_PERIODIC 345
#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM 346
#define _CHECK_STACK_SPACE 347
#define _CHECK_STACK_SPACE_OPERAND 348
#define _CHECK_VALIDITY 349
#define _COMPARE_OP 350
#define _COMPARE_OP_FLOAT 351
#define _COMPARE_OP_INT 352
#define _COMPARE_OP_STR 353
#define _CONTAINS_OP 354
#define _CONTAINS_OP_DICT CONTAINS_OP_DICT
#define _CONTAINS_OP_SET CONTAINS_OP_SET
#define _CHECK_FUNCTION 335
#define _CHECK_FUNCTION_EXACT_ARGS 336
#define _CHECK_FUNCTION_VERSION 337
#define _CHECK_FUNCTION_VERSION_INLINE 338
#define _CHECK_FUNCTION_VERSION_KW 339
#define _CHECK_IS_NOT_PY_CALLABLE 340
#define _CHECK_IS_NOT_PY_CALLABLE_KW 341
#define _CHECK_MANAGED_OBJECT_HAS_VALUES 342
#define _CHECK_METHOD_VERSION 343
#define _CHECK_METHOD_VERSION_KW 344
#define _CHECK_PEP_523 345
#define _CHECK_PERIODIC 346
#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM 347
#define _CHECK_STACK_SPACE 348
#define _CHECK_STACK_SPACE_OPERAND 349
#define _CHECK_VALIDITY 350
#define _COMPARE_OP 351
#define _COMPARE_OP_FLOAT 352
#define _COMPARE_OP_INT 353
#define _COMPARE_OP_STR 354
#define _CONTAINS_OP 355
#define _CONTAINS_OP_DICT 356
#define _CONTAINS_OP_SET 357
#define _CONVERT_VALUE CONVERT_VALUE
#define _COPY COPY
#define _COPY_FREE_VARS COPY_FREE_VARS
#define _CREATE_INIT_FRAME 355
#define _CREATE_INIT_FRAME 358
#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 356
#define _DEOPT 359
#define _DICT_MERGE DICT_MERGE
#define _DICT_UPDATE DICT_UPDATE
#define _DO_CALL 357
#define _DO_CALL_FUNCTION_EX 358
#define _DO_CALL_KW 359
#define _DO_CALL 360
#define _DO_CALL_FUNCTION_EX 361
#define _DO_CALL_KW 362
#define _END_FOR END_FOR
#define _END_SEND END_SEND
#define _ERROR_POP_N 360
#define _ERROR_POP_N 363
#define _EXIT_INIT_CHECK EXIT_INIT_CHECK
#define _EXPAND_METHOD 361
#define _EXPAND_METHOD_KW 362
#define _FATAL_ERROR 363
#define _EXPAND_METHOD 364
#define _EXPAND_METHOD_KW 365
#define _FATAL_ERROR 366
#define _FORMAT_SIMPLE FORMAT_SIMPLE
#define _FORMAT_WITH_SPEC FORMAT_WITH_SPEC
#define _FOR_ITER 364
#define _FOR_ITER_GEN_FRAME 365
#define _FOR_ITER_TIER_TWO 366
#define _FOR_ITER 367
#define _FOR_ITER_GEN_FRAME 368
#define _FOR_ITER_TIER_TWO 369
#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 367
#define _GUARD_DORV_NO_DICT 368
#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 369
#define _GUARD_GLOBALS_VERSION 370
#define _GUARD_IS_FALSE_POP 371
#define _GUARD_IS_NONE_POP 372
#define _GUARD_IS_NOT_NONE_POP 373
#define _GUARD_IS_TRUE_POP 374
#define _GUARD_KEYS_VERSION 375
#define _GUARD_NOS_FLOAT 376
#define _GUARD_NOS_INT 377
#define _GUARD_NOS_UNICODE 378
#define _GUARD_NOT_EXHAUSTED_LIST 379
#define _GUARD_NOT_EXHAUSTED_RANGE 380
#define _GUARD_NOT_EXHAUSTED_TUPLE 381
#define _GUARD_TOS_FLOAT 382
#define _GUARD_TOS_INT 383
#define _GUARD_TOS_UNICODE 384
#define _GUARD_TYPE_VERSION 385
#define _GUARD_TYPE_VERSION_AND_LOCK 386
#define _GUARD_BINARY_OP_EXTEND 370
#define _GUARD_DORV_NO_DICT 371
#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 372
#define _GUARD_GLOBALS_VERSION 373
#define _GUARD_IS_FALSE_POP 374
#define _GUARD_IS_NONE_POP 375
#define _GUARD_IS_NOT_NONE_POP 376
#define _GUARD_IS_TRUE_POP 377
#define _GUARD_KEYS_VERSION 378
#define _GUARD_NOS_DICT 379
#define _GUARD_NOS_FLOAT 380
#define _GUARD_NOS_INT 381
#define _GUARD_NOS_LIST 382
#define _GUARD_NOS_TUPLE 383
#define _GUARD_NOS_UNICODE 384
#define _GUARD_NOT_EXHAUSTED_LIST 385
#define _GUARD_NOT_EXHAUSTED_RANGE 386
#define _GUARD_NOT_EXHAUSTED_TUPLE 387
#define _GUARD_TOS_ANY_SET 388
#define _GUARD_TOS_DICT 389
#define _GUARD_TOS_FLOAT 390
#define _GUARD_TOS_INT 391
#define _GUARD_TOS_LIST 392
#define _GUARD_TOS_TUPLE 393
#define _GUARD_TOS_UNICODE 394
#define _GUARD_TYPE_VERSION 395
#define _GUARD_TYPE_VERSION_AND_LOCK 396
#define _IMPORT_FROM IMPORT_FROM
#define _IMPORT_NAME IMPORT_NAME
#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS 387
#define _INIT_CALL_PY_EXACT_ARGS 388
#define _INIT_CALL_PY_EXACT_ARGS_0 389
#define _INIT_CALL_PY_EXACT_ARGS_1 390
#define _INIT_CALL_PY_EXACT_ARGS_2 391
#define _INIT_CALL_PY_EXACT_ARGS_3 392
#define _INIT_CALL_PY_EXACT_ARGS_4 393
#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS 397
#define _INIT_CALL_PY_EXACT_ARGS 398
#define _INIT_CALL_PY_EXACT_ARGS_0 399
#define _INIT_CALL_PY_EXACT_ARGS_1 400
#define _INIT_CALL_PY_EXACT_ARGS_2 401
#define _INIT_CALL_PY_EXACT_ARGS_3 402
#define _INIT_CALL_PY_EXACT_ARGS_4 403
#define _INSTRUMENTED_FOR_ITER INSTRUMENTED_FOR_ITER
#define _INSTRUMENTED_INSTRUCTION INSTRUMENTED_INSTRUCTION
#define _INSTRUMENTED_JUMP_FORWARD INSTRUMENTED_JUMP_FORWARD
@ -153,163 +160,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 394
#define _IS_NONE 404
#define _IS_OP IS_OP
#define _ITER_CHECK_LIST 395
#define _ITER_CHECK_RANGE 396
#define _ITER_CHECK_TUPLE 397
#define _ITER_JUMP_LIST 398
#define _ITER_JUMP_RANGE 399
#define _ITER_JUMP_TUPLE 400
#define _ITER_NEXT_LIST 401
#define _ITER_NEXT_LIST_TIER_TWO 402
#define _ITER_NEXT_RANGE 403
#define _ITER_NEXT_TUPLE 404
#define _JUMP_TO_TOP 405
#define _ITER_CHECK_LIST 405
#define _ITER_CHECK_RANGE 406
#define _ITER_CHECK_TUPLE 407
#define _ITER_JUMP_LIST 408
#define _ITER_JUMP_RANGE 409
#define _ITER_JUMP_TUPLE 410
#define _ITER_NEXT_LIST 411
#define _ITER_NEXT_LIST_TIER_TWO 412
#define _ITER_NEXT_RANGE 413
#define _ITER_NEXT_TUPLE 414
#define _JUMP_TO_TOP 415
#define _LIST_APPEND LIST_APPEND
#define _LIST_EXTEND LIST_EXTEND
#define _LOAD_ATTR 406
#define _LOAD_ATTR_CLASS 407
#define _LOAD_ATTR 416
#define _LOAD_ATTR_CLASS 417
#define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN
#define _LOAD_ATTR_INSTANCE_VALUE 408
#define _LOAD_ATTR_METHOD_LAZY_DICT 409
#define _LOAD_ATTR_METHOD_NO_DICT 410
#define _LOAD_ATTR_METHOD_WITH_VALUES 411
#define _LOAD_ATTR_MODULE 412
#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 413
#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 414
#define _LOAD_ATTR_PROPERTY_FRAME 415
#define _LOAD_ATTR_SLOT 416
#define _LOAD_ATTR_WITH_HINT 417
#define _LOAD_ATTR_INSTANCE_VALUE 418
#define _LOAD_ATTR_METHOD_LAZY_DICT 419
#define _LOAD_ATTR_METHOD_NO_DICT 420
#define _LOAD_ATTR_METHOD_WITH_VALUES 421
#define _LOAD_ATTR_MODULE 422
#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 423
#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 424
#define _LOAD_ATTR_PROPERTY_FRAME 425
#define _LOAD_ATTR_SLOT 426
#define _LOAD_ATTR_WITH_HINT 427
#define _LOAD_BUILD_CLASS LOAD_BUILD_CLASS
#define _LOAD_BYTECODE 418
#define _LOAD_BYTECODE 428
#define _LOAD_COMMON_CONSTANT LOAD_COMMON_CONSTANT
#define _LOAD_CONST LOAD_CONST
#define _LOAD_CONST_IMMORTAL LOAD_CONST_IMMORTAL
#define _LOAD_CONST_INLINE 419
#define _LOAD_CONST_INLINE_BORROW 420
#define _LOAD_CONST_INLINE 429
#define _LOAD_CONST_INLINE_BORROW 430
#define _LOAD_CONST_MORTAL LOAD_CONST_MORTAL
#define _LOAD_DEREF LOAD_DEREF
#define _LOAD_FAST 421
#define _LOAD_FAST_0 422
#define _LOAD_FAST_1 423
#define _LOAD_FAST_2 424
#define _LOAD_FAST_3 425
#define _LOAD_FAST_4 426
#define _LOAD_FAST_5 427
#define _LOAD_FAST_6 428
#define _LOAD_FAST_7 429
#define _LOAD_FAST 431
#define _LOAD_FAST_0 432
#define _LOAD_FAST_1 433
#define _LOAD_FAST_2 434
#define _LOAD_FAST_3 435
#define _LOAD_FAST_4 436
#define _LOAD_FAST_5 437
#define _LOAD_FAST_6 438
#define _LOAD_FAST_7 439
#define _LOAD_FAST_AND_CLEAR LOAD_FAST_AND_CLEAR
#define _LOAD_FAST_BORROW 430
#define _LOAD_FAST_BORROW_0 431
#define _LOAD_FAST_BORROW_1 432
#define _LOAD_FAST_BORROW_2 433
#define _LOAD_FAST_BORROW_3 434
#define _LOAD_FAST_BORROW_4 435
#define _LOAD_FAST_BORROW_5 436
#define _LOAD_FAST_BORROW_6 437
#define _LOAD_FAST_BORROW_7 438
#define _LOAD_FAST_BORROW 440
#define _LOAD_FAST_BORROW_0 441
#define _LOAD_FAST_BORROW_1 442
#define _LOAD_FAST_BORROW_2 443
#define _LOAD_FAST_BORROW_3 444
#define _LOAD_FAST_BORROW_4 445
#define _LOAD_FAST_BORROW_5 446
#define _LOAD_FAST_BORROW_6 447
#define _LOAD_FAST_BORROW_7 448
#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 439
#define _LOAD_GLOBAL_BUILTINS 440
#define _LOAD_GLOBAL_MODULE 441
#define _LOAD_GLOBAL 449
#define _LOAD_GLOBAL_BUILTINS 450
#define _LOAD_GLOBAL_MODULE 451
#define _LOAD_LOCALS LOAD_LOCALS
#define _LOAD_NAME LOAD_NAME
#define _LOAD_SMALL_INT 442
#define _LOAD_SMALL_INT_0 443
#define _LOAD_SMALL_INT_1 444
#define _LOAD_SMALL_INT_2 445
#define _LOAD_SMALL_INT_3 446
#define _LOAD_SMALL_INT 452
#define _LOAD_SMALL_INT_0 453
#define _LOAD_SMALL_INT_1 454
#define _LOAD_SMALL_INT_2 455
#define _LOAD_SMALL_INT_3 456
#define _LOAD_SPECIAL LOAD_SPECIAL
#define _LOAD_SUPER_ATTR_ATTR LOAD_SUPER_ATTR_ATTR
#define _LOAD_SUPER_ATTR_METHOD LOAD_SUPER_ATTR_METHOD
#define _MAKE_CALLARGS_A_TUPLE 447
#define _MAKE_CALLARGS_A_TUPLE 457
#define _MAKE_CELL MAKE_CELL
#define _MAKE_FUNCTION MAKE_FUNCTION
#define _MAKE_WARM 448
#define _MAKE_WARM 458
#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 449
#define _MAYBE_EXPAND_METHOD_KW 450
#define _MONITOR_CALL 451
#define _MONITOR_CALL_KW 452
#define _MONITOR_JUMP_BACKWARD 453
#define _MONITOR_RESUME 454
#define _MAYBE_EXPAND_METHOD 459
#define _MAYBE_EXPAND_METHOD_KW 460
#define _MONITOR_CALL 461
#define _MONITOR_CALL_KW 462
#define _MONITOR_JUMP_BACKWARD 463
#define _MONITOR_RESUME 464
#define _NOP NOP
#define _POP_EXCEPT POP_EXCEPT
#define _POP_JUMP_IF_FALSE 455
#define _POP_JUMP_IF_TRUE 456
#define _POP_JUMP_IF_FALSE 465
#define _POP_JUMP_IF_TRUE 466
#define _POP_TOP POP_TOP
#define _POP_TOP_LOAD_CONST_INLINE 457
#define _POP_TOP_LOAD_CONST_INLINE_BORROW 458
#define _POP_TWO_LOAD_CONST_INLINE_BORROW 459
#define _POP_TOP_LOAD_CONST_INLINE 467
#define _POP_TOP_LOAD_CONST_INLINE_BORROW 468
#define _POP_TWO_LOAD_CONST_INLINE_BORROW 469
#define _PUSH_EXC_INFO PUSH_EXC_INFO
#define _PUSH_FRAME 460
#define _PUSH_FRAME 470
#define _PUSH_NULL PUSH_NULL
#define _PUSH_NULL_CONDITIONAL 461
#define _PY_FRAME_GENERAL 462
#define _PY_FRAME_KW 463
#define _QUICKEN_RESUME 464
#define _REPLACE_WITH_TRUE 465
#define _PUSH_NULL_CONDITIONAL 471
#define _PY_FRAME_GENERAL 472
#define _PY_FRAME_KW 473
#define _QUICKEN_RESUME 474
#define _REPLACE_WITH_TRUE 475
#define _RESUME_CHECK RESUME_CHECK
#define _RETURN_GENERATOR RETURN_GENERATOR
#define _RETURN_VALUE RETURN_VALUE
#define _SAVE_RETURN_OFFSET 466
#define _SEND 467
#define _SEND_GEN_FRAME 468
#define _SAVE_RETURN_OFFSET 476
#define _SEND 477
#define _SEND_GEN_FRAME 478
#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 469
#define _STORE_ATTR 470
#define _STORE_ATTR_INSTANCE_VALUE 471
#define _STORE_ATTR_SLOT 472
#define _STORE_ATTR_WITH_HINT 473
#define _START_EXECUTOR 479
#define _STORE_ATTR 480
#define _STORE_ATTR_INSTANCE_VALUE 481
#define _STORE_ATTR_SLOT 482
#define _STORE_ATTR_WITH_HINT 483
#define _STORE_DEREF STORE_DEREF
#define _STORE_FAST 474
#define _STORE_FAST_0 475
#define _STORE_FAST_1 476
#define _STORE_FAST_2 477
#define _STORE_FAST_3 478
#define _STORE_FAST_4 479
#define _STORE_FAST_5 480
#define _STORE_FAST_6 481
#define _STORE_FAST_7 482
#define _STORE_FAST 484
#define _STORE_FAST_0 485
#define _STORE_FAST_1 486
#define _STORE_FAST_2 487
#define _STORE_FAST_3 488
#define _STORE_FAST_4 489
#define _STORE_FAST_5 490
#define _STORE_FAST_6 491
#define _STORE_FAST_7 492
#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 483
#define _STORE_SUBSCR 484
#define _STORE_SUBSCR_DICT STORE_SUBSCR_DICT
#define _STORE_SUBSCR_LIST_INT 485
#define _STORE_SLICE 493
#define _STORE_SUBSCR 494
#define _STORE_SUBSCR_DICT 495
#define _STORE_SUBSCR_LIST_INT 496
#define _SWAP SWAP
#define _TIER2_RESUME_CHECK 486
#define _TO_BOOL 487
#define _TIER2_RESUME_CHECK 497
#define _TO_BOOL 498
#define _TO_BOOL_BOOL TO_BOOL_BOOL
#define _TO_BOOL_INT TO_BOOL_INT
#define _TO_BOOL_LIST TO_BOOL_LIST
#define _TO_BOOL_LIST 499
#define _TO_BOOL_NONE TO_BOOL_NONE
#define _TO_BOOL_STR 488
#define _TO_BOOL_STR 500
#define _UNARY_INVERT UNARY_INVERT
#define _UNARY_NEGATIVE UNARY_NEGATIVE
#define _UNARY_NOT UNARY_NOT
#define _UNPACK_EX UNPACK_EX
#define _UNPACK_SEQUENCE 489
#define _UNPACK_SEQUENCE_LIST UNPACK_SEQUENCE_LIST
#define _UNPACK_SEQUENCE_TUPLE UNPACK_SEQUENCE_TUPLE
#define _UNPACK_SEQUENCE_TWO_TUPLE UNPACK_SEQUENCE_TWO_TUPLE
#define _UNPACK_SEQUENCE 501
#define _UNPACK_SEQUENCE_LIST 502
#define _UNPACK_SEQUENCE_TUPLE 503
#define _UNPACK_SEQUENCE_TWO_TUPLE 504
#define _WITH_EXCEPT_START WITH_EXCEPT_START
#define _YIELD_VALUE YIELD_VALUE
#define MAX_UOP_ID 489
#define MAX_UOP_ID 504
#ifdef __cplusplus
}

View file

@ -72,7 +72,9 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = {
[_TO_BOOL] = HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_TO_BOOL_BOOL] = HAS_EXIT_FLAG,
[_TO_BOOL_INT] = HAS_EXIT_FLAG | HAS_ESCAPES_FLAG,
[_TO_BOOL_LIST] = HAS_EXIT_FLAG,
[_GUARD_NOS_LIST] = HAS_EXIT_FLAG,
[_GUARD_TOS_LIST] = HAS_EXIT_FLAG,
[_TO_BOOL_LIST] = 0,
[_TO_BOOL_NONE] = HAS_EXIT_FLAG,
[_GUARD_NOS_UNICODE] = HAS_EXIT_FLAG,
[_GUARD_TOS_UNICODE] = HAS_EXIT_FLAG,
@ -97,15 +99,19 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = {
[_STORE_SLICE] = HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_BINARY_OP_SUBSCR_LIST_INT] = HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG,
[_BINARY_OP_SUBSCR_STR_INT] = HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG,
[_GUARD_NOS_TUPLE] = HAS_EXIT_FLAG,
[_GUARD_TOS_TUPLE] = HAS_EXIT_FLAG,
[_BINARY_OP_SUBSCR_TUPLE_INT] = HAS_DEOPT_FLAG,
[_BINARY_OP_SUBSCR_DICT] = HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_GUARD_NOS_DICT] = HAS_EXIT_FLAG,
[_GUARD_TOS_DICT] = HAS_EXIT_FLAG,
[_BINARY_OP_SUBSCR_DICT] = HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_BINARY_OP_SUBSCR_CHECK_FUNC] = HAS_DEOPT_FLAG,
[_BINARY_OP_SUBSCR_INIT_CALL] = 0,
[_LIST_APPEND] = HAS_ARG_FLAG | HAS_ERROR_FLAG,
[_SET_ADD] = HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_STORE_SUBSCR] = HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_STORE_SUBSCR_LIST_INT] = HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG,
[_STORE_SUBSCR_DICT] = HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_STORE_SUBSCR_DICT] = HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_DELETE_SUBSCR] = HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_CALL_INTRINSIC_1] = HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_CALL_INTRINSIC_2] = HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
@ -177,8 +183,9 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = {
[_COMPARE_OP_STR] = HAS_ARG_FLAG,
[_IS_OP] = HAS_ARG_FLAG,
[_CONTAINS_OP] = HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_CONTAINS_OP_SET] = HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_CONTAINS_OP_DICT] = HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_GUARD_TOS_ANY_SET] = HAS_DEOPT_FLAG,
[_CONTAINS_OP_SET] = HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_CONTAINS_OP_DICT] = HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_CHECK_EG_MATCH] = HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_CHECK_EXC_MATCH] = HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG,
[_IMPORT_NAME] = HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
@ -411,14 +418,21 @@ const char *const _PyOpcode_uop_name[MAX_UOP_ID+1] = {
[_GUARD_IS_NOT_NONE_POP] = "_GUARD_IS_NOT_NONE_POP",
[_GUARD_IS_TRUE_POP] = "_GUARD_IS_TRUE_POP",
[_GUARD_KEYS_VERSION] = "_GUARD_KEYS_VERSION",
[_GUARD_NOS_DICT] = "_GUARD_NOS_DICT",
[_GUARD_NOS_FLOAT] = "_GUARD_NOS_FLOAT",
[_GUARD_NOS_INT] = "_GUARD_NOS_INT",
[_GUARD_NOS_LIST] = "_GUARD_NOS_LIST",
[_GUARD_NOS_TUPLE] = "_GUARD_NOS_TUPLE",
[_GUARD_NOS_UNICODE] = "_GUARD_NOS_UNICODE",
[_GUARD_NOT_EXHAUSTED_LIST] = "_GUARD_NOT_EXHAUSTED_LIST",
[_GUARD_NOT_EXHAUSTED_RANGE] = "_GUARD_NOT_EXHAUSTED_RANGE",
[_GUARD_NOT_EXHAUSTED_TUPLE] = "_GUARD_NOT_EXHAUSTED_TUPLE",
[_GUARD_TOS_ANY_SET] = "_GUARD_TOS_ANY_SET",
[_GUARD_TOS_DICT] = "_GUARD_TOS_DICT",
[_GUARD_TOS_FLOAT] = "_GUARD_TOS_FLOAT",
[_GUARD_TOS_INT] = "_GUARD_TOS_INT",
[_GUARD_TOS_LIST] = "_GUARD_TOS_LIST",
[_GUARD_TOS_TUPLE] = "_GUARD_TOS_TUPLE",
[_GUARD_TOS_UNICODE] = "_GUARD_TOS_UNICODE",
[_GUARD_TYPE_VERSION] = "_GUARD_TYPE_VERSION",
[_GUARD_TYPE_VERSION_AND_LOCK] = "_GUARD_TYPE_VERSION_AND_LOCK",
@ -682,6 +696,10 @@ int _PyUop_num_popped(int opcode, int oparg)
return 0;
case _TO_BOOL_INT:
return 1;
case _GUARD_NOS_LIST:
return 0;
case _GUARD_TOS_LIST:
return 0;
case _TO_BOOL_LIST:
return 1;
case _TO_BOOL_NONE:
@ -732,8 +750,16 @@ int _PyUop_num_popped(int opcode, int oparg)
return 2;
case _BINARY_OP_SUBSCR_STR_INT:
return 2;
case _GUARD_NOS_TUPLE:
return 0;
case _GUARD_TOS_TUPLE:
return 0;
case _BINARY_OP_SUBSCR_TUPLE_INT:
return 2;
case _GUARD_NOS_DICT:
return 0;
case _GUARD_TOS_DICT:
return 0;
case _BINARY_OP_SUBSCR_DICT:
return 2;
case _BINARY_OP_SUBSCR_CHECK_FUNC:
@ -892,6 +918,8 @@ int _PyUop_num_popped(int opcode, int oparg)
return 2;
case _CONTAINS_OP:
return 2;
case _GUARD_TOS_ANY_SET:
return 0;
case _CONTAINS_OP_SET:
return 2;
case _CONTAINS_OP_DICT: