From befeded4197b7aea397168fb20982b7382695c7d Mon Sep 17 00:00:00 2001 From: Pieter Eendebak Date: Mon, 30 Mar 2026 17:03:50 +0200 Subject: [PATCH 01/11] Add inplace binary operations for type int-int --- Include/internal/pycore_long.h | 8 + Include/internal/pycore_uop_ids.h | 2532 ++++++++++++------------ Include/internal/pycore_uop_metadata.h | 114 ++ Lib/test/test_capi/test_opt.py | 146 ++ Python/bytecodes.c | 57 + Python/ceval_macros.h | 51 + Python/executor_cases.c.h | 546 +++++ Python/optimizer_bytecodes.c | 54 +- Python/optimizer_cases.c.h | 150 +- 9 files changed, 2384 insertions(+), 1274 deletions(-) diff --git a/Include/internal/pycore_long.h b/Include/internal/pycore_long.h index 4386e8bcad8841..239c26a19024db 100644 --- a/Include/internal/pycore_long.h +++ b/Include/internal/pycore_long.h @@ -82,6 +82,14 @@ static inline PyObject* _PyLong_FromUnsignedChar(unsigned char i) return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS+i]; } +// Return a reference to the cached small int singleton. +// The caller must ensure -_PY_NSMALLNEGINTS <= value < _PY_NSMALLPOSINTS. +static inline PyObject* _PyLong_GetSmallInt(Py_ssize_t value) +{ + assert(-_PY_NSMALLNEGINTS <= value && value < _PY_NSMALLPOSINTS); + return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + (int)value]; +} + // _PyLong_Frexp returns a double x and an exponent e such that the // true value is approximately equal to x * 2**e. x is // 0.0 if and only if the input is 0 (in which case, e and x are both diff --git a/Include/internal/pycore_uop_ids.h b/Include/internal/pycore_uop_ids.h index dbc7aaab7a7472..517ad4757a5eed 100644 --- a/Include/internal/pycore_uop_ids.h +++ b/Include/internal/pycore_uop_ids.h @@ -16,27 +16,32 @@ extern "C" { #define _BINARY_OP_ADD_FLOAT_INPLACE 304 #define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT 305 #define _BINARY_OP_ADD_INT 306 -#define _BINARY_OP_ADD_UNICODE 307 -#define _BINARY_OP_EXTEND 308 -#define _BINARY_OP_INPLACE_ADD_UNICODE 309 -#define _BINARY_OP_MULTIPLY_FLOAT 310 -#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE 311 -#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT 312 -#define _BINARY_OP_MULTIPLY_INT 313 -#define _BINARY_OP_SUBSCR_CHECK_FUNC 314 -#define _BINARY_OP_SUBSCR_DICT 315 -#define _BINARY_OP_SUBSCR_DICT_KNOWN_HASH 316 -#define _BINARY_OP_SUBSCR_INIT_CALL 317 -#define _BINARY_OP_SUBSCR_LIST_INT 318 -#define _BINARY_OP_SUBSCR_LIST_SLICE 319 -#define _BINARY_OP_SUBSCR_STR_INT 320 -#define _BINARY_OP_SUBSCR_TUPLE_INT 321 -#define _BINARY_OP_SUBSCR_USTR_INT 322 -#define _BINARY_OP_SUBTRACT_FLOAT 323 -#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE 324 -#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT 325 -#define _BINARY_OP_SUBTRACT_INT 326 -#define _BINARY_SLICE 327 +#define _BINARY_OP_ADD_INT_INPLACE 307 +#define _BINARY_OP_ADD_INT_INPLACE_RIGHT 308 +#define _BINARY_OP_ADD_UNICODE 309 +#define _BINARY_OP_EXTEND 310 +#define _BINARY_OP_INPLACE_ADD_UNICODE 311 +#define _BINARY_OP_MULTIPLY_FLOAT 312 +#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE 313 +#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT 314 +#define _BINARY_OP_MULTIPLY_INT 315 +#define _BINARY_OP_MULTIPLY_INT_INPLACE 316 +#define _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT 317 +#define _BINARY_OP_SUBSCR_CHECK_FUNC 318 +#define _BINARY_OP_SUBSCR_DICT 319 +#define _BINARY_OP_SUBSCR_INIT_CALL 320 +#define _BINARY_OP_SUBSCR_LIST_INT 321 +#define _BINARY_OP_SUBSCR_LIST_SLICE 322 +#define _BINARY_OP_SUBSCR_STR_INT 323 +#define _BINARY_OP_SUBSCR_TUPLE_INT 324 +#define _BINARY_OP_SUBSCR_USTR_INT 325 +#define _BINARY_OP_SUBTRACT_FLOAT 326 +#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE 327 +#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT 328 +#define _BINARY_OP_SUBTRACT_INT 329 +#define _BINARY_OP_SUBTRACT_INT_INPLACE 330 +#define _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT 331 +#define _BINARY_SLICE 332 #define _BUILD_INTERPOLATION BUILD_INTERPOLATION #define _BUILD_LIST BUILD_LIST #define _BUILD_MAP BUILD_MAP @@ -45,181 +50,181 @@ extern "C" { #define _BUILD_STRING BUILD_STRING #define _BUILD_TEMPLATE BUILD_TEMPLATE #define _BUILD_TUPLE BUILD_TUPLE -#define _CALL_BUILTIN_CLASS 328 -#define _CALL_BUILTIN_FAST 329 -#define _CALL_BUILTIN_FAST_WITH_KEYWORDS 330 -#define _CALL_BUILTIN_O 331 -#define _CALL_FUNCTION_EX_NON_PY_GENERAL 332 -#define _CALL_INTRINSIC_1 333 -#define _CALL_INTRINSIC_2 334 -#define _CALL_ISINSTANCE 335 -#define _CALL_KW_NON_PY 336 -#define _CALL_LEN 337 -#define _CALL_LIST_APPEND 338 -#define _CALL_METHOD_DESCRIPTOR_FAST 339 -#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 340 -#define _CALL_METHOD_DESCRIPTOR_NOARGS 341 -#define _CALL_METHOD_DESCRIPTOR_O 342 -#define _CALL_NON_PY_GENERAL 343 -#define _CALL_STR_1 344 -#define _CALL_TUPLE_1 345 -#define _CALL_TYPE_1 346 -#define _CHECK_AND_ALLOCATE_OBJECT 347 -#define _CHECK_ATTR_CLASS 348 -#define _CHECK_ATTR_METHOD_LAZY_DICT 349 -#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS 350 +#define _CALL_BUILTIN_CLASS 333 +#define _CALL_BUILTIN_FAST 334 +#define _CALL_BUILTIN_FAST_WITH_KEYWORDS 335 +#define _CALL_BUILTIN_O 336 +#define _CALL_FUNCTION_EX_NON_PY_GENERAL 337 +#define _CALL_INTRINSIC_1 338 +#define _CALL_INTRINSIC_2 339 +#define _CALL_ISINSTANCE 340 +#define _CALL_KW_NON_PY 341 +#define _CALL_LEN 342 +#define _CALL_LIST_APPEND 343 +#define _CALL_METHOD_DESCRIPTOR_FAST 344 +#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 345 +#define _CALL_METHOD_DESCRIPTOR_NOARGS 346 +#define _CALL_METHOD_DESCRIPTOR_O 347 +#define _CALL_NON_PY_GENERAL 348 +#define _CALL_STR_1 349 +#define _CALL_TUPLE_1 350 +#define _CALL_TYPE_1 351 +#define _CHECK_AND_ALLOCATE_OBJECT 352 +#define _CHECK_ATTR_CLASS 353 +#define _CHECK_ATTR_METHOD_LAZY_DICT 354 +#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS 355 #define _CHECK_EG_MATCH CHECK_EG_MATCH #define _CHECK_EXC_MATCH CHECK_EXC_MATCH -#define _CHECK_FUNCTION_EXACT_ARGS 351 -#define _CHECK_FUNCTION_VERSION 352 -#define _CHECK_FUNCTION_VERSION_INLINE 353 -#define _CHECK_FUNCTION_VERSION_KW 354 -#define _CHECK_IS_NOT_PY_CALLABLE 355 -#define _CHECK_IS_NOT_PY_CALLABLE_EX 356 -#define _CHECK_IS_NOT_PY_CALLABLE_KW 357 -#define _CHECK_IS_PY_CALLABLE_EX 358 -#define _CHECK_MANAGED_OBJECT_HAS_VALUES 359 -#define _CHECK_METHOD_VERSION 360 -#define _CHECK_METHOD_VERSION_KW 361 -#define _CHECK_PEP_523 362 -#define _CHECK_PERIODIC 363 -#define _CHECK_PERIODIC_AT_END 364 -#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM 365 -#define _CHECK_RECURSION_REMAINING 366 -#define _CHECK_STACK_SPACE 367 -#define _CHECK_STACK_SPACE_OPERAND 368 -#define _CHECK_VALIDITY 369 -#define _COLD_DYNAMIC_EXIT 370 -#define _COLD_EXIT 371 -#define _COMPARE_OP 372 -#define _COMPARE_OP_FLOAT 373 -#define _COMPARE_OP_INT 374 -#define _COMPARE_OP_STR 375 -#define _CONTAINS_OP 376 -#define _CONTAINS_OP_DICT 377 -#define _CONTAINS_OP_SET 378 +#define _CHECK_FUNCTION_EXACT_ARGS 356 +#define _CHECK_FUNCTION_VERSION 357 +#define _CHECK_FUNCTION_VERSION_INLINE 358 +#define _CHECK_FUNCTION_VERSION_KW 359 +#define _CHECK_IS_NOT_PY_CALLABLE 360 +#define _CHECK_IS_NOT_PY_CALLABLE_EX 361 +#define _CHECK_IS_NOT_PY_CALLABLE_KW 362 +#define _CHECK_IS_PY_CALLABLE_EX 363 +#define _CHECK_MANAGED_OBJECT_HAS_VALUES 364 +#define _CHECK_METHOD_VERSION 365 +#define _CHECK_METHOD_VERSION_KW 366 +#define _CHECK_PEP_523 367 +#define _CHECK_PERIODIC 368 +#define _CHECK_PERIODIC_AT_END 369 +#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM 370 +#define _CHECK_RECURSION_REMAINING 371 +#define _CHECK_STACK_SPACE 372 +#define _CHECK_STACK_SPACE_OPERAND 373 +#define _CHECK_VALIDITY 374 +#define _COLD_DYNAMIC_EXIT 375 +#define _COLD_EXIT 376 +#define _COMPARE_OP 377 +#define _COMPARE_OP_FLOAT 378 +#define _COMPARE_OP_INT 379 +#define _COMPARE_OP_STR 380 +#define _CONTAINS_OP 381 +#define _CONTAINS_OP_DICT 382 +#define _CONTAINS_OP_SET 383 #define _CONVERT_VALUE CONVERT_VALUE -#define _COPY 379 -#define _COPY_1 380 -#define _COPY_2 381 -#define _COPY_3 382 +#define _COPY 384 +#define _COPY_1 385 +#define _COPY_2 386 +#define _COPY_3 387 #define _COPY_FREE_VARS COPY_FREE_VARS -#define _CREATE_INIT_FRAME 383 +#define _CREATE_INIT_FRAME 388 #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 384 -#define _DICT_MERGE 385 -#define _DICT_UPDATE 386 -#define _DO_CALL 387 -#define _DO_CALL_FUNCTION_EX 388 -#define _DO_CALL_KW 389 -#define _DYNAMIC_EXIT 390 +#define _DEOPT 389 +#define _DICT_MERGE 390 +#define _DICT_UPDATE 391 +#define _DO_CALL 392 +#define _DO_CALL_FUNCTION_EX 393 +#define _DO_CALL_KW 394 +#define _DYNAMIC_EXIT 395 #define _END_FOR END_FOR #define _END_SEND END_SEND -#define _ERROR_POP_N 391 +#define _ERROR_POP_N 396 #define _EXIT_INIT_CHECK EXIT_INIT_CHECK -#define _EXPAND_METHOD 392 -#define _EXPAND_METHOD_KW 393 -#define _FATAL_ERROR 394 +#define _EXPAND_METHOD 397 +#define _EXPAND_METHOD_KW 398 +#define _FATAL_ERROR 399 #define _FORMAT_SIMPLE FORMAT_SIMPLE #define _FORMAT_WITH_SPEC FORMAT_WITH_SPEC -#define _FOR_ITER 395 -#define _FOR_ITER_GEN_FRAME 396 -#define _FOR_ITER_TIER_TWO 397 +#define _FOR_ITER 400 +#define _FOR_ITER_GEN_FRAME 401 +#define _FOR_ITER_TIER_TWO 402 #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 _GUARD_BINARY_OP_EXTEND 398 -#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS 399 -#define _GUARD_BIT_IS_SET_POP 400 -#define _GUARD_BIT_IS_SET_POP_4 401 -#define _GUARD_BIT_IS_SET_POP_5 402 -#define _GUARD_BIT_IS_SET_POP_6 403 -#define _GUARD_BIT_IS_SET_POP_7 404 -#define _GUARD_BIT_IS_UNSET_POP 405 -#define _GUARD_BIT_IS_UNSET_POP_4 406 -#define _GUARD_BIT_IS_UNSET_POP_5 407 -#define _GUARD_BIT_IS_UNSET_POP_6 408 -#define _GUARD_BIT_IS_UNSET_POP_7 409 -#define _GUARD_CALLABLE_BUILTIN_FAST 410 -#define _GUARD_CALLABLE_BUILTIN_FAST_WITH_KEYWORDS 411 -#define _GUARD_CALLABLE_BUILTIN_O 412 -#define _GUARD_CALLABLE_ISINSTANCE 413 -#define _GUARD_CALLABLE_LEN 414 -#define _GUARD_CALLABLE_LIST_APPEND 415 -#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST 416 -#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 417 -#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_NOARGS 418 -#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_O 419 -#define _GUARD_CALLABLE_STR_1 420 -#define _GUARD_CALLABLE_TUPLE_1 421 -#define _GUARD_CALLABLE_TYPE_1 422 -#define _GUARD_CODE_VERSION_RETURN_GENERATOR 423 -#define _GUARD_CODE_VERSION_RETURN_VALUE 424 -#define _GUARD_CODE_VERSION_YIELD_VALUE 425 -#define _GUARD_CODE_VERSION__PUSH_FRAME 426 -#define _GUARD_DORV_NO_DICT 427 -#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 428 -#define _GUARD_GLOBALS_VERSION 429 -#define _GUARD_IP_RETURN_GENERATOR 430 -#define _GUARD_IP_RETURN_VALUE 431 -#define _GUARD_IP_YIELD_VALUE 432 -#define _GUARD_IP__PUSH_FRAME 433 -#define _GUARD_IS_FALSE_POP 434 -#define _GUARD_IS_NONE_POP 435 -#define _GUARD_IS_NOT_NONE_POP 436 -#define _GUARD_IS_TRUE_POP 437 -#define _GUARD_KEYS_VERSION 438 -#define _GUARD_NOS_ANY_DICT 439 -#define _GUARD_NOS_COMPACT_ASCII 440 -#define _GUARD_NOS_DICT 441 -#define _GUARD_NOS_FLOAT 442 -#define _GUARD_NOS_INT 443 -#define _GUARD_NOS_LIST 444 -#define _GUARD_NOS_NOT_NULL 445 -#define _GUARD_NOS_NULL 446 -#define _GUARD_NOS_OVERFLOWED 447 -#define _GUARD_NOS_TUPLE 448 -#define _GUARD_NOS_UNICODE 449 -#define _GUARD_NOT_EXHAUSTED_LIST 450 -#define _GUARD_NOT_EXHAUSTED_RANGE 451 -#define _GUARD_NOT_EXHAUSTED_TUPLE 452 -#define _GUARD_THIRD_NULL 453 -#define _GUARD_TOS_ANY_DICT 454 -#define _GUARD_TOS_ANY_SET 455 -#define _GUARD_TOS_DICT 456 -#define _GUARD_TOS_FLOAT 457 -#define _GUARD_TOS_FROZENDICT 458 -#define _GUARD_TOS_FROZENSET 459 -#define _GUARD_TOS_INT 460 -#define _GUARD_TOS_LIST 461 -#define _GUARD_TOS_OVERFLOWED 462 -#define _GUARD_TOS_SET 463 -#define _GUARD_TOS_SLICE 464 -#define _GUARD_TOS_TUPLE 465 -#define _GUARD_TOS_UNICODE 466 -#define _GUARD_TYPE_VERSION 467 -#define _GUARD_TYPE_VERSION_LOCKED 468 -#define _HANDLE_PENDING_AND_DEOPT 469 +#define _GUARD_BINARY_OP_EXTEND 403 +#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS 404 +#define _GUARD_BIT_IS_SET_POP 405 +#define _GUARD_BIT_IS_SET_POP_4 406 +#define _GUARD_BIT_IS_SET_POP_5 407 +#define _GUARD_BIT_IS_SET_POP_6 408 +#define _GUARD_BIT_IS_SET_POP_7 409 +#define _GUARD_BIT_IS_UNSET_POP 410 +#define _GUARD_BIT_IS_UNSET_POP_4 411 +#define _GUARD_BIT_IS_UNSET_POP_5 412 +#define _GUARD_BIT_IS_UNSET_POP_6 413 +#define _GUARD_BIT_IS_UNSET_POP_7 414 +#define _GUARD_CALLABLE_BUILTIN_FAST 415 +#define _GUARD_CALLABLE_BUILTIN_FAST_WITH_KEYWORDS 416 +#define _GUARD_CALLABLE_BUILTIN_O 417 +#define _GUARD_CALLABLE_ISINSTANCE 418 +#define _GUARD_CALLABLE_LEN 419 +#define _GUARD_CALLABLE_LIST_APPEND 420 +#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST 421 +#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 422 +#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_NOARGS 423 +#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_O 424 +#define _GUARD_CALLABLE_STR_1 425 +#define _GUARD_CALLABLE_TUPLE_1 426 +#define _GUARD_CALLABLE_TYPE_1 427 +#define _GUARD_CODE_VERSION_RETURN_GENERATOR 428 +#define _GUARD_CODE_VERSION_RETURN_VALUE 429 +#define _GUARD_CODE_VERSION_YIELD_VALUE 430 +#define _GUARD_CODE_VERSION__PUSH_FRAME 431 +#define _GUARD_DORV_NO_DICT 432 +#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 433 +#define _GUARD_GLOBALS_VERSION 434 +#define _GUARD_IP_RETURN_GENERATOR 435 +#define _GUARD_IP_RETURN_VALUE 436 +#define _GUARD_IP_YIELD_VALUE 437 +#define _GUARD_IP__PUSH_FRAME 438 +#define _GUARD_IS_FALSE_POP 439 +#define _GUARD_IS_NONE_POP 440 +#define _GUARD_IS_NOT_NONE_POP 441 +#define _GUARD_IS_TRUE_POP 442 +#define _GUARD_KEYS_VERSION 443 +#define _GUARD_NOS_ANY_DICT 444 +#define _GUARD_NOS_COMPACT_ASCII 445 +#define _GUARD_NOS_DICT 446 +#define _GUARD_NOS_FLOAT 447 +#define _GUARD_NOS_INT 448 +#define _GUARD_NOS_LIST 449 +#define _GUARD_NOS_NOT_NULL 450 +#define _GUARD_NOS_NULL 451 +#define _GUARD_NOS_OVERFLOWED 452 +#define _GUARD_NOS_TUPLE 453 +#define _GUARD_NOS_UNICODE 454 +#define _GUARD_NOT_EXHAUSTED_LIST 455 +#define _GUARD_NOT_EXHAUSTED_RANGE 456 +#define _GUARD_NOT_EXHAUSTED_TUPLE 457 +#define _GUARD_THIRD_NULL 458 +#define _GUARD_TOS_ANY_DICT 459 +#define _GUARD_TOS_ANY_SET 460 +#define _GUARD_TOS_DICT 461 +#define _GUARD_TOS_FLOAT 462 +#define _GUARD_TOS_FROZENDICT 463 +#define _GUARD_TOS_FROZENSET 464 +#define _GUARD_TOS_INT 465 +#define _GUARD_TOS_LIST 466 +#define _GUARD_TOS_OVERFLOWED 467 +#define _GUARD_TOS_SET 468 +#define _GUARD_TOS_SLICE 469 +#define _GUARD_TOS_TUPLE 470 +#define _GUARD_TOS_UNICODE 471 +#define _GUARD_TYPE_VERSION 472 +#define _GUARD_TYPE_VERSION_LOCKED 473 +#define _HANDLE_PENDING_AND_DEOPT 474 #define _IMPORT_FROM IMPORT_FROM #define _IMPORT_NAME IMPORT_NAME -#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS 470 -#define _INIT_CALL_PY_EXACT_ARGS 471 -#define _INIT_CALL_PY_EXACT_ARGS_0 472 -#define _INIT_CALL_PY_EXACT_ARGS_1 473 -#define _INIT_CALL_PY_EXACT_ARGS_2 474 -#define _INIT_CALL_PY_EXACT_ARGS_3 475 -#define _INIT_CALL_PY_EXACT_ARGS_4 476 -#define _INSERT_1_LOAD_CONST_INLINE 477 -#define _INSERT_1_LOAD_CONST_INLINE_BORROW 478 -#define _INSERT_2_LOAD_CONST_INLINE_BORROW 479 -#define _INSERT_NULL 480 +#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS 475 +#define _INIT_CALL_PY_EXACT_ARGS 476 +#define _INIT_CALL_PY_EXACT_ARGS_0 477 +#define _INIT_CALL_PY_EXACT_ARGS_1 478 +#define _INIT_CALL_PY_EXACT_ARGS_2 479 +#define _INIT_CALL_PY_EXACT_ARGS_3 480 +#define _INIT_CALL_PY_EXACT_ARGS_4 481 +#define _INSERT_1_LOAD_CONST_INLINE 482 +#define _INSERT_1_LOAD_CONST_INLINE_BORROW 483 +#define _INSERT_2_LOAD_CONST_INLINE_BORROW 484 +#define _INSERT_NULL 485 #define _INSTRUMENTED_FOR_ITER INSTRUMENTED_FOR_ITER #define _INSTRUMENTED_INSTRUCTION INSTRUMENTED_INSTRUCTION #define _INSTRUMENTED_JUMP_FORWARD INSTRUMENTED_JUMP_FORWARD @@ -229,1128 +234,1143 @@ 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 481 -#define _IS_OP 482 -#define _ITER_CHECK_LIST 483 -#define _ITER_CHECK_RANGE 484 -#define _ITER_CHECK_TUPLE 485 -#define _ITER_JUMP_LIST 486 -#define _ITER_JUMP_RANGE 487 -#define _ITER_JUMP_TUPLE 488 -#define _ITER_NEXT_LIST 489 -#define _ITER_NEXT_LIST_TIER_TWO 490 -#define _ITER_NEXT_RANGE 491 -#define _ITER_NEXT_TUPLE 492 +#define _IS_NONE 486 +#define _IS_OP 487 +#define _ITER_CHECK_LIST 488 +#define _ITER_CHECK_RANGE 489 +#define _ITER_CHECK_TUPLE 490 +#define _ITER_JUMP_LIST 491 +#define _ITER_JUMP_RANGE 492 +#define _ITER_JUMP_TUPLE 493 +#define _ITER_NEXT_LIST 494 +#define _ITER_NEXT_LIST_TIER_TWO 495 +#define _ITER_NEXT_RANGE 496 +#define _ITER_NEXT_TUPLE 497 #define _JUMP_BACKWARD_NO_INTERRUPT JUMP_BACKWARD_NO_INTERRUPT -#define _JUMP_TO_TOP 493 +#define _JUMP_TO_TOP 498 #define _LIST_APPEND LIST_APPEND -#define _LIST_EXTEND 494 -#define _LOAD_ATTR 495 -#define _LOAD_ATTR_CLASS 496 +#define _LIST_EXTEND 499 +#define _LOAD_ATTR 500 +#define _LOAD_ATTR_CLASS 501 #define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN -#define _LOAD_ATTR_INSTANCE_VALUE 497 -#define _LOAD_ATTR_METHOD_LAZY_DICT 498 -#define _LOAD_ATTR_METHOD_NO_DICT 499 -#define _LOAD_ATTR_METHOD_WITH_VALUES 500 -#define _LOAD_ATTR_MODULE 501 -#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 502 -#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 503 -#define _LOAD_ATTR_PROPERTY_FRAME 504 -#define _LOAD_ATTR_SLOT 505 -#define _LOAD_ATTR_WITH_HINT 506 +#define _LOAD_ATTR_INSTANCE_VALUE 502 +#define _LOAD_ATTR_METHOD_LAZY_DICT 503 +#define _LOAD_ATTR_METHOD_NO_DICT 504 +#define _LOAD_ATTR_METHOD_WITH_VALUES 505 +#define _LOAD_ATTR_MODULE 506 +#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 507 +#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 508 +#define _LOAD_ATTR_PROPERTY_FRAME 509 +#define _LOAD_ATTR_SLOT 510 +#define _LOAD_ATTR_WITH_HINT 511 #define _LOAD_BUILD_CLASS LOAD_BUILD_CLASS -#define _LOAD_BYTECODE 507 +#define _LOAD_BYTECODE 512 #define _LOAD_COMMON_CONSTANT LOAD_COMMON_CONSTANT #define _LOAD_CONST LOAD_CONST -#define _LOAD_CONST_INLINE 508 -#define _LOAD_CONST_INLINE_BORROW 509 -#define _LOAD_CONST_UNDER_INLINE 510 -#define _LOAD_CONST_UNDER_INLINE_BORROW 511 +#define _LOAD_CONST_INLINE 513 +#define _LOAD_CONST_INLINE_BORROW 514 +#define _LOAD_CONST_UNDER_INLINE 515 +#define _LOAD_CONST_UNDER_INLINE_BORROW 516 #define _LOAD_DEREF LOAD_DEREF -#define _LOAD_FAST 512 -#define _LOAD_FAST_0 513 -#define _LOAD_FAST_1 514 -#define _LOAD_FAST_2 515 -#define _LOAD_FAST_3 516 -#define _LOAD_FAST_4 517 -#define _LOAD_FAST_5 518 -#define _LOAD_FAST_6 519 -#define _LOAD_FAST_7 520 +#define _LOAD_FAST 517 +#define _LOAD_FAST_0 518 +#define _LOAD_FAST_1 519 +#define _LOAD_FAST_2 520 +#define _LOAD_FAST_3 521 +#define _LOAD_FAST_4 522 +#define _LOAD_FAST_5 523 +#define _LOAD_FAST_6 524 +#define _LOAD_FAST_7 525 #define _LOAD_FAST_AND_CLEAR LOAD_FAST_AND_CLEAR -#define _LOAD_FAST_BORROW 521 -#define _LOAD_FAST_BORROW_0 522 -#define _LOAD_FAST_BORROW_1 523 -#define _LOAD_FAST_BORROW_2 524 -#define _LOAD_FAST_BORROW_3 525 -#define _LOAD_FAST_BORROW_4 526 -#define _LOAD_FAST_BORROW_5 527 -#define _LOAD_FAST_BORROW_6 528 -#define _LOAD_FAST_BORROW_7 529 +#define _LOAD_FAST_BORROW 526 +#define _LOAD_FAST_BORROW_0 527 +#define _LOAD_FAST_BORROW_1 528 +#define _LOAD_FAST_BORROW_2 529 +#define _LOAD_FAST_BORROW_3 530 +#define _LOAD_FAST_BORROW_4 531 +#define _LOAD_FAST_BORROW_5 532 +#define _LOAD_FAST_BORROW_6 533 +#define _LOAD_FAST_BORROW_7 534 #define _LOAD_FAST_CHECK LOAD_FAST_CHECK #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 530 -#define _LOAD_GLOBAL_BUILTINS 531 -#define _LOAD_GLOBAL_MODULE 532 +#define _LOAD_GLOBAL 535 +#define _LOAD_GLOBAL_BUILTINS 536 +#define _LOAD_GLOBAL_MODULE 537 #define _LOAD_LOCALS LOAD_LOCALS #define _LOAD_NAME LOAD_NAME -#define _LOAD_SMALL_INT 533 -#define _LOAD_SMALL_INT_0 534 -#define _LOAD_SMALL_INT_1 535 -#define _LOAD_SMALL_INT_2 536 -#define _LOAD_SMALL_INT_3 537 -#define _LOAD_SPECIAL 538 +#define _LOAD_SMALL_INT 538 +#define _LOAD_SMALL_INT_0 539 +#define _LOAD_SMALL_INT_1 540 +#define _LOAD_SMALL_INT_2 541 +#define _LOAD_SMALL_INT_3 542 +#define _LOAD_SPECIAL 543 #define _LOAD_SUPER_ATTR_ATTR LOAD_SUPER_ATTR_ATTR #define _LOAD_SUPER_ATTR_METHOD LOAD_SUPER_ATTR_METHOD -#define _LOCK_OBJECT 539 -#define _MAKE_CALLARGS_A_TUPLE 540 +#define _LOCK_OBJECT 544 +#define _MAKE_CALLARGS_A_TUPLE 545 #define _MAKE_CELL MAKE_CELL #define _MAKE_FUNCTION MAKE_FUNCTION -#define _MAKE_HEAP_SAFE 541 -#define _MAKE_WARM 542 +#define _MAKE_HEAP_SAFE 546 +#define _MAKE_WARM 547 #define _MAP_ADD MAP_ADD -#define _MATCH_CLASS 543 +#define _MATCH_CLASS 548 #define _MATCH_KEYS MATCH_KEYS #define _MATCH_MAPPING MATCH_MAPPING #define _MATCH_SEQUENCE MATCH_SEQUENCE -#define _MAYBE_EXPAND_METHOD 544 -#define _MAYBE_EXPAND_METHOD_KW 545 -#define _MONITOR_CALL 546 -#define _MONITOR_CALL_KW 547 -#define _MONITOR_JUMP_BACKWARD 548 -#define _MONITOR_RESUME 549 +#define _MAYBE_EXPAND_METHOD 549 +#define _MAYBE_EXPAND_METHOD_KW 550 +#define _MONITOR_CALL 551 +#define _MONITOR_CALL_KW 552 +#define _MONITOR_JUMP_BACKWARD 553 +#define _MONITOR_RESUME 554 #define _NOP NOP -#define _POP_CALL 550 -#define _POP_CALL_LOAD_CONST_INLINE_BORROW 551 -#define _POP_CALL_ONE 552 -#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW 553 -#define _POP_CALL_TWO 554 -#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW 555 +#define _POP_CALL 555 +#define _POP_CALL_LOAD_CONST_INLINE_BORROW 556 +#define _POP_CALL_ONE 557 +#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW 558 +#define _POP_CALL_TWO 559 +#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW 560 #define _POP_EXCEPT POP_EXCEPT #define _POP_ITER POP_ITER -#define _POP_JUMP_IF_FALSE 556 -#define _POP_JUMP_IF_TRUE 557 +#define _POP_JUMP_IF_FALSE 561 +#define _POP_JUMP_IF_TRUE 562 #define _POP_TOP POP_TOP -#define _POP_TOP_FLOAT 558 -#define _POP_TOP_INT 559 -#define _POP_TOP_LOAD_CONST_INLINE 560 -#define _POP_TOP_LOAD_CONST_INLINE_BORROW 561 -#define _POP_TOP_NOP 562 -#define _POP_TOP_UNICODE 563 -#define _POP_TWO 564 -#define _POP_TWO_LOAD_CONST_INLINE_BORROW 565 +#define _POP_TOP_FLOAT 563 +#define _POP_TOP_INT 564 +#define _POP_TOP_LOAD_CONST_INLINE 565 +#define _POP_TOP_LOAD_CONST_INLINE_BORROW 566 +#define _POP_TOP_NOP 567 +#define _POP_TOP_UNICODE 568 +#define _POP_TWO 569 +#define _POP_TWO_LOAD_CONST_INLINE_BORROW 570 #define _PUSH_EXC_INFO PUSH_EXC_INFO -#define _PUSH_FRAME 566 +#define _PUSH_FRAME 571 #define _PUSH_NULL PUSH_NULL -#define _PUSH_NULL_CONDITIONAL 567 -#define _PY_FRAME_EX 568 -#define _PY_FRAME_GENERAL 569 -#define _PY_FRAME_KW 570 -#define _RECORD_3OS_GEN_FUNC 571 -#define _RECORD_4OS 572 -#define _RECORD_BOUND_METHOD 573 -#define _RECORD_CALLABLE 574 -#define _RECORD_CODE 575 -#define _RECORD_NOS 576 -#define _RECORD_NOS_GEN_FUNC 577 -#define _RECORD_TOS 578 -#define _RECORD_TOS_TYPE 579 -#define _REPLACE_WITH_TRUE 580 -#define _RESUME_CHECK 581 +#define _PUSH_NULL_CONDITIONAL 572 +#define _PY_FRAME_EX 573 +#define _PY_FRAME_GENERAL 574 +#define _PY_FRAME_KW 575 +#define _RECORD_3OS_GEN_FUNC 576 +#define _RECORD_4OS 577 +#define _RECORD_BOUND_METHOD 578 +#define _RECORD_CALLABLE 579 +#define _RECORD_CODE 580 +#define _RECORD_NOS 581 +#define _RECORD_NOS_GEN_FUNC 582 +#define _RECORD_TOS 583 +#define _RECORD_TOS_TYPE 584 +#define _REPLACE_WITH_TRUE 585 +#define _RESUME_CHECK 586 #define _RETURN_GENERATOR RETURN_GENERATOR -#define _RETURN_VALUE 582 -#define _SAVE_RETURN_OFFSET 583 -#define _SEND 584 -#define _SEND_GEN_FRAME 585 +#define _RETURN_VALUE 587 +#define _SAVE_RETURN_OFFSET 588 +#define _SEND 589 +#define _SEND_GEN_FRAME 590 #define _SETUP_ANNOTATIONS SETUP_ANNOTATIONS #define _SET_ADD SET_ADD #define _SET_FUNCTION_ATTRIBUTE SET_FUNCTION_ATTRIBUTE -#define _SET_UPDATE 586 -#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW 587 -#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW 588 -#define _SPILL_OR_RELOAD 589 -#define _START_EXECUTOR 590 -#define _STORE_ATTR 591 -#define _STORE_ATTR_INSTANCE_VALUE 592 -#define _STORE_ATTR_SLOT 593 -#define _STORE_ATTR_WITH_HINT 594 +#define _SET_UPDATE 591 +#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW 592 +#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW 593 +#define _SPILL_OR_RELOAD 594 +#define _START_EXECUTOR 595 +#define _STORE_ATTR 596 +#define _STORE_ATTR_INSTANCE_VALUE 597 +#define _STORE_ATTR_SLOT 598 +#define _STORE_ATTR_WITH_HINT 599 #define _STORE_DEREF STORE_DEREF #define _STORE_GLOBAL STORE_GLOBAL #define _STORE_NAME STORE_NAME -#define _STORE_SLICE 595 -#define _STORE_SUBSCR 596 -#define _STORE_SUBSCR_DICT 597 -#define _STORE_SUBSCR_DICT_KNOWN_HASH 598 -#define _STORE_SUBSCR_LIST_INT 599 -#define _SWAP 600 -#define _SWAP_2 601 -#define _SWAP_3 602 -#define _SWAP_FAST 603 -#define _SWAP_FAST_0 604 -#define _SWAP_FAST_1 605 -#define _SWAP_FAST_2 606 -#define _SWAP_FAST_3 607 -#define _SWAP_FAST_4 608 -#define _SWAP_FAST_5 609 -#define _SWAP_FAST_6 610 -#define _SWAP_FAST_7 611 -#define _TIER2_RESUME_CHECK 612 -#define _TO_BOOL 613 +#define _STORE_SLICE 600 +#define _STORE_SUBSCR 601 +#define _STORE_SUBSCR_DICT 602 +#define _STORE_SUBSCR_LIST_INT 603 +#define _SWAP 604 +#define _SWAP_2 605 +#define _SWAP_3 606 +#define _SWAP_FAST 607 +#define _SWAP_FAST_0 608 +#define _SWAP_FAST_1 609 +#define _SWAP_FAST_2 610 +#define _SWAP_FAST_3 611 +#define _SWAP_FAST_4 612 +#define _SWAP_FAST_5 613 +#define _SWAP_FAST_6 614 +#define _SWAP_FAST_7 615 +#define _TIER2_RESUME_CHECK 616 +#define _TO_BOOL 617 #define _TO_BOOL_BOOL TO_BOOL_BOOL -#define _TO_BOOL_INT 614 -#define _TO_BOOL_LIST 615 +#define _TO_BOOL_INT 618 +#define _TO_BOOL_LIST 619 #define _TO_BOOL_NONE TO_BOOL_NONE -#define _TO_BOOL_STR 616 +#define _TO_BOOL_STR 620 #define _TRACE_RECORD TRACE_RECORD -#define _UNARY_INVERT 617 -#define _UNARY_NEGATIVE 618 -#define _UNARY_NEGATIVE_FLOAT_INPLACE 619 +#define _UNARY_INVERT 621 +#define _UNARY_NEGATIVE 622 +#define _UNARY_NEGATIVE_FLOAT_INPLACE 623 #define _UNARY_NOT UNARY_NOT #define _UNPACK_EX UNPACK_EX -#define _UNPACK_SEQUENCE 620 -#define _UNPACK_SEQUENCE_LIST 621 -#define _UNPACK_SEQUENCE_TUPLE 622 -#define _UNPACK_SEQUENCE_TWO_TUPLE 623 -#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE 624 -#define _UNPACK_SEQUENCE_UNIQUE_TUPLE 625 -#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE 626 +#define _UNPACK_SEQUENCE 624 +#define _UNPACK_SEQUENCE_LIST 625 +#define _UNPACK_SEQUENCE_TUPLE 626 +#define _UNPACK_SEQUENCE_TWO_TUPLE 627 +#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE 628 +#define _UNPACK_SEQUENCE_UNIQUE_TUPLE 629 +#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE 630 #define _WITH_EXCEPT_START WITH_EXCEPT_START -#define _YIELD_VALUE 627 -#define MAX_UOP_ID 627 -#define _BINARY_OP_r23 628 -#define _BINARY_OP_ADD_FLOAT_r03 629 -#define _BINARY_OP_ADD_FLOAT_r13 630 -#define _BINARY_OP_ADD_FLOAT_r23 631 -#define _BINARY_OP_ADD_FLOAT_INPLACE_r03 632 -#define _BINARY_OP_ADD_FLOAT_INPLACE_r13 633 -#define _BINARY_OP_ADD_FLOAT_INPLACE_r23 634 -#define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT_r03 635 -#define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT_r13 636 -#define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT_r23 637 -#define _BINARY_OP_ADD_INT_r03 638 -#define _BINARY_OP_ADD_INT_r13 639 -#define _BINARY_OP_ADD_INT_r23 640 -#define _BINARY_OP_ADD_UNICODE_r03 641 -#define _BINARY_OP_ADD_UNICODE_r13 642 -#define _BINARY_OP_ADD_UNICODE_r23 643 -#define _BINARY_OP_EXTEND_r23 644 -#define _BINARY_OP_INPLACE_ADD_UNICODE_r21 645 -#define _BINARY_OP_MULTIPLY_FLOAT_r03 646 -#define _BINARY_OP_MULTIPLY_FLOAT_r13 647 -#define _BINARY_OP_MULTIPLY_FLOAT_r23 648 -#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_r03 649 -#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_r13 650 -#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_r23 651 -#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT_r03 652 -#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT_r13 653 -#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT_r23 654 -#define _BINARY_OP_MULTIPLY_INT_r03 655 -#define _BINARY_OP_MULTIPLY_INT_r13 656 -#define _BINARY_OP_MULTIPLY_INT_r23 657 -#define _BINARY_OP_SUBSCR_CHECK_FUNC_r23 658 -#define _BINARY_OP_SUBSCR_DICT_r23 659 -#define _BINARY_OP_SUBSCR_DICT_KNOWN_HASH_r23 660 -#define _BINARY_OP_SUBSCR_INIT_CALL_r01 661 -#define _BINARY_OP_SUBSCR_INIT_CALL_r11 662 -#define _BINARY_OP_SUBSCR_INIT_CALL_r21 663 -#define _BINARY_OP_SUBSCR_INIT_CALL_r31 664 -#define _BINARY_OP_SUBSCR_LIST_INT_r23 665 -#define _BINARY_OP_SUBSCR_LIST_SLICE_r23 666 -#define _BINARY_OP_SUBSCR_STR_INT_r23 667 -#define _BINARY_OP_SUBSCR_TUPLE_INT_r03 668 -#define _BINARY_OP_SUBSCR_TUPLE_INT_r13 669 -#define _BINARY_OP_SUBSCR_TUPLE_INT_r23 670 -#define _BINARY_OP_SUBSCR_USTR_INT_r23 671 -#define _BINARY_OP_SUBTRACT_FLOAT_r03 672 -#define _BINARY_OP_SUBTRACT_FLOAT_r13 673 -#define _BINARY_OP_SUBTRACT_FLOAT_r23 674 -#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_r03 675 -#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_r13 676 -#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_r23 677 -#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT_r03 678 -#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT_r13 679 -#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT_r23 680 -#define _BINARY_OP_SUBTRACT_INT_r03 681 -#define _BINARY_OP_SUBTRACT_INT_r13 682 -#define _BINARY_OP_SUBTRACT_INT_r23 683 -#define _BINARY_SLICE_r31 684 -#define _BUILD_INTERPOLATION_r01 685 -#define _BUILD_LIST_r01 686 -#define _BUILD_MAP_r01 687 -#define _BUILD_SET_r01 688 -#define _BUILD_SLICE_r01 689 -#define _BUILD_STRING_r01 690 -#define _BUILD_TEMPLATE_r21 691 -#define _BUILD_TUPLE_r01 692 -#define _CALL_BUILTIN_CLASS_r01 693 -#define _CALL_BUILTIN_FAST_r01 694 -#define _CALL_BUILTIN_FAST_WITH_KEYWORDS_r01 695 -#define _CALL_BUILTIN_O_r03 696 -#define _CALL_FUNCTION_EX_NON_PY_GENERAL_r31 697 -#define _CALL_INTRINSIC_1_r12 698 -#define _CALL_INTRINSIC_2_r23 699 -#define _CALL_ISINSTANCE_r31 700 -#define _CALL_KW_NON_PY_r11 701 -#define _CALL_LEN_r33 702 -#define _CALL_LIST_APPEND_r03 703 -#define _CALL_LIST_APPEND_r13 704 -#define _CALL_LIST_APPEND_r23 705 -#define _CALL_LIST_APPEND_r33 706 -#define _CALL_METHOD_DESCRIPTOR_FAST_r01 707 -#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_r01 708 -#define _CALL_METHOD_DESCRIPTOR_NOARGS_r01 709 -#define _CALL_METHOD_DESCRIPTOR_O_r03 710 -#define _CALL_NON_PY_GENERAL_r01 711 -#define _CALL_STR_1_r32 712 -#define _CALL_TUPLE_1_r32 713 -#define _CALL_TYPE_1_r02 714 -#define _CALL_TYPE_1_r12 715 -#define _CALL_TYPE_1_r22 716 -#define _CALL_TYPE_1_r32 717 -#define _CHECK_AND_ALLOCATE_OBJECT_r00 718 -#define _CHECK_ATTR_CLASS_r01 719 -#define _CHECK_ATTR_CLASS_r11 720 -#define _CHECK_ATTR_CLASS_r22 721 -#define _CHECK_ATTR_CLASS_r33 722 -#define _CHECK_ATTR_METHOD_LAZY_DICT_r01 723 -#define _CHECK_ATTR_METHOD_LAZY_DICT_r11 724 -#define _CHECK_ATTR_METHOD_LAZY_DICT_r22 725 -#define _CHECK_ATTR_METHOD_LAZY_DICT_r33 726 -#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS_r00 727 -#define _CHECK_EG_MATCH_r22 728 -#define _CHECK_EXC_MATCH_r22 729 -#define _CHECK_FUNCTION_EXACT_ARGS_r00 730 -#define _CHECK_FUNCTION_VERSION_r00 731 -#define _CHECK_FUNCTION_VERSION_INLINE_r00 732 -#define _CHECK_FUNCTION_VERSION_INLINE_r11 733 -#define _CHECK_FUNCTION_VERSION_INLINE_r22 734 -#define _CHECK_FUNCTION_VERSION_INLINE_r33 735 -#define _CHECK_FUNCTION_VERSION_KW_r11 736 -#define _CHECK_IS_NOT_PY_CALLABLE_r00 737 -#define _CHECK_IS_NOT_PY_CALLABLE_EX_r03 738 -#define _CHECK_IS_NOT_PY_CALLABLE_EX_r13 739 -#define _CHECK_IS_NOT_PY_CALLABLE_EX_r23 740 -#define _CHECK_IS_NOT_PY_CALLABLE_EX_r33 741 -#define _CHECK_IS_NOT_PY_CALLABLE_KW_r11 742 -#define _CHECK_IS_PY_CALLABLE_EX_r03 743 -#define _CHECK_IS_PY_CALLABLE_EX_r13 744 -#define _CHECK_IS_PY_CALLABLE_EX_r23 745 -#define _CHECK_IS_PY_CALLABLE_EX_r33 746 -#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r01 747 -#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r11 748 -#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r22 749 -#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r33 750 -#define _CHECK_METHOD_VERSION_r00 751 -#define _CHECK_METHOD_VERSION_KW_r11 752 -#define _CHECK_PEP_523_r00 753 -#define _CHECK_PEP_523_r11 754 -#define _CHECK_PEP_523_r22 755 -#define _CHECK_PEP_523_r33 756 -#define _CHECK_PERIODIC_r00 757 -#define _CHECK_PERIODIC_AT_END_r00 758 -#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM_r00 759 -#define _CHECK_RECURSION_REMAINING_r00 760 -#define _CHECK_RECURSION_REMAINING_r11 761 -#define _CHECK_RECURSION_REMAINING_r22 762 -#define _CHECK_RECURSION_REMAINING_r33 763 -#define _CHECK_STACK_SPACE_r00 764 -#define _CHECK_STACK_SPACE_OPERAND_r00 765 -#define _CHECK_STACK_SPACE_OPERAND_r11 766 -#define _CHECK_STACK_SPACE_OPERAND_r22 767 -#define _CHECK_STACK_SPACE_OPERAND_r33 768 -#define _CHECK_VALIDITY_r00 769 -#define _CHECK_VALIDITY_r11 770 -#define _CHECK_VALIDITY_r22 771 -#define _CHECK_VALIDITY_r33 772 -#define _COLD_DYNAMIC_EXIT_r00 773 -#define _COLD_EXIT_r00 774 -#define _COMPARE_OP_r21 775 -#define _COMPARE_OP_FLOAT_r03 776 -#define _COMPARE_OP_FLOAT_r13 777 -#define _COMPARE_OP_FLOAT_r23 778 -#define _COMPARE_OP_INT_r23 779 -#define _COMPARE_OP_STR_r23 780 -#define _CONTAINS_OP_r23 781 -#define _CONTAINS_OP_DICT_r23 782 -#define _CONTAINS_OP_SET_r23 783 -#define _CONVERT_VALUE_r11 784 -#define _COPY_r01 785 -#define _COPY_1_r02 786 -#define _COPY_1_r12 787 -#define _COPY_1_r23 788 -#define _COPY_2_r03 789 -#define _COPY_2_r13 790 -#define _COPY_2_r23 791 -#define _COPY_3_r03 792 -#define _COPY_3_r13 793 -#define _COPY_3_r23 794 -#define _COPY_3_r33 795 -#define _COPY_FREE_VARS_r00 796 -#define _COPY_FREE_VARS_r11 797 -#define _COPY_FREE_VARS_r22 798 -#define _COPY_FREE_VARS_r33 799 -#define _CREATE_INIT_FRAME_r01 800 -#define _DELETE_ATTR_r10 801 -#define _DELETE_DEREF_r00 802 -#define _DELETE_FAST_r00 803 -#define _DELETE_GLOBAL_r00 804 -#define _DELETE_NAME_r00 805 -#define _DELETE_SUBSCR_r20 806 -#define _DEOPT_r00 807 -#define _DEOPT_r10 808 -#define _DEOPT_r20 809 -#define _DEOPT_r30 810 -#define _DICT_MERGE_r11 811 -#define _DICT_UPDATE_r11 812 -#define _DO_CALL_r01 813 -#define _DO_CALL_FUNCTION_EX_r31 814 -#define _DO_CALL_KW_r11 815 -#define _DYNAMIC_EXIT_r00 816 -#define _DYNAMIC_EXIT_r10 817 -#define _DYNAMIC_EXIT_r20 818 -#define _DYNAMIC_EXIT_r30 819 -#define _END_FOR_r10 820 -#define _END_SEND_r31 821 -#define _ERROR_POP_N_r00 822 -#define _EXIT_INIT_CHECK_r10 823 -#define _EXIT_TRACE_r00 824 -#define _EXIT_TRACE_r10 825 -#define _EXIT_TRACE_r20 826 -#define _EXIT_TRACE_r30 827 -#define _EXPAND_METHOD_r00 828 -#define _EXPAND_METHOD_KW_r11 829 -#define _FATAL_ERROR_r00 830 -#define _FATAL_ERROR_r11 831 -#define _FATAL_ERROR_r22 832 -#define _FATAL_ERROR_r33 833 -#define _FORMAT_SIMPLE_r11 834 -#define _FORMAT_WITH_SPEC_r21 835 -#define _FOR_ITER_r23 836 -#define _FOR_ITER_GEN_FRAME_r03 837 -#define _FOR_ITER_GEN_FRAME_r13 838 -#define _FOR_ITER_GEN_FRAME_r23 839 -#define _FOR_ITER_TIER_TWO_r23 840 -#define _GET_AITER_r11 841 -#define _GET_ANEXT_r12 842 -#define _GET_AWAITABLE_r11 843 -#define _GET_ITER_r12 844 -#define _GET_LEN_r12 845 -#define _GUARD_BINARY_OP_EXTEND_r22 846 -#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r02 847 -#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r12 848 -#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r22 849 -#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r33 850 -#define _GUARD_BIT_IS_SET_POP_r00 851 -#define _GUARD_BIT_IS_SET_POP_r10 852 -#define _GUARD_BIT_IS_SET_POP_r21 853 -#define _GUARD_BIT_IS_SET_POP_r32 854 -#define _GUARD_BIT_IS_SET_POP_4_r00 855 -#define _GUARD_BIT_IS_SET_POP_4_r10 856 -#define _GUARD_BIT_IS_SET_POP_4_r21 857 -#define _GUARD_BIT_IS_SET_POP_4_r32 858 -#define _GUARD_BIT_IS_SET_POP_5_r00 859 -#define _GUARD_BIT_IS_SET_POP_5_r10 860 -#define _GUARD_BIT_IS_SET_POP_5_r21 861 -#define _GUARD_BIT_IS_SET_POP_5_r32 862 -#define _GUARD_BIT_IS_SET_POP_6_r00 863 -#define _GUARD_BIT_IS_SET_POP_6_r10 864 -#define _GUARD_BIT_IS_SET_POP_6_r21 865 -#define _GUARD_BIT_IS_SET_POP_6_r32 866 -#define _GUARD_BIT_IS_SET_POP_7_r00 867 -#define _GUARD_BIT_IS_SET_POP_7_r10 868 -#define _GUARD_BIT_IS_SET_POP_7_r21 869 -#define _GUARD_BIT_IS_SET_POP_7_r32 870 -#define _GUARD_BIT_IS_UNSET_POP_r00 871 -#define _GUARD_BIT_IS_UNSET_POP_r10 872 -#define _GUARD_BIT_IS_UNSET_POP_r21 873 -#define _GUARD_BIT_IS_UNSET_POP_r32 874 -#define _GUARD_BIT_IS_UNSET_POP_4_r00 875 -#define _GUARD_BIT_IS_UNSET_POP_4_r10 876 -#define _GUARD_BIT_IS_UNSET_POP_4_r21 877 -#define _GUARD_BIT_IS_UNSET_POP_4_r32 878 -#define _GUARD_BIT_IS_UNSET_POP_5_r00 879 -#define _GUARD_BIT_IS_UNSET_POP_5_r10 880 -#define _GUARD_BIT_IS_UNSET_POP_5_r21 881 -#define _GUARD_BIT_IS_UNSET_POP_5_r32 882 -#define _GUARD_BIT_IS_UNSET_POP_6_r00 883 -#define _GUARD_BIT_IS_UNSET_POP_6_r10 884 -#define _GUARD_BIT_IS_UNSET_POP_6_r21 885 -#define _GUARD_BIT_IS_UNSET_POP_6_r32 886 -#define _GUARD_BIT_IS_UNSET_POP_7_r00 887 -#define _GUARD_BIT_IS_UNSET_POP_7_r10 888 -#define _GUARD_BIT_IS_UNSET_POP_7_r21 889 -#define _GUARD_BIT_IS_UNSET_POP_7_r32 890 -#define _GUARD_CALLABLE_BUILTIN_FAST_r00 891 -#define _GUARD_CALLABLE_BUILTIN_FAST_WITH_KEYWORDS_r00 892 -#define _GUARD_CALLABLE_BUILTIN_O_r00 893 -#define _GUARD_CALLABLE_ISINSTANCE_r03 894 -#define _GUARD_CALLABLE_ISINSTANCE_r13 895 -#define _GUARD_CALLABLE_ISINSTANCE_r23 896 -#define _GUARD_CALLABLE_ISINSTANCE_r33 897 -#define _GUARD_CALLABLE_LEN_r03 898 -#define _GUARD_CALLABLE_LEN_r13 899 -#define _GUARD_CALLABLE_LEN_r23 900 -#define _GUARD_CALLABLE_LEN_r33 901 -#define _GUARD_CALLABLE_LIST_APPEND_r03 902 -#define _GUARD_CALLABLE_LIST_APPEND_r13 903 -#define _GUARD_CALLABLE_LIST_APPEND_r23 904 -#define _GUARD_CALLABLE_LIST_APPEND_r33 905 -#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_r00 906 -#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_r00 907 -#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_NOARGS_r00 908 -#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_O_r00 909 -#define _GUARD_CALLABLE_STR_1_r03 910 -#define _GUARD_CALLABLE_STR_1_r13 911 -#define _GUARD_CALLABLE_STR_1_r23 912 -#define _GUARD_CALLABLE_STR_1_r33 913 -#define _GUARD_CALLABLE_TUPLE_1_r03 914 -#define _GUARD_CALLABLE_TUPLE_1_r13 915 -#define _GUARD_CALLABLE_TUPLE_1_r23 916 -#define _GUARD_CALLABLE_TUPLE_1_r33 917 -#define _GUARD_CALLABLE_TYPE_1_r03 918 -#define _GUARD_CALLABLE_TYPE_1_r13 919 -#define _GUARD_CALLABLE_TYPE_1_r23 920 -#define _GUARD_CALLABLE_TYPE_1_r33 921 -#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r00 922 -#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r11 923 -#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r22 924 -#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r33 925 -#define _GUARD_CODE_VERSION_RETURN_VALUE_r00 926 -#define _GUARD_CODE_VERSION_RETURN_VALUE_r11 927 -#define _GUARD_CODE_VERSION_RETURN_VALUE_r22 928 -#define _GUARD_CODE_VERSION_RETURN_VALUE_r33 929 -#define _GUARD_CODE_VERSION_YIELD_VALUE_r00 930 -#define _GUARD_CODE_VERSION_YIELD_VALUE_r11 931 -#define _GUARD_CODE_VERSION_YIELD_VALUE_r22 932 -#define _GUARD_CODE_VERSION_YIELD_VALUE_r33 933 -#define _GUARD_CODE_VERSION__PUSH_FRAME_r00 934 -#define _GUARD_CODE_VERSION__PUSH_FRAME_r11 935 -#define _GUARD_CODE_VERSION__PUSH_FRAME_r22 936 -#define _GUARD_CODE_VERSION__PUSH_FRAME_r33 937 -#define _GUARD_DORV_NO_DICT_r01 938 -#define _GUARD_DORV_NO_DICT_r11 939 -#define _GUARD_DORV_NO_DICT_r22 940 -#define _GUARD_DORV_NO_DICT_r33 941 -#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r01 942 -#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r11 943 -#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r22 944 -#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r33 945 -#define _GUARD_GLOBALS_VERSION_r00 946 -#define _GUARD_GLOBALS_VERSION_r11 947 -#define _GUARD_GLOBALS_VERSION_r22 948 -#define _GUARD_GLOBALS_VERSION_r33 949 -#define _GUARD_IP_RETURN_GENERATOR_r00 950 -#define _GUARD_IP_RETURN_GENERATOR_r11 951 -#define _GUARD_IP_RETURN_GENERATOR_r22 952 -#define _GUARD_IP_RETURN_GENERATOR_r33 953 -#define _GUARD_IP_RETURN_VALUE_r00 954 -#define _GUARD_IP_RETURN_VALUE_r11 955 -#define _GUARD_IP_RETURN_VALUE_r22 956 -#define _GUARD_IP_RETURN_VALUE_r33 957 -#define _GUARD_IP_YIELD_VALUE_r00 958 -#define _GUARD_IP_YIELD_VALUE_r11 959 -#define _GUARD_IP_YIELD_VALUE_r22 960 -#define _GUARD_IP_YIELD_VALUE_r33 961 -#define _GUARD_IP__PUSH_FRAME_r00 962 -#define _GUARD_IP__PUSH_FRAME_r11 963 -#define _GUARD_IP__PUSH_FRAME_r22 964 -#define _GUARD_IP__PUSH_FRAME_r33 965 -#define _GUARD_IS_FALSE_POP_r00 966 -#define _GUARD_IS_FALSE_POP_r10 967 -#define _GUARD_IS_FALSE_POP_r21 968 -#define _GUARD_IS_FALSE_POP_r32 969 -#define _GUARD_IS_NONE_POP_r00 970 -#define _GUARD_IS_NONE_POP_r10 971 -#define _GUARD_IS_NONE_POP_r21 972 -#define _GUARD_IS_NONE_POP_r32 973 -#define _GUARD_IS_NOT_NONE_POP_r10 974 -#define _GUARD_IS_TRUE_POP_r00 975 -#define _GUARD_IS_TRUE_POP_r10 976 -#define _GUARD_IS_TRUE_POP_r21 977 -#define _GUARD_IS_TRUE_POP_r32 978 -#define _GUARD_KEYS_VERSION_r01 979 -#define _GUARD_KEYS_VERSION_r11 980 -#define _GUARD_KEYS_VERSION_r22 981 -#define _GUARD_KEYS_VERSION_r33 982 -#define _GUARD_NOS_ANY_DICT_r02 983 -#define _GUARD_NOS_ANY_DICT_r12 984 -#define _GUARD_NOS_ANY_DICT_r22 985 -#define _GUARD_NOS_ANY_DICT_r33 986 -#define _GUARD_NOS_COMPACT_ASCII_r02 987 -#define _GUARD_NOS_COMPACT_ASCII_r12 988 -#define _GUARD_NOS_COMPACT_ASCII_r22 989 -#define _GUARD_NOS_COMPACT_ASCII_r33 990 -#define _GUARD_NOS_DICT_r02 991 -#define _GUARD_NOS_DICT_r12 992 -#define _GUARD_NOS_DICT_r22 993 -#define _GUARD_NOS_DICT_r33 994 -#define _GUARD_NOS_FLOAT_r02 995 -#define _GUARD_NOS_FLOAT_r12 996 -#define _GUARD_NOS_FLOAT_r22 997 -#define _GUARD_NOS_FLOAT_r33 998 -#define _GUARD_NOS_INT_r02 999 -#define _GUARD_NOS_INT_r12 1000 -#define _GUARD_NOS_INT_r22 1001 -#define _GUARD_NOS_INT_r33 1002 -#define _GUARD_NOS_LIST_r02 1003 -#define _GUARD_NOS_LIST_r12 1004 -#define _GUARD_NOS_LIST_r22 1005 -#define _GUARD_NOS_LIST_r33 1006 -#define _GUARD_NOS_NOT_NULL_r02 1007 -#define _GUARD_NOS_NOT_NULL_r12 1008 -#define _GUARD_NOS_NOT_NULL_r22 1009 -#define _GUARD_NOS_NOT_NULL_r33 1010 -#define _GUARD_NOS_NULL_r02 1011 -#define _GUARD_NOS_NULL_r12 1012 -#define _GUARD_NOS_NULL_r22 1013 -#define _GUARD_NOS_NULL_r33 1014 -#define _GUARD_NOS_OVERFLOWED_r02 1015 -#define _GUARD_NOS_OVERFLOWED_r12 1016 -#define _GUARD_NOS_OVERFLOWED_r22 1017 -#define _GUARD_NOS_OVERFLOWED_r33 1018 -#define _GUARD_NOS_TUPLE_r02 1019 -#define _GUARD_NOS_TUPLE_r12 1020 -#define _GUARD_NOS_TUPLE_r22 1021 -#define _GUARD_NOS_TUPLE_r33 1022 -#define _GUARD_NOS_UNICODE_r02 1023 -#define _GUARD_NOS_UNICODE_r12 1024 -#define _GUARD_NOS_UNICODE_r22 1025 -#define _GUARD_NOS_UNICODE_r33 1026 -#define _GUARD_NOT_EXHAUSTED_LIST_r02 1027 -#define _GUARD_NOT_EXHAUSTED_LIST_r12 1028 -#define _GUARD_NOT_EXHAUSTED_LIST_r22 1029 -#define _GUARD_NOT_EXHAUSTED_LIST_r33 1030 -#define _GUARD_NOT_EXHAUSTED_RANGE_r02 1031 -#define _GUARD_NOT_EXHAUSTED_RANGE_r12 1032 -#define _GUARD_NOT_EXHAUSTED_RANGE_r22 1033 -#define _GUARD_NOT_EXHAUSTED_RANGE_r33 1034 -#define _GUARD_NOT_EXHAUSTED_TUPLE_r02 1035 -#define _GUARD_NOT_EXHAUSTED_TUPLE_r12 1036 -#define _GUARD_NOT_EXHAUSTED_TUPLE_r22 1037 -#define _GUARD_NOT_EXHAUSTED_TUPLE_r33 1038 -#define _GUARD_THIRD_NULL_r03 1039 -#define _GUARD_THIRD_NULL_r13 1040 -#define _GUARD_THIRD_NULL_r23 1041 -#define _GUARD_THIRD_NULL_r33 1042 -#define _GUARD_TOS_ANY_DICT_r01 1043 -#define _GUARD_TOS_ANY_DICT_r11 1044 -#define _GUARD_TOS_ANY_DICT_r22 1045 -#define _GUARD_TOS_ANY_DICT_r33 1046 -#define _GUARD_TOS_ANY_SET_r01 1047 -#define _GUARD_TOS_ANY_SET_r11 1048 -#define _GUARD_TOS_ANY_SET_r22 1049 -#define _GUARD_TOS_ANY_SET_r33 1050 -#define _GUARD_TOS_DICT_r01 1051 -#define _GUARD_TOS_DICT_r11 1052 -#define _GUARD_TOS_DICT_r22 1053 -#define _GUARD_TOS_DICT_r33 1054 -#define _GUARD_TOS_FLOAT_r01 1055 -#define _GUARD_TOS_FLOAT_r11 1056 -#define _GUARD_TOS_FLOAT_r22 1057 -#define _GUARD_TOS_FLOAT_r33 1058 -#define _GUARD_TOS_FROZENDICT_r01 1059 -#define _GUARD_TOS_FROZENDICT_r11 1060 -#define _GUARD_TOS_FROZENDICT_r22 1061 -#define _GUARD_TOS_FROZENDICT_r33 1062 -#define _GUARD_TOS_FROZENSET_r01 1063 -#define _GUARD_TOS_FROZENSET_r11 1064 -#define _GUARD_TOS_FROZENSET_r22 1065 -#define _GUARD_TOS_FROZENSET_r33 1066 -#define _GUARD_TOS_INT_r01 1067 -#define _GUARD_TOS_INT_r11 1068 -#define _GUARD_TOS_INT_r22 1069 -#define _GUARD_TOS_INT_r33 1070 -#define _GUARD_TOS_LIST_r01 1071 -#define _GUARD_TOS_LIST_r11 1072 -#define _GUARD_TOS_LIST_r22 1073 -#define _GUARD_TOS_LIST_r33 1074 -#define _GUARD_TOS_OVERFLOWED_r01 1075 -#define _GUARD_TOS_OVERFLOWED_r11 1076 -#define _GUARD_TOS_OVERFLOWED_r22 1077 -#define _GUARD_TOS_OVERFLOWED_r33 1078 -#define _GUARD_TOS_SET_r01 1079 -#define _GUARD_TOS_SET_r11 1080 -#define _GUARD_TOS_SET_r22 1081 -#define _GUARD_TOS_SET_r33 1082 -#define _GUARD_TOS_SLICE_r01 1083 -#define _GUARD_TOS_SLICE_r11 1084 -#define _GUARD_TOS_SLICE_r22 1085 -#define _GUARD_TOS_SLICE_r33 1086 -#define _GUARD_TOS_TUPLE_r01 1087 -#define _GUARD_TOS_TUPLE_r11 1088 -#define _GUARD_TOS_TUPLE_r22 1089 -#define _GUARD_TOS_TUPLE_r33 1090 -#define _GUARD_TOS_UNICODE_r01 1091 -#define _GUARD_TOS_UNICODE_r11 1092 -#define _GUARD_TOS_UNICODE_r22 1093 -#define _GUARD_TOS_UNICODE_r33 1094 -#define _GUARD_TYPE_VERSION_r01 1095 -#define _GUARD_TYPE_VERSION_r11 1096 -#define _GUARD_TYPE_VERSION_r22 1097 -#define _GUARD_TYPE_VERSION_r33 1098 -#define _GUARD_TYPE_VERSION_LOCKED_r01 1099 -#define _GUARD_TYPE_VERSION_LOCKED_r11 1100 -#define _GUARD_TYPE_VERSION_LOCKED_r22 1101 -#define _GUARD_TYPE_VERSION_LOCKED_r33 1102 -#define _HANDLE_PENDING_AND_DEOPT_r00 1103 -#define _HANDLE_PENDING_AND_DEOPT_r10 1104 -#define _HANDLE_PENDING_AND_DEOPT_r20 1105 -#define _HANDLE_PENDING_AND_DEOPT_r30 1106 -#define _IMPORT_FROM_r12 1107 -#define _IMPORT_NAME_r21 1108 -#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS_r00 1109 -#define _INIT_CALL_PY_EXACT_ARGS_r01 1110 -#define _INIT_CALL_PY_EXACT_ARGS_0_r01 1111 -#define _INIT_CALL_PY_EXACT_ARGS_1_r01 1112 -#define _INIT_CALL_PY_EXACT_ARGS_2_r01 1113 -#define _INIT_CALL_PY_EXACT_ARGS_3_r01 1114 -#define _INIT_CALL_PY_EXACT_ARGS_4_r01 1115 -#define _INSERT_1_LOAD_CONST_INLINE_r02 1116 -#define _INSERT_1_LOAD_CONST_INLINE_r12 1117 -#define _INSERT_1_LOAD_CONST_INLINE_r23 1118 -#define _INSERT_1_LOAD_CONST_INLINE_BORROW_r02 1119 -#define _INSERT_1_LOAD_CONST_INLINE_BORROW_r12 1120 -#define _INSERT_1_LOAD_CONST_INLINE_BORROW_r23 1121 -#define _INSERT_2_LOAD_CONST_INLINE_BORROW_r03 1122 -#define _INSERT_2_LOAD_CONST_INLINE_BORROW_r13 1123 -#define _INSERT_2_LOAD_CONST_INLINE_BORROW_r23 1124 -#define _INSERT_NULL_r10 1125 -#define _INSTRUMENTED_FOR_ITER_r23 1126 -#define _INSTRUMENTED_INSTRUCTION_r00 1127 -#define _INSTRUMENTED_JUMP_FORWARD_r00 1128 -#define _INSTRUMENTED_JUMP_FORWARD_r11 1129 -#define _INSTRUMENTED_JUMP_FORWARD_r22 1130 -#define _INSTRUMENTED_JUMP_FORWARD_r33 1131 -#define _INSTRUMENTED_LINE_r00 1132 -#define _INSTRUMENTED_NOT_TAKEN_r00 1133 -#define _INSTRUMENTED_NOT_TAKEN_r11 1134 -#define _INSTRUMENTED_NOT_TAKEN_r22 1135 -#define _INSTRUMENTED_NOT_TAKEN_r33 1136 -#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r00 1137 -#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r10 1138 -#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r21 1139 -#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r32 1140 -#define _INSTRUMENTED_POP_JUMP_IF_NONE_r10 1141 -#define _INSTRUMENTED_POP_JUMP_IF_NOT_NONE_r10 1142 -#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r00 1143 -#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r10 1144 -#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r21 1145 -#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r32 1146 -#define _IS_NONE_r11 1147 -#define _IS_OP_r03 1148 -#define _IS_OP_r13 1149 -#define _IS_OP_r23 1150 -#define _ITER_CHECK_LIST_r02 1151 -#define _ITER_CHECK_LIST_r12 1152 -#define _ITER_CHECK_LIST_r22 1153 -#define _ITER_CHECK_LIST_r33 1154 -#define _ITER_CHECK_RANGE_r02 1155 -#define _ITER_CHECK_RANGE_r12 1156 -#define _ITER_CHECK_RANGE_r22 1157 -#define _ITER_CHECK_RANGE_r33 1158 -#define _ITER_CHECK_TUPLE_r02 1159 -#define _ITER_CHECK_TUPLE_r12 1160 -#define _ITER_CHECK_TUPLE_r22 1161 -#define _ITER_CHECK_TUPLE_r33 1162 -#define _ITER_JUMP_LIST_r02 1163 -#define _ITER_JUMP_LIST_r12 1164 -#define _ITER_JUMP_LIST_r22 1165 -#define _ITER_JUMP_LIST_r33 1166 -#define _ITER_JUMP_RANGE_r02 1167 -#define _ITER_JUMP_RANGE_r12 1168 -#define _ITER_JUMP_RANGE_r22 1169 -#define _ITER_JUMP_RANGE_r33 1170 -#define _ITER_JUMP_TUPLE_r02 1171 -#define _ITER_JUMP_TUPLE_r12 1172 -#define _ITER_JUMP_TUPLE_r22 1173 -#define _ITER_JUMP_TUPLE_r33 1174 -#define _ITER_NEXT_LIST_r23 1175 -#define _ITER_NEXT_LIST_TIER_TWO_r23 1176 -#define _ITER_NEXT_RANGE_r03 1177 -#define _ITER_NEXT_RANGE_r13 1178 -#define _ITER_NEXT_RANGE_r23 1179 -#define _ITER_NEXT_TUPLE_r03 1180 -#define _ITER_NEXT_TUPLE_r13 1181 -#define _ITER_NEXT_TUPLE_r23 1182 -#define _JUMP_BACKWARD_NO_INTERRUPT_r00 1183 -#define _JUMP_BACKWARD_NO_INTERRUPT_r11 1184 -#define _JUMP_BACKWARD_NO_INTERRUPT_r22 1185 -#define _JUMP_BACKWARD_NO_INTERRUPT_r33 1186 -#define _JUMP_TO_TOP_r00 1187 -#define _LIST_APPEND_r10 1188 -#define _LIST_EXTEND_r11 1189 -#define _LOAD_ATTR_r10 1190 -#define _LOAD_ATTR_CLASS_r11 1191 -#define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN_r11 1192 -#define _LOAD_ATTR_INSTANCE_VALUE_r02 1193 -#define _LOAD_ATTR_INSTANCE_VALUE_r12 1194 -#define _LOAD_ATTR_INSTANCE_VALUE_r23 1195 -#define _LOAD_ATTR_METHOD_LAZY_DICT_r02 1196 -#define _LOAD_ATTR_METHOD_LAZY_DICT_r12 1197 -#define _LOAD_ATTR_METHOD_LAZY_DICT_r23 1198 -#define _LOAD_ATTR_METHOD_NO_DICT_r02 1199 -#define _LOAD_ATTR_METHOD_NO_DICT_r12 1200 -#define _LOAD_ATTR_METHOD_NO_DICT_r23 1201 -#define _LOAD_ATTR_METHOD_WITH_VALUES_r02 1202 -#define _LOAD_ATTR_METHOD_WITH_VALUES_r12 1203 -#define _LOAD_ATTR_METHOD_WITH_VALUES_r23 1204 -#define _LOAD_ATTR_MODULE_r12 1205 -#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT_r11 1206 -#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES_r11 1207 -#define _LOAD_ATTR_PROPERTY_FRAME_r11 1208 -#define _LOAD_ATTR_SLOT_r02 1209 -#define _LOAD_ATTR_SLOT_r12 1210 -#define _LOAD_ATTR_SLOT_r23 1211 -#define _LOAD_ATTR_WITH_HINT_r12 1212 -#define _LOAD_BUILD_CLASS_r01 1213 -#define _LOAD_BYTECODE_r00 1214 -#define _LOAD_COMMON_CONSTANT_r01 1215 -#define _LOAD_COMMON_CONSTANT_r12 1216 -#define _LOAD_COMMON_CONSTANT_r23 1217 -#define _LOAD_CONST_r01 1218 -#define _LOAD_CONST_r12 1219 -#define _LOAD_CONST_r23 1220 -#define _LOAD_CONST_INLINE_r01 1221 -#define _LOAD_CONST_INLINE_r12 1222 -#define _LOAD_CONST_INLINE_r23 1223 -#define _LOAD_CONST_INLINE_BORROW_r01 1224 -#define _LOAD_CONST_INLINE_BORROW_r12 1225 -#define _LOAD_CONST_INLINE_BORROW_r23 1226 -#define _LOAD_CONST_UNDER_INLINE_r02 1227 -#define _LOAD_CONST_UNDER_INLINE_r12 1228 -#define _LOAD_CONST_UNDER_INLINE_r23 1229 -#define _LOAD_CONST_UNDER_INLINE_BORROW_r02 1230 -#define _LOAD_CONST_UNDER_INLINE_BORROW_r12 1231 -#define _LOAD_CONST_UNDER_INLINE_BORROW_r23 1232 -#define _LOAD_DEREF_r01 1233 -#define _LOAD_FAST_r01 1234 -#define _LOAD_FAST_r12 1235 -#define _LOAD_FAST_r23 1236 -#define _LOAD_FAST_0_r01 1237 -#define _LOAD_FAST_0_r12 1238 -#define _LOAD_FAST_0_r23 1239 -#define _LOAD_FAST_1_r01 1240 -#define _LOAD_FAST_1_r12 1241 -#define _LOAD_FAST_1_r23 1242 -#define _LOAD_FAST_2_r01 1243 -#define _LOAD_FAST_2_r12 1244 -#define _LOAD_FAST_2_r23 1245 -#define _LOAD_FAST_3_r01 1246 -#define _LOAD_FAST_3_r12 1247 -#define _LOAD_FAST_3_r23 1248 -#define _LOAD_FAST_4_r01 1249 -#define _LOAD_FAST_4_r12 1250 -#define _LOAD_FAST_4_r23 1251 -#define _LOAD_FAST_5_r01 1252 -#define _LOAD_FAST_5_r12 1253 -#define _LOAD_FAST_5_r23 1254 -#define _LOAD_FAST_6_r01 1255 -#define _LOAD_FAST_6_r12 1256 -#define _LOAD_FAST_6_r23 1257 -#define _LOAD_FAST_7_r01 1258 -#define _LOAD_FAST_7_r12 1259 -#define _LOAD_FAST_7_r23 1260 -#define _LOAD_FAST_AND_CLEAR_r01 1261 -#define _LOAD_FAST_AND_CLEAR_r12 1262 -#define _LOAD_FAST_AND_CLEAR_r23 1263 -#define _LOAD_FAST_BORROW_r01 1264 -#define _LOAD_FAST_BORROW_r12 1265 -#define _LOAD_FAST_BORROW_r23 1266 -#define _LOAD_FAST_BORROW_0_r01 1267 -#define _LOAD_FAST_BORROW_0_r12 1268 -#define _LOAD_FAST_BORROW_0_r23 1269 -#define _LOAD_FAST_BORROW_1_r01 1270 -#define _LOAD_FAST_BORROW_1_r12 1271 -#define _LOAD_FAST_BORROW_1_r23 1272 -#define _LOAD_FAST_BORROW_2_r01 1273 -#define _LOAD_FAST_BORROW_2_r12 1274 -#define _LOAD_FAST_BORROW_2_r23 1275 -#define _LOAD_FAST_BORROW_3_r01 1276 -#define _LOAD_FAST_BORROW_3_r12 1277 -#define _LOAD_FAST_BORROW_3_r23 1278 -#define _LOAD_FAST_BORROW_4_r01 1279 -#define _LOAD_FAST_BORROW_4_r12 1280 -#define _LOAD_FAST_BORROW_4_r23 1281 -#define _LOAD_FAST_BORROW_5_r01 1282 -#define _LOAD_FAST_BORROW_5_r12 1283 -#define _LOAD_FAST_BORROW_5_r23 1284 -#define _LOAD_FAST_BORROW_6_r01 1285 -#define _LOAD_FAST_BORROW_6_r12 1286 -#define _LOAD_FAST_BORROW_6_r23 1287 -#define _LOAD_FAST_BORROW_7_r01 1288 -#define _LOAD_FAST_BORROW_7_r12 1289 -#define _LOAD_FAST_BORROW_7_r23 1290 -#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r02 1291 -#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r13 1292 -#define _LOAD_FAST_CHECK_r01 1293 -#define _LOAD_FAST_CHECK_r12 1294 -#define _LOAD_FAST_CHECK_r23 1295 -#define _LOAD_FAST_LOAD_FAST_r02 1296 -#define _LOAD_FAST_LOAD_FAST_r13 1297 -#define _LOAD_FROM_DICT_OR_DEREF_r11 1298 -#define _LOAD_FROM_DICT_OR_GLOBALS_r11 1299 -#define _LOAD_GLOBAL_r00 1300 -#define _LOAD_GLOBAL_BUILTINS_r01 1301 -#define _LOAD_GLOBAL_MODULE_r01 1302 -#define _LOAD_LOCALS_r01 1303 -#define _LOAD_LOCALS_r12 1304 -#define _LOAD_LOCALS_r23 1305 -#define _LOAD_NAME_r01 1306 -#define _LOAD_SMALL_INT_r01 1307 -#define _LOAD_SMALL_INT_r12 1308 -#define _LOAD_SMALL_INT_r23 1309 -#define _LOAD_SMALL_INT_0_r01 1310 -#define _LOAD_SMALL_INT_0_r12 1311 -#define _LOAD_SMALL_INT_0_r23 1312 -#define _LOAD_SMALL_INT_1_r01 1313 -#define _LOAD_SMALL_INT_1_r12 1314 -#define _LOAD_SMALL_INT_1_r23 1315 -#define _LOAD_SMALL_INT_2_r01 1316 -#define _LOAD_SMALL_INT_2_r12 1317 -#define _LOAD_SMALL_INT_2_r23 1318 -#define _LOAD_SMALL_INT_3_r01 1319 -#define _LOAD_SMALL_INT_3_r12 1320 -#define _LOAD_SMALL_INT_3_r23 1321 -#define _LOAD_SPECIAL_r00 1322 -#define _LOAD_SUPER_ATTR_ATTR_r31 1323 -#define _LOAD_SUPER_ATTR_METHOD_r32 1324 -#define _LOCK_OBJECT_r01 1325 -#define _LOCK_OBJECT_r11 1326 -#define _LOCK_OBJECT_r22 1327 -#define _LOCK_OBJECT_r33 1328 -#define _MAKE_CALLARGS_A_TUPLE_r33 1329 -#define _MAKE_CELL_r00 1330 -#define _MAKE_FUNCTION_r11 1331 -#define _MAKE_HEAP_SAFE_r01 1332 -#define _MAKE_HEAP_SAFE_r11 1333 -#define _MAKE_HEAP_SAFE_r22 1334 -#define _MAKE_HEAP_SAFE_r33 1335 -#define _MAKE_WARM_r00 1336 -#define _MAKE_WARM_r11 1337 -#define _MAKE_WARM_r22 1338 -#define _MAKE_WARM_r33 1339 -#define _MAP_ADD_r20 1340 -#define _MATCH_CLASS_r33 1341 -#define _MATCH_KEYS_r23 1342 -#define _MATCH_MAPPING_r02 1343 -#define _MATCH_MAPPING_r12 1344 -#define _MATCH_MAPPING_r23 1345 -#define _MATCH_SEQUENCE_r02 1346 -#define _MATCH_SEQUENCE_r12 1347 -#define _MATCH_SEQUENCE_r23 1348 -#define _MAYBE_EXPAND_METHOD_r00 1349 -#define _MAYBE_EXPAND_METHOD_KW_r11 1350 -#define _MONITOR_CALL_r00 1351 -#define _MONITOR_CALL_KW_r11 1352 -#define _MONITOR_JUMP_BACKWARD_r00 1353 -#define _MONITOR_JUMP_BACKWARD_r11 1354 -#define _MONITOR_JUMP_BACKWARD_r22 1355 -#define _MONITOR_JUMP_BACKWARD_r33 1356 -#define _MONITOR_RESUME_r00 1357 -#define _NOP_r00 1358 -#define _NOP_r11 1359 -#define _NOP_r22 1360 -#define _NOP_r33 1361 -#define _POP_CALL_r20 1362 -#define _POP_CALL_LOAD_CONST_INLINE_BORROW_r21 1363 -#define _POP_CALL_ONE_r30 1364 -#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW_r31 1365 -#define _POP_CALL_TWO_r30 1366 -#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW_r31 1367 -#define _POP_EXCEPT_r10 1368 -#define _POP_ITER_r20 1369 -#define _POP_JUMP_IF_FALSE_r00 1370 -#define _POP_JUMP_IF_FALSE_r10 1371 -#define _POP_JUMP_IF_FALSE_r21 1372 -#define _POP_JUMP_IF_FALSE_r32 1373 -#define _POP_JUMP_IF_TRUE_r00 1374 -#define _POP_JUMP_IF_TRUE_r10 1375 -#define _POP_JUMP_IF_TRUE_r21 1376 -#define _POP_JUMP_IF_TRUE_r32 1377 -#define _POP_TOP_r10 1378 -#define _POP_TOP_FLOAT_r00 1379 -#define _POP_TOP_FLOAT_r10 1380 -#define _POP_TOP_FLOAT_r21 1381 -#define _POP_TOP_FLOAT_r32 1382 -#define _POP_TOP_INT_r00 1383 -#define _POP_TOP_INT_r10 1384 -#define _POP_TOP_INT_r21 1385 -#define _POP_TOP_INT_r32 1386 -#define _POP_TOP_LOAD_CONST_INLINE_r11 1387 -#define _POP_TOP_LOAD_CONST_INLINE_BORROW_r11 1388 -#define _POP_TOP_NOP_r00 1389 -#define _POP_TOP_NOP_r10 1390 -#define _POP_TOP_NOP_r21 1391 -#define _POP_TOP_NOP_r32 1392 -#define _POP_TOP_UNICODE_r00 1393 -#define _POP_TOP_UNICODE_r10 1394 -#define _POP_TOP_UNICODE_r21 1395 -#define _POP_TOP_UNICODE_r32 1396 -#define _POP_TWO_r20 1397 -#define _POP_TWO_LOAD_CONST_INLINE_BORROW_r21 1398 -#define _PUSH_EXC_INFO_r02 1399 -#define _PUSH_EXC_INFO_r12 1400 -#define _PUSH_EXC_INFO_r23 1401 -#define _PUSH_FRAME_r10 1402 -#define _PUSH_NULL_r01 1403 -#define _PUSH_NULL_r12 1404 -#define _PUSH_NULL_r23 1405 -#define _PUSH_NULL_CONDITIONAL_r00 1406 -#define _PY_FRAME_EX_r31 1407 -#define _PY_FRAME_GENERAL_r01 1408 -#define _PY_FRAME_KW_r11 1409 -#define _REPLACE_WITH_TRUE_r02 1410 -#define _REPLACE_WITH_TRUE_r12 1411 -#define _REPLACE_WITH_TRUE_r23 1412 -#define _RESUME_CHECK_r00 1413 -#define _RESUME_CHECK_r11 1414 -#define _RESUME_CHECK_r22 1415 -#define _RESUME_CHECK_r33 1416 -#define _RETURN_GENERATOR_r01 1417 -#define _RETURN_VALUE_r11 1418 -#define _SAVE_RETURN_OFFSET_r00 1419 -#define _SAVE_RETURN_OFFSET_r11 1420 -#define _SAVE_RETURN_OFFSET_r22 1421 -#define _SAVE_RETURN_OFFSET_r33 1422 -#define _SEND_r33 1423 -#define _SEND_GEN_FRAME_r33 1424 -#define _SETUP_ANNOTATIONS_r00 1425 -#define _SET_ADD_r10 1426 -#define _SET_FUNCTION_ATTRIBUTE_r01 1427 -#define _SET_FUNCTION_ATTRIBUTE_r11 1428 -#define _SET_FUNCTION_ATTRIBUTE_r21 1429 -#define _SET_FUNCTION_ATTRIBUTE_r32 1430 -#define _SET_IP_r00 1431 -#define _SET_IP_r11 1432 -#define _SET_IP_r22 1433 -#define _SET_IP_r33 1434 -#define _SET_UPDATE_r11 1435 -#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r02 1436 -#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r12 1437 -#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r22 1438 -#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r32 1439 -#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r03 1440 -#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r13 1441 -#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r23 1442 -#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r33 1443 -#define _SPILL_OR_RELOAD_r01 1444 -#define _SPILL_OR_RELOAD_r02 1445 -#define _SPILL_OR_RELOAD_r03 1446 -#define _SPILL_OR_RELOAD_r10 1447 -#define _SPILL_OR_RELOAD_r12 1448 -#define _SPILL_OR_RELOAD_r13 1449 -#define _SPILL_OR_RELOAD_r20 1450 -#define _SPILL_OR_RELOAD_r21 1451 -#define _SPILL_OR_RELOAD_r23 1452 -#define _SPILL_OR_RELOAD_r30 1453 -#define _SPILL_OR_RELOAD_r31 1454 -#define _SPILL_OR_RELOAD_r32 1455 -#define _START_EXECUTOR_r00 1456 -#define _STORE_ATTR_r20 1457 -#define _STORE_ATTR_INSTANCE_VALUE_r21 1458 -#define _STORE_ATTR_SLOT_r21 1459 -#define _STORE_ATTR_WITH_HINT_r21 1460 -#define _STORE_DEREF_r10 1461 -#define _STORE_FAST_LOAD_FAST_r11 1462 -#define _STORE_FAST_STORE_FAST_r20 1463 -#define _STORE_GLOBAL_r10 1464 -#define _STORE_NAME_r10 1465 -#define _STORE_SLICE_r30 1466 -#define _STORE_SUBSCR_r30 1467 -#define _STORE_SUBSCR_DICT_r31 1468 -#define _STORE_SUBSCR_DICT_KNOWN_HASH_r31 1469 -#define _STORE_SUBSCR_LIST_INT_r32 1470 -#define _SWAP_r11 1471 -#define _SWAP_2_r02 1472 -#define _SWAP_2_r12 1473 -#define _SWAP_2_r22 1474 -#define _SWAP_2_r33 1475 -#define _SWAP_3_r03 1476 -#define _SWAP_3_r13 1477 -#define _SWAP_3_r23 1478 -#define _SWAP_3_r33 1479 -#define _SWAP_FAST_r01 1480 -#define _SWAP_FAST_r11 1481 -#define _SWAP_FAST_r22 1482 -#define _SWAP_FAST_r33 1483 -#define _SWAP_FAST_0_r01 1484 -#define _SWAP_FAST_0_r11 1485 -#define _SWAP_FAST_0_r22 1486 -#define _SWAP_FAST_0_r33 1487 -#define _SWAP_FAST_1_r01 1488 -#define _SWAP_FAST_1_r11 1489 -#define _SWAP_FAST_1_r22 1490 -#define _SWAP_FAST_1_r33 1491 -#define _SWAP_FAST_2_r01 1492 -#define _SWAP_FAST_2_r11 1493 -#define _SWAP_FAST_2_r22 1494 -#define _SWAP_FAST_2_r33 1495 -#define _SWAP_FAST_3_r01 1496 -#define _SWAP_FAST_3_r11 1497 -#define _SWAP_FAST_3_r22 1498 -#define _SWAP_FAST_3_r33 1499 -#define _SWAP_FAST_4_r01 1500 -#define _SWAP_FAST_4_r11 1501 -#define _SWAP_FAST_4_r22 1502 -#define _SWAP_FAST_4_r33 1503 -#define _SWAP_FAST_5_r01 1504 -#define _SWAP_FAST_5_r11 1505 -#define _SWAP_FAST_5_r22 1506 -#define _SWAP_FAST_5_r33 1507 -#define _SWAP_FAST_6_r01 1508 -#define _SWAP_FAST_6_r11 1509 -#define _SWAP_FAST_6_r22 1510 -#define _SWAP_FAST_6_r33 1511 -#define _SWAP_FAST_7_r01 1512 -#define _SWAP_FAST_7_r11 1513 -#define _SWAP_FAST_7_r22 1514 -#define _SWAP_FAST_7_r33 1515 -#define _TIER2_RESUME_CHECK_r00 1516 -#define _TIER2_RESUME_CHECK_r11 1517 -#define _TIER2_RESUME_CHECK_r22 1518 -#define _TIER2_RESUME_CHECK_r33 1519 -#define _TO_BOOL_r11 1520 -#define _TO_BOOL_BOOL_r01 1521 -#define _TO_BOOL_BOOL_r11 1522 -#define _TO_BOOL_BOOL_r22 1523 -#define _TO_BOOL_BOOL_r33 1524 -#define _TO_BOOL_INT_r02 1525 -#define _TO_BOOL_INT_r12 1526 -#define _TO_BOOL_INT_r23 1527 -#define _TO_BOOL_LIST_r02 1528 -#define _TO_BOOL_LIST_r12 1529 -#define _TO_BOOL_LIST_r23 1530 -#define _TO_BOOL_NONE_r01 1531 -#define _TO_BOOL_NONE_r11 1532 -#define _TO_BOOL_NONE_r22 1533 -#define _TO_BOOL_NONE_r33 1534 -#define _TO_BOOL_STR_r02 1535 -#define _TO_BOOL_STR_r12 1536 -#define _TO_BOOL_STR_r23 1537 -#define _TRACE_RECORD_r00 1538 -#define _UNARY_INVERT_r12 1539 -#define _UNARY_NEGATIVE_r12 1540 -#define _UNARY_NEGATIVE_FLOAT_INPLACE_r02 1541 -#define _UNARY_NEGATIVE_FLOAT_INPLACE_r12 1542 -#define _UNARY_NEGATIVE_FLOAT_INPLACE_r23 1543 -#define _UNARY_NOT_r01 1544 -#define _UNARY_NOT_r11 1545 -#define _UNARY_NOT_r22 1546 -#define _UNARY_NOT_r33 1547 -#define _UNPACK_EX_r10 1548 -#define _UNPACK_SEQUENCE_r10 1549 -#define _UNPACK_SEQUENCE_LIST_r10 1550 -#define _UNPACK_SEQUENCE_TUPLE_r10 1551 -#define _UNPACK_SEQUENCE_TWO_TUPLE_r12 1552 -#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r03 1553 -#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r13 1554 -#define _UNPACK_SEQUENCE_UNIQUE_TUPLE_r10 1555 -#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r02 1556 -#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r12 1557 -#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r23 1558 -#define _WITH_EXCEPT_START_r33 1559 -#define _YIELD_VALUE_r11 1560 -#define MAX_UOP_REGS_ID 1560 +#define _YIELD_VALUE 631 +#define MAX_UOP_ID 631 +#define _BINARY_OP_r23 632 +#define _BINARY_OP_ADD_FLOAT_r03 633 +#define _BINARY_OP_ADD_FLOAT_r13 634 +#define _BINARY_OP_ADD_FLOAT_r23 635 +#define _BINARY_OP_ADD_FLOAT_INPLACE_r03 636 +#define _BINARY_OP_ADD_FLOAT_INPLACE_r13 637 +#define _BINARY_OP_ADD_FLOAT_INPLACE_r23 638 +#define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT_r03 639 +#define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT_r13 640 +#define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT_r23 641 +#define _BINARY_OP_ADD_INT_r03 642 +#define _BINARY_OP_ADD_INT_r13 643 +#define _BINARY_OP_ADD_INT_r23 644 +#define _BINARY_OP_ADD_INT_INPLACE_r03 645 +#define _BINARY_OP_ADD_INT_INPLACE_r13 646 +#define _BINARY_OP_ADD_INT_INPLACE_r23 647 +#define _BINARY_OP_ADD_INT_INPLACE_RIGHT_r03 648 +#define _BINARY_OP_ADD_INT_INPLACE_RIGHT_r13 649 +#define _BINARY_OP_ADD_INT_INPLACE_RIGHT_r23 650 +#define _BINARY_OP_ADD_UNICODE_r03 651 +#define _BINARY_OP_ADD_UNICODE_r13 652 +#define _BINARY_OP_ADD_UNICODE_r23 653 +#define _BINARY_OP_EXTEND_r23 654 +#define _BINARY_OP_INPLACE_ADD_UNICODE_r21 655 +#define _BINARY_OP_MULTIPLY_FLOAT_r03 656 +#define _BINARY_OP_MULTIPLY_FLOAT_r13 657 +#define _BINARY_OP_MULTIPLY_FLOAT_r23 658 +#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_r03 659 +#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_r13 660 +#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_r23 661 +#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT_r03 662 +#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT_r13 663 +#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT_r23 664 +#define _BINARY_OP_MULTIPLY_INT_r03 665 +#define _BINARY_OP_MULTIPLY_INT_r13 666 +#define _BINARY_OP_MULTIPLY_INT_r23 667 +#define _BINARY_OP_MULTIPLY_INT_INPLACE_r03 668 +#define _BINARY_OP_MULTIPLY_INT_INPLACE_r13 669 +#define _BINARY_OP_MULTIPLY_INT_INPLACE_r23 670 +#define _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r03 671 +#define _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r13 672 +#define _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r23 673 +#define _BINARY_OP_SUBSCR_CHECK_FUNC_r23 674 +#define _BINARY_OP_SUBSCR_DICT_r23 675 +#define _BINARY_OP_SUBSCR_INIT_CALL_r01 676 +#define _BINARY_OP_SUBSCR_INIT_CALL_r11 677 +#define _BINARY_OP_SUBSCR_INIT_CALL_r21 678 +#define _BINARY_OP_SUBSCR_INIT_CALL_r31 679 +#define _BINARY_OP_SUBSCR_LIST_INT_r23 680 +#define _BINARY_OP_SUBSCR_LIST_SLICE_r23 681 +#define _BINARY_OP_SUBSCR_STR_INT_r23 682 +#define _BINARY_OP_SUBSCR_TUPLE_INT_r03 683 +#define _BINARY_OP_SUBSCR_TUPLE_INT_r13 684 +#define _BINARY_OP_SUBSCR_TUPLE_INT_r23 685 +#define _BINARY_OP_SUBSCR_USTR_INT_r23 686 +#define _BINARY_OP_SUBTRACT_FLOAT_r03 687 +#define _BINARY_OP_SUBTRACT_FLOAT_r13 688 +#define _BINARY_OP_SUBTRACT_FLOAT_r23 689 +#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_r03 690 +#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_r13 691 +#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_r23 692 +#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT_r03 693 +#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT_r13 694 +#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT_r23 695 +#define _BINARY_OP_SUBTRACT_INT_r03 696 +#define _BINARY_OP_SUBTRACT_INT_r13 697 +#define _BINARY_OP_SUBTRACT_INT_r23 698 +#define _BINARY_OP_SUBTRACT_INT_INPLACE_r03 699 +#define _BINARY_OP_SUBTRACT_INT_INPLACE_r13 700 +#define _BINARY_OP_SUBTRACT_INT_INPLACE_r23 701 +#define _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r03 702 +#define _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r13 703 +#define _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r23 704 +#define _BINARY_SLICE_r31 705 +#define _BUILD_INTERPOLATION_r01 706 +#define _BUILD_LIST_r01 707 +#define _BUILD_MAP_r01 708 +#define _BUILD_SET_r01 709 +#define _BUILD_SLICE_r01 710 +#define _BUILD_STRING_r01 711 +#define _BUILD_TEMPLATE_r21 712 +#define _BUILD_TUPLE_r01 713 +#define _CALL_BUILTIN_CLASS_r01 714 +#define _CALL_BUILTIN_FAST_r01 715 +#define _CALL_BUILTIN_FAST_WITH_KEYWORDS_r01 716 +#define _CALL_BUILTIN_O_r03 717 +#define _CALL_FUNCTION_EX_NON_PY_GENERAL_r31 718 +#define _CALL_INTRINSIC_1_r12 719 +#define _CALL_INTRINSIC_2_r23 720 +#define _CALL_ISINSTANCE_r31 721 +#define _CALL_KW_NON_PY_r11 722 +#define _CALL_LEN_r33 723 +#define _CALL_LIST_APPEND_r03 724 +#define _CALL_LIST_APPEND_r13 725 +#define _CALL_LIST_APPEND_r23 726 +#define _CALL_LIST_APPEND_r33 727 +#define _CALL_METHOD_DESCRIPTOR_FAST_r01 728 +#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_r01 729 +#define _CALL_METHOD_DESCRIPTOR_NOARGS_r01 730 +#define _CALL_METHOD_DESCRIPTOR_O_r03 731 +#define _CALL_NON_PY_GENERAL_r01 732 +#define _CALL_STR_1_r32 733 +#define _CALL_TUPLE_1_r32 734 +#define _CALL_TYPE_1_r02 735 +#define _CALL_TYPE_1_r12 736 +#define _CALL_TYPE_1_r22 737 +#define _CALL_TYPE_1_r32 738 +#define _CHECK_AND_ALLOCATE_OBJECT_r00 739 +#define _CHECK_ATTR_CLASS_r01 740 +#define _CHECK_ATTR_CLASS_r11 741 +#define _CHECK_ATTR_CLASS_r22 742 +#define _CHECK_ATTR_CLASS_r33 743 +#define _CHECK_ATTR_METHOD_LAZY_DICT_r01 744 +#define _CHECK_ATTR_METHOD_LAZY_DICT_r11 745 +#define _CHECK_ATTR_METHOD_LAZY_DICT_r22 746 +#define _CHECK_ATTR_METHOD_LAZY_DICT_r33 747 +#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS_r00 748 +#define _CHECK_EG_MATCH_r22 749 +#define _CHECK_EXC_MATCH_r22 750 +#define _CHECK_FUNCTION_EXACT_ARGS_r00 751 +#define _CHECK_FUNCTION_VERSION_r00 752 +#define _CHECK_FUNCTION_VERSION_INLINE_r00 753 +#define _CHECK_FUNCTION_VERSION_INLINE_r11 754 +#define _CHECK_FUNCTION_VERSION_INLINE_r22 755 +#define _CHECK_FUNCTION_VERSION_INLINE_r33 756 +#define _CHECK_FUNCTION_VERSION_KW_r11 757 +#define _CHECK_IS_NOT_PY_CALLABLE_r00 758 +#define _CHECK_IS_NOT_PY_CALLABLE_EX_r03 759 +#define _CHECK_IS_NOT_PY_CALLABLE_EX_r13 760 +#define _CHECK_IS_NOT_PY_CALLABLE_EX_r23 761 +#define _CHECK_IS_NOT_PY_CALLABLE_EX_r33 762 +#define _CHECK_IS_NOT_PY_CALLABLE_KW_r11 763 +#define _CHECK_IS_PY_CALLABLE_EX_r03 764 +#define _CHECK_IS_PY_CALLABLE_EX_r13 765 +#define _CHECK_IS_PY_CALLABLE_EX_r23 766 +#define _CHECK_IS_PY_CALLABLE_EX_r33 767 +#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r01 768 +#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r11 769 +#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r22 770 +#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r33 771 +#define _CHECK_METHOD_VERSION_r00 772 +#define _CHECK_METHOD_VERSION_KW_r11 773 +#define _CHECK_PEP_523_r00 774 +#define _CHECK_PEP_523_r11 775 +#define _CHECK_PEP_523_r22 776 +#define _CHECK_PEP_523_r33 777 +#define _CHECK_PERIODIC_r00 778 +#define _CHECK_PERIODIC_AT_END_r00 779 +#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM_r00 780 +#define _CHECK_RECURSION_REMAINING_r00 781 +#define _CHECK_RECURSION_REMAINING_r11 782 +#define _CHECK_RECURSION_REMAINING_r22 783 +#define _CHECK_RECURSION_REMAINING_r33 784 +#define _CHECK_STACK_SPACE_r00 785 +#define _CHECK_STACK_SPACE_OPERAND_r00 786 +#define _CHECK_STACK_SPACE_OPERAND_r11 787 +#define _CHECK_STACK_SPACE_OPERAND_r22 788 +#define _CHECK_STACK_SPACE_OPERAND_r33 789 +#define _CHECK_VALIDITY_r00 790 +#define _CHECK_VALIDITY_r11 791 +#define _CHECK_VALIDITY_r22 792 +#define _CHECK_VALIDITY_r33 793 +#define _COLD_DYNAMIC_EXIT_r00 794 +#define _COLD_EXIT_r00 795 +#define _COMPARE_OP_r21 796 +#define _COMPARE_OP_FLOAT_r03 797 +#define _COMPARE_OP_FLOAT_r13 798 +#define _COMPARE_OP_FLOAT_r23 799 +#define _COMPARE_OP_INT_r23 800 +#define _COMPARE_OP_STR_r23 801 +#define _CONTAINS_OP_r23 802 +#define _CONTAINS_OP_DICT_r23 803 +#define _CONTAINS_OP_SET_r23 804 +#define _CONVERT_VALUE_r11 805 +#define _COPY_r01 806 +#define _COPY_1_r02 807 +#define _COPY_1_r12 808 +#define _COPY_1_r23 809 +#define _COPY_2_r03 810 +#define _COPY_2_r13 811 +#define _COPY_2_r23 812 +#define _COPY_3_r03 813 +#define _COPY_3_r13 814 +#define _COPY_3_r23 815 +#define _COPY_3_r33 816 +#define _COPY_FREE_VARS_r00 817 +#define _COPY_FREE_VARS_r11 818 +#define _COPY_FREE_VARS_r22 819 +#define _COPY_FREE_VARS_r33 820 +#define _CREATE_INIT_FRAME_r01 821 +#define _DELETE_ATTR_r10 822 +#define _DELETE_DEREF_r00 823 +#define _DELETE_FAST_r00 824 +#define _DELETE_GLOBAL_r00 825 +#define _DELETE_NAME_r00 826 +#define _DELETE_SUBSCR_r20 827 +#define _DEOPT_r00 828 +#define _DEOPT_r10 829 +#define _DEOPT_r20 830 +#define _DEOPT_r30 831 +#define _DICT_MERGE_r11 832 +#define _DICT_UPDATE_r11 833 +#define _DO_CALL_r01 834 +#define _DO_CALL_FUNCTION_EX_r31 835 +#define _DO_CALL_KW_r11 836 +#define _DYNAMIC_EXIT_r00 837 +#define _DYNAMIC_EXIT_r10 838 +#define _DYNAMIC_EXIT_r20 839 +#define _DYNAMIC_EXIT_r30 840 +#define _END_FOR_r10 841 +#define _END_SEND_r31 842 +#define _ERROR_POP_N_r00 843 +#define _EXIT_INIT_CHECK_r10 844 +#define _EXIT_TRACE_r00 845 +#define _EXIT_TRACE_r10 846 +#define _EXIT_TRACE_r20 847 +#define _EXIT_TRACE_r30 848 +#define _EXPAND_METHOD_r00 849 +#define _EXPAND_METHOD_KW_r11 850 +#define _FATAL_ERROR_r00 851 +#define _FATAL_ERROR_r11 852 +#define _FATAL_ERROR_r22 853 +#define _FATAL_ERROR_r33 854 +#define _FORMAT_SIMPLE_r11 855 +#define _FORMAT_WITH_SPEC_r21 856 +#define _FOR_ITER_r23 857 +#define _FOR_ITER_GEN_FRAME_r03 858 +#define _FOR_ITER_GEN_FRAME_r13 859 +#define _FOR_ITER_GEN_FRAME_r23 860 +#define _FOR_ITER_TIER_TWO_r23 861 +#define _GET_AITER_r11 862 +#define _GET_ANEXT_r12 863 +#define _GET_AWAITABLE_r11 864 +#define _GET_ITER_r12 865 +#define _GET_LEN_r12 866 +#define _GUARD_BINARY_OP_EXTEND_r22 867 +#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r02 868 +#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r12 869 +#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r22 870 +#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r33 871 +#define _GUARD_BIT_IS_SET_POP_r00 872 +#define _GUARD_BIT_IS_SET_POP_r10 873 +#define _GUARD_BIT_IS_SET_POP_r21 874 +#define _GUARD_BIT_IS_SET_POP_r32 875 +#define _GUARD_BIT_IS_SET_POP_4_r00 876 +#define _GUARD_BIT_IS_SET_POP_4_r10 877 +#define _GUARD_BIT_IS_SET_POP_4_r21 878 +#define _GUARD_BIT_IS_SET_POP_4_r32 879 +#define _GUARD_BIT_IS_SET_POP_5_r00 880 +#define _GUARD_BIT_IS_SET_POP_5_r10 881 +#define _GUARD_BIT_IS_SET_POP_5_r21 882 +#define _GUARD_BIT_IS_SET_POP_5_r32 883 +#define _GUARD_BIT_IS_SET_POP_6_r00 884 +#define _GUARD_BIT_IS_SET_POP_6_r10 885 +#define _GUARD_BIT_IS_SET_POP_6_r21 886 +#define _GUARD_BIT_IS_SET_POP_6_r32 887 +#define _GUARD_BIT_IS_SET_POP_7_r00 888 +#define _GUARD_BIT_IS_SET_POP_7_r10 889 +#define _GUARD_BIT_IS_SET_POP_7_r21 890 +#define _GUARD_BIT_IS_SET_POP_7_r32 891 +#define _GUARD_BIT_IS_UNSET_POP_r00 892 +#define _GUARD_BIT_IS_UNSET_POP_r10 893 +#define _GUARD_BIT_IS_UNSET_POP_r21 894 +#define _GUARD_BIT_IS_UNSET_POP_r32 895 +#define _GUARD_BIT_IS_UNSET_POP_4_r00 896 +#define _GUARD_BIT_IS_UNSET_POP_4_r10 897 +#define _GUARD_BIT_IS_UNSET_POP_4_r21 898 +#define _GUARD_BIT_IS_UNSET_POP_4_r32 899 +#define _GUARD_BIT_IS_UNSET_POP_5_r00 900 +#define _GUARD_BIT_IS_UNSET_POP_5_r10 901 +#define _GUARD_BIT_IS_UNSET_POP_5_r21 902 +#define _GUARD_BIT_IS_UNSET_POP_5_r32 903 +#define _GUARD_BIT_IS_UNSET_POP_6_r00 904 +#define _GUARD_BIT_IS_UNSET_POP_6_r10 905 +#define _GUARD_BIT_IS_UNSET_POP_6_r21 906 +#define _GUARD_BIT_IS_UNSET_POP_6_r32 907 +#define _GUARD_BIT_IS_UNSET_POP_7_r00 908 +#define _GUARD_BIT_IS_UNSET_POP_7_r10 909 +#define _GUARD_BIT_IS_UNSET_POP_7_r21 910 +#define _GUARD_BIT_IS_UNSET_POP_7_r32 911 +#define _GUARD_CALLABLE_BUILTIN_FAST_r00 912 +#define _GUARD_CALLABLE_BUILTIN_FAST_WITH_KEYWORDS_r00 913 +#define _GUARD_CALLABLE_BUILTIN_O_r00 914 +#define _GUARD_CALLABLE_ISINSTANCE_r03 915 +#define _GUARD_CALLABLE_ISINSTANCE_r13 916 +#define _GUARD_CALLABLE_ISINSTANCE_r23 917 +#define _GUARD_CALLABLE_ISINSTANCE_r33 918 +#define _GUARD_CALLABLE_LEN_r03 919 +#define _GUARD_CALLABLE_LEN_r13 920 +#define _GUARD_CALLABLE_LEN_r23 921 +#define _GUARD_CALLABLE_LEN_r33 922 +#define _GUARD_CALLABLE_LIST_APPEND_r03 923 +#define _GUARD_CALLABLE_LIST_APPEND_r13 924 +#define _GUARD_CALLABLE_LIST_APPEND_r23 925 +#define _GUARD_CALLABLE_LIST_APPEND_r33 926 +#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_r00 927 +#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_r00 928 +#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_NOARGS_r00 929 +#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_O_r00 930 +#define _GUARD_CALLABLE_STR_1_r03 931 +#define _GUARD_CALLABLE_STR_1_r13 932 +#define _GUARD_CALLABLE_STR_1_r23 933 +#define _GUARD_CALLABLE_STR_1_r33 934 +#define _GUARD_CALLABLE_TUPLE_1_r03 935 +#define _GUARD_CALLABLE_TUPLE_1_r13 936 +#define _GUARD_CALLABLE_TUPLE_1_r23 937 +#define _GUARD_CALLABLE_TUPLE_1_r33 938 +#define _GUARD_CALLABLE_TYPE_1_r03 939 +#define _GUARD_CALLABLE_TYPE_1_r13 940 +#define _GUARD_CALLABLE_TYPE_1_r23 941 +#define _GUARD_CALLABLE_TYPE_1_r33 942 +#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r00 943 +#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r11 944 +#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r22 945 +#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r33 946 +#define _GUARD_CODE_VERSION_RETURN_VALUE_r00 947 +#define _GUARD_CODE_VERSION_RETURN_VALUE_r11 948 +#define _GUARD_CODE_VERSION_RETURN_VALUE_r22 949 +#define _GUARD_CODE_VERSION_RETURN_VALUE_r33 950 +#define _GUARD_CODE_VERSION_YIELD_VALUE_r00 951 +#define _GUARD_CODE_VERSION_YIELD_VALUE_r11 952 +#define _GUARD_CODE_VERSION_YIELD_VALUE_r22 953 +#define _GUARD_CODE_VERSION_YIELD_VALUE_r33 954 +#define _GUARD_CODE_VERSION__PUSH_FRAME_r00 955 +#define _GUARD_CODE_VERSION__PUSH_FRAME_r11 956 +#define _GUARD_CODE_VERSION__PUSH_FRAME_r22 957 +#define _GUARD_CODE_VERSION__PUSH_FRAME_r33 958 +#define _GUARD_DORV_NO_DICT_r01 959 +#define _GUARD_DORV_NO_DICT_r11 960 +#define _GUARD_DORV_NO_DICT_r22 961 +#define _GUARD_DORV_NO_DICT_r33 962 +#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r01 963 +#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r11 964 +#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r22 965 +#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r33 966 +#define _GUARD_GLOBALS_VERSION_r00 967 +#define _GUARD_GLOBALS_VERSION_r11 968 +#define _GUARD_GLOBALS_VERSION_r22 969 +#define _GUARD_GLOBALS_VERSION_r33 970 +#define _GUARD_IP_RETURN_GENERATOR_r00 971 +#define _GUARD_IP_RETURN_GENERATOR_r11 972 +#define _GUARD_IP_RETURN_GENERATOR_r22 973 +#define _GUARD_IP_RETURN_GENERATOR_r33 974 +#define _GUARD_IP_RETURN_VALUE_r00 975 +#define _GUARD_IP_RETURN_VALUE_r11 976 +#define _GUARD_IP_RETURN_VALUE_r22 977 +#define _GUARD_IP_RETURN_VALUE_r33 978 +#define _GUARD_IP_YIELD_VALUE_r00 979 +#define _GUARD_IP_YIELD_VALUE_r11 980 +#define _GUARD_IP_YIELD_VALUE_r22 981 +#define _GUARD_IP_YIELD_VALUE_r33 982 +#define _GUARD_IP__PUSH_FRAME_r00 983 +#define _GUARD_IP__PUSH_FRAME_r11 984 +#define _GUARD_IP__PUSH_FRAME_r22 985 +#define _GUARD_IP__PUSH_FRAME_r33 986 +#define _GUARD_IS_FALSE_POP_r00 987 +#define _GUARD_IS_FALSE_POP_r10 988 +#define _GUARD_IS_FALSE_POP_r21 989 +#define _GUARD_IS_FALSE_POP_r32 990 +#define _GUARD_IS_NONE_POP_r00 991 +#define _GUARD_IS_NONE_POP_r10 992 +#define _GUARD_IS_NONE_POP_r21 993 +#define _GUARD_IS_NONE_POP_r32 994 +#define _GUARD_IS_NOT_NONE_POP_r10 995 +#define _GUARD_IS_TRUE_POP_r00 996 +#define _GUARD_IS_TRUE_POP_r10 997 +#define _GUARD_IS_TRUE_POP_r21 998 +#define _GUARD_IS_TRUE_POP_r32 999 +#define _GUARD_KEYS_VERSION_r01 1000 +#define _GUARD_KEYS_VERSION_r11 1001 +#define _GUARD_KEYS_VERSION_r22 1002 +#define _GUARD_KEYS_VERSION_r33 1003 +#define _GUARD_NOS_ANY_DICT_r02 1004 +#define _GUARD_NOS_ANY_DICT_r12 1005 +#define _GUARD_NOS_ANY_DICT_r22 1006 +#define _GUARD_NOS_ANY_DICT_r33 1007 +#define _GUARD_NOS_COMPACT_ASCII_r02 1008 +#define _GUARD_NOS_COMPACT_ASCII_r12 1009 +#define _GUARD_NOS_COMPACT_ASCII_r22 1010 +#define _GUARD_NOS_COMPACT_ASCII_r33 1011 +#define _GUARD_NOS_DICT_r02 1012 +#define _GUARD_NOS_DICT_r12 1013 +#define _GUARD_NOS_DICT_r22 1014 +#define _GUARD_NOS_DICT_r33 1015 +#define _GUARD_NOS_FLOAT_r02 1016 +#define _GUARD_NOS_FLOAT_r12 1017 +#define _GUARD_NOS_FLOAT_r22 1018 +#define _GUARD_NOS_FLOAT_r33 1019 +#define _GUARD_NOS_INT_r02 1020 +#define _GUARD_NOS_INT_r12 1021 +#define _GUARD_NOS_INT_r22 1022 +#define _GUARD_NOS_INT_r33 1023 +#define _GUARD_NOS_LIST_r02 1024 +#define _GUARD_NOS_LIST_r12 1025 +#define _GUARD_NOS_LIST_r22 1026 +#define _GUARD_NOS_LIST_r33 1027 +#define _GUARD_NOS_NOT_NULL_r02 1028 +#define _GUARD_NOS_NOT_NULL_r12 1029 +#define _GUARD_NOS_NOT_NULL_r22 1030 +#define _GUARD_NOS_NOT_NULL_r33 1031 +#define _GUARD_NOS_NULL_r02 1032 +#define _GUARD_NOS_NULL_r12 1033 +#define _GUARD_NOS_NULL_r22 1034 +#define _GUARD_NOS_NULL_r33 1035 +#define _GUARD_NOS_OVERFLOWED_r02 1036 +#define _GUARD_NOS_OVERFLOWED_r12 1037 +#define _GUARD_NOS_OVERFLOWED_r22 1038 +#define _GUARD_NOS_OVERFLOWED_r33 1039 +#define _GUARD_NOS_TUPLE_r02 1040 +#define _GUARD_NOS_TUPLE_r12 1041 +#define _GUARD_NOS_TUPLE_r22 1042 +#define _GUARD_NOS_TUPLE_r33 1043 +#define _GUARD_NOS_UNICODE_r02 1044 +#define _GUARD_NOS_UNICODE_r12 1045 +#define _GUARD_NOS_UNICODE_r22 1046 +#define _GUARD_NOS_UNICODE_r33 1047 +#define _GUARD_NOT_EXHAUSTED_LIST_r02 1048 +#define _GUARD_NOT_EXHAUSTED_LIST_r12 1049 +#define _GUARD_NOT_EXHAUSTED_LIST_r22 1050 +#define _GUARD_NOT_EXHAUSTED_LIST_r33 1051 +#define _GUARD_NOT_EXHAUSTED_RANGE_r02 1052 +#define _GUARD_NOT_EXHAUSTED_RANGE_r12 1053 +#define _GUARD_NOT_EXHAUSTED_RANGE_r22 1054 +#define _GUARD_NOT_EXHAUSTED_RANGE_r33 1055 +#define _GUARD_NOT_EXHAUSTED_TUPLE_r02 1056 +#define _GUARD_NOT_EXHAUSTED_TUPLE_r12 1057 +#define _GUARD_NOT_EXHAUSTED_TUPLE_r22 1058 +#define _GUARD_NOT_EXHAUSTED_TUPLE_r33 1059 +#define _GUARD_THIRD_NULL_r03 1060 +#define _GUARD_THIRD_NULL_r13 1061 +#define _GUARD_THIRD_NULL_r23 1062 +#define _GUARD_THIRD_NULL_r33 1063 +#define _GUARD_TOS_ANY_DICT_r01 1064 +#define _GUARD_TOS_ANY_DICT_r11 1065 +#define _GUARD_TOS_ANY_DICT_r22 1066 +#define _GUARD_TOS_ANY_DICT_r33 1067 +#define _GUARD_TOS_ANY_SET_r01 1068 +#define _GUARD_TOS_ANY_SET_r11 1069 +#define _GUARD_TOS_ANY_SET_r22 1070 +#define _GUARD_TOS_ANY_SET_r33 1071 +#define _GUARD_TOS_DICT_r01 1072 +#define _GUARD_TOS_DICT_r11 1073 +#define _GUARD_TOS_DICT_r22 1074 +#define _GUARD_TOS_DICT_r33 1075 +#define _GUARD_TOS_FLOAT_r01 1076 +#define _GUARD_TOS_FLOAT_r11 1077 +#define _GUARD_TOS_FLOAT_r22 1078 +#define _GUARD_TOS_FLOAT_r33 1079 +#define _GUARD_TOS_FROZENDICT_r01 1080 +#define _GUARD_TOS_FROZENDICT_r11 1081 +#define _GUARD_TOS_FROZENDICT_r22 1082 +#define _GUARD_TOS_FROZENDICT_r33 1083 +#define _GUARD_TOS_FROZENSET_r01 1084 +#define _GUARD_TOS_FROZENSET_r11 1085 +#define _GUARD_TOS_FROZENSET_r22 1086 +#define _GUARD_TOS_FROZENSET_r33 1087 +#define _GUARD_TOS_INT_r01 1088 +#define _GUARD_TOS_INT_r11 1089 +#define _GUARD_TOS_INT_r22 1090 +#define _GUARD_TOS_INT_r33 1091 +#define _GUARD_TOS_LIST_r01 1092 +#define _GUARD_TOS_LIST_r11 1093 +#define _GUARD_TOS_LIST_r22 1094 +#define _GUARD_TOS_LIST_r33 1095 +#define _GUARD_TOS_OVERFLOWED_r01 1096 +#define _GUARD_TOS_OVERFLOWED_r11 1097 +#define _GUARD_TOS_OVERFLOWED_r22 1098 +#define _GUARD_TOS_OVERFLOWED_r33 1099 +#define _GUARD_TOS_SET_r01 1100 +#define _GUARD_TOS_SET_r11 1101 +#define _GUARD_TOS_SET_r22 1102 +#define _GUARD_TOS_SET_r33 1103 +#define _GUARD_TOS_SLICE_r01 1104 +#define _GUARD_TOS_SLICE_r11 1105 +#define _GUARD_TOS_SLICE_r22 1106 +#define _GUARD_TOS_SLICE_r33 1107 +#define _GUARD_TOS_TUPLE_r01 1108 +#define _GUARD_TOS_TUPLE_r11 1109 +#define _GUARD_TOS_TUPLE_r22 1110 +#define _GUARD_TOS_TUPLE_r33 1111 +#define _GUARD_TOS_UNICODE_r01 1112 +#define _GUARD_TOS_UNICODE_r11 1113 +#define _GUARD_TOS_UNICODE_r22 1114 +#define _GUARD_TOS_UNICODE_r33 1115 +#define _GUARD_TYPE_VERSION_r01 1116 +#define _GUARD_TYPE_VERSION_r11 1117 +#define _GUARD_TYPE_VERSION_r22 1118 +#define _GUARD_TYPE_VERSION_r33 1119 +#define _GUARD_TYPE_VERSION_LOCKED_r01 1120 +#define _GUARD_TYPE_VERSION_LOCKED_r11 1121 +#define _GUARD_TYPE_VERSION_LOCKED_r22 1122 +#define _GUARD_TYPE_VERSION_LOCKED_r33 1123 +#define _HANDLE_PENDING_AND_DEOPT_r00 1124 +#define _HANDLE_PENDING_AND_DEOPT_r10 1125 +#define _HANDLE_PENDING_AND_DEOPT_r20 1126 +#define _HANDLE_PENDING_AND_DEOPT_r30 1127 +#define _IMPORT_FROM_r12 1128 +#define _IMPORT_NAME_r21 1129 +#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS_r00 1130 +#define _INIT_CALL_PY_EXACT_ARGS_r01 1131 +#define _INIT_CALL_PY_EXACT_ARGS_0_r01 1132 +#define _INIT_CALL_PY_EXACT_ARGS_1_r01 1133 +#define _INIT_CALL_PY_EXACT_ARGS_2_r01 1134 +#define _INIT_CALL_PY_EXACT_ARGS_3_r01 1135 +#define _INIT_CALL_PY_EXACT_ARGS_4_r01 1136 +#define _INSERT_1_LOAD_CONST_INLINE_r02 1137 +#define _INSERT_1_LOAD_CONST_INLINE_r12 1138 +#define _INSERT_1_LOAD_CONST_INLINE_r23 1139 +#define _INSERT_1_LOAD_CONST_INLINE_BORROW_r02 1140 +#define _INSERT_1_LOAD_CONST_INLINE_BORROW_r12 1141 +#define _INSERT_1_LOAD_CONST_INLINE_BORROW_r23 1142 +#define _INSERT_2_LOAD_CONST_INLINE_BORROW_r03 1143 +#define _INSERT_2_LOAD_CONST_INLINE_BORROW_r13 1144 +#define _INSERT_2_LOAD_CONST_INLINE_BORROW_r23 1145 +#define _INSERT_NULL_r10 1146 +#define _INSTRUMENTED_FOR_ITER_r23 1147 +#define _INSTRUMENTED_INSTRUCTION_r00 1148 +#define _INSTRUMENTED_JUMP_FORWARD_r00 1149 +#define _INSTRUMENTED_JUMP_FORWARD_r11 1150 +#define _INSTRUMENTED_JUMP_FORWARD_r22 1151 +#define _INSTRUMENTED_JUMP_FORWARD_r33 1152 +#define _INSTRUMENTED_LINE_r00 1153 +#define _INSTRUMENTED_NOT_TAKEN_r00 1154 +#define _INSTRUMENTED_NOT_TAKEN_r11 1155 +#define _INSTRUMENTED_NOT_TAKEN_r22 1156 +#define _INSTRUMENTED_NOT_TAKEN_r33 1157 +#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r00 1158 +#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r10 1159 +#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r21 1160 +#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r32 1161 +#define _INSTRUMENTED_POP_JUMP_IF_NONE_r10 1162 +#define _INSTRUMENTED_POP_JUMP_IF_NOT_NONE_r10 1163 +#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r00 1164 +#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r10 1165 +#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r21 1166 +#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r32 1167 +#define _IS_NONE_r11 1168 +#define _IS_OP_r03 1169 +#define _IS_OP_r13 1170 +#define _IS_OP_r23 1171 +#define _ITER_CHECK_LIST_r02 1172 +#define _ITER_CHECK_LIST_r12 1173 +#define _ITER_CHECK_LIST_r22 1174 +#define _ITER_CHECK_LIST_r33 1175 +#define _ITER_CHECK_RANGE_r02 1176 +#define _ITER_CHECK_RANGE_r12 1177 +#define _ITER_CHECK_RANGE_r22 1178 +#define _ITER_CHECK_RANGE_r33 1179 +#define _ITER_CHECK_TUPLE_r02 1180 +#define _ITER_CHECK_TUPLE_r12 1181 +#define _ITER_CHECK_TUPLE_r22 1182 +#define _ITER_CHECK_TUPLE_r33 1183 +#define _ITER_JUMP_LIST_r02 1184 +#define _ITER_JUMP_LIST_r12 1185 +#define _ITER_JUMP_LIST_r22 1186 +#define _ITER_JUMP_LIST_r33 1187 +#define _ITER_JUMP_RANGE_r02 1188 +#define _ITER_JUMP_RANGE_r12 1189 +#define _ITER_JUMP_RANGE_r22 1190 +#define _ITER_JUMP_RANGE_r33 1191 +#define _ITER_JUMP_TUPLE_r02 1192 +#define _ITER_JUMP_TUPLE_r12 1193 +#define _ITER_JUMP_TUPLE_r22 1194 +#define _ITER_JUMP_TUPLE_r33 1195 +#define _ITER_NEXT_LIST_r23 1196 +#define _ITER_NEXT_LIST_TIER_TWO_r23 1197 +#define _ITER_NEXT_RANGE_r03 1198 +#define _ITER_NEXT_RANGE_r13 1199 +#define _ITER_NEXT_RANGE_r23 1200 +#define _ITER_NEXT_TUPLE_r03 1201 +#define _ITER_NEXT_TUPLE_r13 1202 +#define _ITER_NEXT_TUPLE_r23 1203 +#define _JUMP_BACKWARD_NO_INTERRUPT_r00 1204 +#define _JUMP_BACKWARD_NO_INTERRUPT_r11 1205 +#define _JUMP_BACKWARD_NO_INTERRUPT_r22 1206 +#define _JUMP_BACKWARD_NO_INTERRUPT_r33 1207 +#define _JUMP_TO_TOP_r00 1208 +#define _LIST_APPEND_r10 1209 +#define _LIST_EXTEND_r11 1210 +#define _LOAD_ATTR_r10 1211 +#define _LOAD_ATTR_CLASS_r11 1212 +#define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN_r11 1213 +#define _LOAD_ATTR_INSTANCE_VALUE_r02 1214 +#define _LOAD_ATTR_INSTANCE_VALUE_r12 1215 +#define _LOAD_ATTR_INSTANCE_VALUE_r23 1216 +#define _LOAD_ATTR_METHOD_LAZY_DICT_r02 1217 +#define _LOAD_ATTR_METHOD_LAZY_DICT_r12 1218 +#define _LOAD_ATTR_METHOD_LAZY_DICT_r23 1219 +#define _LOAD_ATTR_METHOD_NO_DICT_r02 1220 +#define _LOAD_ATTR_METHOD_NO_DICT_r12 1221 +#define _LOAD_ATTR_METHOD_NO_DICT_r23 1222 +#define _LOAD_ATTR_METHOD_WITH_VALUES_r02 1223 +#define _LOAD_ATTR_METHOD_WITH_VALUES_r12 1224 +#define _LOAD_ATTR_METHOD_WITH_VALUES_r23 1225 +#define _LOAD_ATTR_MODULE_r12 1226 +#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT_r11 1227 +#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES_r11 1228 +#define _LOAD_ATTR_PROPERTY_FRAME_r11 1229 +#define _LOAD_ATTR_SLOT_r02 1230 +#define _LOAD_ATTR_SLOT_r12 1231 +#define _LOAD_ATTR_SLOT_r23 1232 +#define _LOAD_ATTR_WITH_HINT_r12 1233 +#define _LOAD_BUILD_CLASS_r01 1234 +#define _LOAD_BYTECODE_r00 1235 +#define _LOAD_COMMON_CONSTANT_r01 1236 +#define _LOAD_COMMON_CONSTANT_r12 1237 +#define _LOAD_COMMON_CONSTANT_r23 1238 +#define _LOAD_CONST_r01 1239 +#define _LOAD_CONST_r12 1240 +#define _LOAD_CONST_r23 1241 +#define _LOAD_CONST_INLINE_r01 1242 +#define _LOAD_CONST_INLINE_r12 1243 +#define _LOAD_CONST_INLINE_r23 1244 +#define _LOAD_CONST_INLINE_BORROW_r01 1245 +#define _LOAD_CONST_INLINE_BORROW_r12 1246 +#define _LOAD_CONST_INLINE_BORROW_r23 1247 +#define _LOAD_CONST_UNDER_INLINE_r02 1248 +#define _LOAD_CONST_UNDER_INLINE_r12 1249 +#define _LOAD_CONST_UNDER_INLINE_r23 1250 +#define _LOAD_CONST_UNDER_INLINE_BORROW_r02 1251 +#define _LOAD_CONST_UNDER_INLINE_BORROW_r12 1252 +#define _LOAD_CONST_UNDER_INLINE_BORROW_r23 1253 +#define _LOAD_DEREF_r01 1254 +#define _LOAD_FAST_r01 1255 +#define _LOAD_FAST_r12 1256 +#define _LOAD_FAST_r23 1257 +#define _LOAD_FAST_0_r01 1258 +#define _LOAD_FAST_0_r12 1259 +#define _LOAD_FAST_0_r23 1260 +#define _LOAD_FAST_1_r01 1261 +#define _LOAD_FAST_1_r12 1262 +#define _LOAD_FAST_1_r23 1263 +#define _LOAD_FAST_2_r01 1264 +#define _LOAD_FAST_2_r12 1265 +#define _LOAD_FAST_2_r23 1266 +#define _LOAD_FAST_3_r01 1267 +#define _LOAD_FAST_3_r12 1268 +#define _LOAD_FAST_3_r23 1269 +#define _LOAD_FAST_4_r01 1270 +#define _LOAD_FAST_4_r12 1271 +#define _LOAD_FAST_4_r23 1272 +#define _LOAD_FAST_5_r01 1273 +#define _LOAD_FAST_5_r12 1274 +#define _LOAD_FAST_5_r23 1275 +#define _LOAD_FAST_6_r01 1276 +#define _LOAD_FAST_6_r12 1277 +#define _LOAD_FAST_6_r23 1278 +#define _LOAD_FAST_7_r01 1279 +#define _LOAD_FAST_7_r12 1280 +#define _LOAD_FAST_7_r23 1281 +#define _LOAD_FAST_AND_CLEAR_r01 1282 +#define _LOAD_FAST_AND_CLEAR_r12 1283 +#define _LOAD_FAST_AND_CLEAR_r23 1284 +#define _LOAD_FAST_BORROW_r01 1285 +#define _LOAD_FAST_BORROW_r12 1286 +#define _LOAD_FAST_BORROW_r23 1287 +#define _LOAD_FAST_BORROW_0_r01 1288 +#define _LOAD_FAST_BORROW_0_r12 1289 +#define _LOAD_FAST_BORROW_0_r23 1290 +#define _LOAD_FAST_BORROW_1_r01 1291 +#define _LOAD_FAST_BORROW_1_r12 1292 +#define _LOAD_FAST_BORROW_1_r23 1293 +#define _LOAD_FAST_BORROW_2_r01 1294 +#define _LOAD_FAST_BORROW_2_r12 1295 +#define _LOAD_FAST_BORROW_2_r23 1296 +#define _LOAD_FAST_BORROW_3_r01 1297 +#define _LOAD_FAST_BORROW_3_r12 1298 +#define _LOAD_FAST_BORROW_3_r23 1299 +#define _LOAD_FAST_BORROW_4_r01 1300 +#define _LOAD_FAST_BORROW_4_r12 1301 +#define _LOAD_FAST_BORROW_4_r23 1302 +#define _LOAD_FAST_BORROW_5_r01 1303 +#define _LOAD_FAST_BORROW_5_r12 1304 +#define _LOAD_FAST_BORROW_5_r23 1305 +#define _LOAD_FAST_BORROW_6_r01 1306 +#define _LOAD_FAST_BORROW_6_r12 1307 +#define _LOAD_FAST_BORROW_6_r23 1308 +#define _LOAD_FAST_BORROW_7_r01 1309 +#define _LOAD_FAST_BORROW_7_r12 1310 +#define _LOAD_FAST_BORROW_7_r23 1311 +#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r02 1312 +#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r13 1313 +#define _LOAD_FAST_CHECK_r01 1314 +#define _LOAD_FAST_CHECK_r12 1315 +#define _LOAD_FAST_CHECK_r23 1316 +#define _LOAD_FAST_LOAD_FAST_r02 1317 +#define _LOAD_FAST_LOAD_FAST_r13 1318 +#define _LOAD_FROM_DICT_OR_DEREF_r11 1319 +#define _LOAD_FROM_DICT_OR_GLOBALS_r11 1320 +#define _LOAD_GLOBAL_r00 1321 +#define _LOAD_GLOBAL_BUILTINS_r01 1322 +#define _LOAD_GLOBAL_MODULE_r01 1323 +#define _LOAD_LOCALS_r01 1324 +#define _LOAD_LOCALS_r12 1325 +#define _LOAD_LOCALS_r23 1326 +#define _LOAD_NAME_r01 1327 +#define _LOAD_SMALL_INT_r01 1328 +#define _LOAD_SMALL_INT_r12 1329 +#define _LOAD_SMALL_INT_r23 1330 +#define _LOAD_SMALL_INT_0_r01 1331 +#define _LOAD_SMALL_INT_0_r12 1332 +#define _LOAD_SMALL_INT_0_r23 1333 +#define _LOAD_SMALL_INT_1_r01 1334 +#define _LOAD_SMALL_INT_1_r12 1335 +#define _LOAD_SMALL_INT_1_r23 1336 +#define _LOAD_SMALL_INT_2_r01 1337 +#define _LOAD_SMALL_INT_2_r12 1338 +#define _LOAD_SMALL_INT_2_r23 1339 +#define _LOAD_SMALL_INT_3_r01 1340 +#define _LOAD_SMALL_INT_3_r12 1341 +#define _LOAD_SMALL_INT_3_r23 1342 +#define _LOAD_SPECIAL_r00 1343 +#define _LOAD_SUPER_ATTR_ATTR_r31 1344 +#define _LOAD_SUPER_ATTR_METHOD_r32 1345 +#define _LOCK_OBJECT_r01 1346 +#define _LOCK_OBJECT_r11 1347 +#define _LOCK_OBJECT_r22 1348 +#define _LOCK_OBJECT_r33 1349 +#define _MAKE_CALLARGS_A_TUPLE_r33 1350 +#define _MAKE_CELL_r00 1351 +#define _MAKE_FUNCTION_r11 1352 +#define _MAKE_HEAP_SAFE_r01 1353 +#define _MAKE_HEAP_SAFE_r11 1354 +#define _MAKE_HEAP_SAFE_r22 1355 +#define _MAKE_HEAP_SAFE_r33 1356 +#define _MAKE_WARM_r00 1357 +#define _MAKE_WARM_r11 1358 +#define _MAKE_WARM_r22 1359 +#define _MAKE_WARM_r33 1360 +#define _MAP_ADD_r20 1361 +#define _MATCH_CLASS_r33 1362 +#define _MATCH_KEYS_r23 1363 +#define _MATCH_MAPPING_r02 1364 +#define _MATCH_MAPPING_r12 1365 +#define _MATCH_MAPPING_r23 1366 +#define _MATCH_SEQUENCE_r02 1367 +#define _MATCH_SEQUENCE_r12 1368 +#define _MATCH_SEQUENCE_r23 1369 +#define _MAYBE_EXPAND_METHOD_r00 1370 +#define _MAYBE_EXPAND_METHOD_KW_r11 1371 +#define _MONITOR_CALL_r00 1372 +#define _MONITOR_CALL_KW_r11 1373 +#define _MONITOR_JUMP_BACKWARD_r00 1374 +#define _MONITOR_JUMP_BACKWARD_r11 1375 +#define _MONITOR_JUMP_BACKWARD_r22 1376 +#define _MONITOR_JUMP_BACKWARD_r33 1377 +#define _MONITOR_RESUME_r00 1378 +#define _NOP_r00 1379 +#define _NOP_r11 1380 +#define _NOP_r22 1381 +#define _NOP_r33 1382 +#define _POP_CALL_r20 1383 +#define _POP_CALL_LOAD_CONST_INLINE_BORROW_r21 1384 +#define _POP_CALL_ONE_r30 1385 +#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW_r31 1386 +#define _POP_CALL_TWO_r30 1387 +#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW_r31 1388 +#define _POP_EXCEPT_r10 1389 +#define _POP_ITER_r20 1390 +#define _POP_JUMP_IF_FALSE_r00 1391 +#define _POP_JUMP_IF_FALSE_r10 1392 +#define _POP_JUMP_IF_FALSE_r21 1393 +#define _POP_JUMP_IF_FALSE_r32 1394 +#define _POP_JUMP_IF_TRUE_r00 1395 +#define _POP_JUMP_IF_TRUE_r10 1396 +#define _POP_JUMP_IF_TRUE_r21 1397 +#define _POP_JUMP_IF_TRUE_r32 1398 +#define _POP_TOP_r10 1399 +#define _POP_TOP_FLOAT_r00 1400 +#define _POP_TOP_FLOAT_r10 1401 +#define _POP_TOP_FLOAT_r21 1402 +#define _POP_TOP_FLOAT_r32 1403 +#define _POP_TOP_INT_r00 1404 +#define _POP_TOP_INT_r10 1405 +#define _POP_TOP_INT_r21 1406 +#define _POP_TOP_INT_r32 1407 +#define _POP_TOP_LOAD_CONST_INLINE_r11 1408 +#define _POP_TOP_LOAD_CONST_INLINE_BORROW_r11 1409 +#define _POP_TOP_NOP_r00 1410 +#define _POP_TOP_NOP_r10 1411 +#define _POP_TOP_NOP_r21 1412 +#define _POP_TOP_NOP_r32 1413 +#define _POP_TOP_UNICODE_r00 1414 +#define _POP_TOP_UNICODE_r10 1415 +#define _POP_TOP_UNICODE_r21 1416 +#define _POP_TOP_UNICODE_r32 1417 +#define _POP_TWO_r20 1418 +#define _POP_TWO_LOAD_CONST_INLINE_BORROW_r21 1419 +#define _PUSH_EXC_INFO_r02 1420 +#define _PUSH_EXC_INFO_r12 1421 +#define _PUSH_EXC_INFO_r23 1422 +#define _PUSH_FRAME_r10 1423 +#define _PUSH_NULL_r01 1424 +#define _PUSH_NULL_r12 1425 +#define _PUSH_NULL_r23 1426 +#define _PUSH_NULL_CONDITIONAL_r00 1427 +#define _PY_FRAME_EX_r31 1428 +#define _PY_FRAME_GENERAL_r01 1429 +#define _PY_FRAME_KW_r11 1430 +#define _REPLACE_WITH_TRUE_r02 1431 +#define _REPLACE_WITH_TRUE_r12 1432 +#define _REPLACE_WITH_TRUE_r23 1433 +#define _RESUME_CHECK_r00 1434 +#define _RESUME_CHECK_r11 1435 +#define _RESUME_CHECK_r22 1436 +#define _RESUME_CHECK_r33 1437 +#define _RETURN_GENERATOR_r01 1438 +#define _RETURN_VALUE_r11 1439 +#define _SAVE_RETURN_OFFSET_r00 1440 +#define _SAVE_RETURN_OFFSET_r11 1441 +#define _SAVE_RETURN_OFFSET_r22 1442 +#define _SAVE_RETURN_OFFSET_r33 1443 +#define _SEND_r33 1444 +#define _SEND_GEN_FRAME_r33 1445 +#define _SETUP_ANNOTATIONS_r00 1446 +#define _SET_ADD_r10 1447 +#define _SET_FUNCTION_ATTRIBUTE_r01 1448 +#define _SET_FUNCTION_ATTRIBUTE_r11 1449 +#define _SET_FUNCTION_ATTRIBUTE_r21 1450 +#define _SET_FUNCTION_ATTRIBUTE_r32 1451 +#define _SET_IP_r00 1452 +#define _SET_IP_r11 1453 +#define _SET_IP_r22 1454 +#define _SET_IP_r33 1455 +#define _SET_UPDATE_r11 1456 +#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r02 1457 +#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r12 1458 +#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r22 1459 +#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r32 1460 +#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r03 1461 +#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r13 1462 +#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r23 1463 +#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r33 1464 +#define _SPILL_OR_RELOAD_r01 1465 +#define _SPILL_OR_RELOAD_r02 1466 +#define _SPILL_OR_RELOAD_r03 1467 +#define _SPILL_OR_RELOAD_r10 1468 +#define _SPILL_OR_RELOAD_r12 1469 +#define _SPILL_OR_RELOAD_r13 1470 +#define _SPILL_OR_RELOAD_r20 1471 +#define _SPILL_OR_RELOAD_r21 1472 +#define _SPILL_OR_RELOAD_r23 1473 +#define _SPILL_OR_RELOAD_r30 1474 +#define _SPILL_OR_RELOAD_r31 1475 +#define _SPILL_OR_RELOAD_r32 1476 +#define _START_EXECUTOR_r00 1477 +#define _STORE_ATTR_r20 1478 +#define _STORE_ATTR_INSTANCE_VALUE_r21 1479 +#define _STORE_ATTR_SLOT_r21 1480 +#define _STORE_ATTR_WITH_HINT_r21 1481 +#define _STORE_DEREF_r10 1482 +#define _STORE_FAST_LOAD_FAST_r11 1483 +#define _STORE_FAST_STORE_FAST_r20 1484 +#define _STORE_GLOBAL_r10 1485 +#define _STORE_NAME_r10 1486 +#define _STORE_SLICE_r30 1487 +#define _STORE_SUBSCR_r30 1488 +#define _STORE_SUBSCR_DICT_r31 1489 +#define _STORE_SUBSCR_LIST_INT_r32 1490 +#define _SWAP_r11 1491 +#define _SWAP_2_r02 1492 +#define _SWAP_2_r12 1493 +#define _SWAP_2_r22 1494 +#define _SWAP_2_r33 1495 +#define _SWAP_3_r03 1496 +#define _SWAP_3_r13 1497 +#define _SWAP_3_r23 1498 +#define _SWAP_3_r33 1499 +#define _SWAP_FAST_r01 1500 +#define _SWAP_FAST_r11 1501 +#define _SWAP_FAST_r22 1502 +#define _SWAP_FAST_r33 1503 +#define _SWAP_FAST_0_r01 1504 +#define _SWAP_FAST_0_r11 1505 +#define _SWAP_FAST_0_r22 1506 +#define _SWAP_FAST_0_r33 1507 +#define _SWAP_FAST_1_r01 1508 +#define _SWAP_FAST_1_r11 1509 +#define _SWAP_FAST_1_r22 1510 +#define _SWAP_FAST_1_r33 1511 +#define _SWAP_FAST_2_r01 1512 +#define _SWAP_FAST_2_r11 1513 +#define _SWAP_FAST_2_r22 1514 +#define _SWAP_FAST_2_r33 1515 +#define _SWAP_FAST_3_r01 1516 +#define _SWAP_FAST_3_r11 1517 +#define _SWAP_FAST_3_r22 1518 +#define _SWAP_FAST_3_r33 1519 +#define _SWAP_FAST_4_r01 1520 +#define _SWAP_FAST_4_r11 1521 +#define _SWAP_FAST_4_r22 1522 +#define _SWAP_FAST_4_r33 1523 +#define _SWAP_FAST_5_r01 1524 +#define _SWAP_FAST_5_r11 1525 +#define _SWAP_FAST_5_r22 1526 +#define _SWAP_FAST_5_r33 1527 +#define _SWAP_FAST_6_r01 1528 +#define _SWAP_FAST_6_r11 1529 +#define _SWAP_FAST_6_r22 1530 +#define _SWAP_FAST_6_r33 1531 +#define _SWAP_FAST_7_r01 1532 +#define _SWAP_FAST_7_r11 1533 +#define _SWAP_FAST_7_r22 1534 +#define _SWAP_FAST_7_r33 1535 +#define _TIER2_RESUME_CHECK_r00 1536 +#define _TIER2_RESUME_CHECK_r11 1537 +#define _TIER2_RESUME_CHECK_r22 1538 +#define _TIER2_RESUME_CHECK_r33 1539 +#define _TO_BOOL_r11 1540 +#define _TO_BOOL_BOOL_r01 1541 +#define _TO_BOOL_BOOL_r11 1542 +#define _TO_BOOL_BOOL_r22 1543 +#define _TO_BOOL_BOOL_r33 1544 +#define _TO_BOOL_INT_r02 1545 +#define _TO_BOOL_INT_r12 1546 +#define _TO_BOOL_INT_r23 1547 +#define _TO_BOOL_LIST_r02 1548 +#define _TO_BOOL_LIST_r12 1549 +#define _TO_BOOL_LIST_r23 1550 +#define _TO_BOOL_NONE_r01 1551 +#define _TO_BOOL_NONE_r11 1552 +#define _TO_BOOL_NONE_r22 1553 +#define _TO_BOOL_NONE_r33 1554 +#define _TO_BOOL_STR_r02 1555 +#define _TO_BOOL_STR_r12 1556 +#define _TO_BOOL_STR_r23 1557 +#define _TRACE_RECORD_r00 1558 +#define _UNARY_INVERT_r12 1559 +#define _UNARY_NEGATIVE_r12 1560 +#define _UNARY_NEGATIVE_FLOAT_INPLACE_r02 1561 +#define _UNARY_NEGATIVE_FLOAT_INPLACE_r12 1562 +#define _UNARY_NEGATIVE_FLOAT_INPLACE_r23 1563 +#define _UNARY_NOT_r01 1564 +#define _UNARY_NOT_r11 1565 +#define _UNARY_NOT_r22 1566 +#define _UNARY_NOT_r33 1567 +#define _UNPACK_EX_r10 1568 +#define _UNPACK_SEQUENCE_r10 1569 +#define _UNPACK_SEQUENCE_LIST_r10 1570 +#define _UNPACK_SEQUENCE_TUPLE_r10 1571 +#define _UNPACK_SEQUENCE_TWO_TUPLE_r12 1572 +#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r03 1573 +#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r13 1574 +#define _UNPACK_SEQUENCE_UNIQUE_TUPLE_r10 1575 +#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r02 1576 +#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r12 1577 +#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r23 1578 +#define _WITH_EXCEPT_START_r33 1579 +#define _YIELD_VALUE_r11 1580 +#define MAX_UOP_REGS_ID 1580 #ifdef __cplusplus } diff --git a/Include/internal/pycore_uop_metadata.h b/Include/internal/pycore_uop_metadata.h index 4e16c3040c7c92..52bec0bd0b835a 100644 --- a/Include/internal/pycore_uop_metadata.h +++ b/Include/internal/pycore_uop_metadata.h @@ -108,6 +108,12 @@ const uint32_t _PyUop_Flags[MAX_UOP_ID+1] = { [_BINARY_OP_MULTIPLY_INT] = HAS_EXIT_FLAG | HAS_PURE_FLAG, [_BINARY_OP_ADD_INT] = HAS_EXIT_FLAG | HAS_PURE_FLAG, [_BINARY_OP_SUBTRACT_INT] = HAS_EXIT_FLAG | HAS_PURE_FLAG, + [_BINARY_OP_ADD_INT_INPLACE] = HAS_EXIT_FLAG, + [_BINARY_OP_SUBTRACT_INT_INPLACE] = HAS_EXIT_FLAG, + [_BINARY_OP_MULTIPLY_INT_INPLACE] = HAS_EXIT_FLAG, + [_BINARY_OP_ADD_INT_INPLACE_RIGHT] = HAS_EXIT_FLAG, + [_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT] = HAS_EXIT_FLAG, + [_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT] = HAS_EXIT_FLAG, [_GUARD_NOS_FLOAT] = HAS_EXIT_FLAG, [_GUARD_TOS_FLOAT] = HAS_EXIT_FLAG, [_BINARY_OP_MULTIPLY_FLOAT] = HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_PURE_FLAG, @@ -1084,6 +1090,60 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { { -1, -1, -1 }, }, }, + [_BINARY_OP_ADD_INT_INPLACE] = { + .best = { 0, 1, 2, 2 }, + .entries = { + { 3, 0, _BINARY_OP_ADD_INT_INPLACE_r03 }, + { 3, 1, _BINARY_OP_ADD_INT_INPLACE_r13 }, + { 3, 2, _BINARY_OP_ADD_INT_INPLACE_r23 }, + { -1, -1, -1 }, + }, + }, + [_BINARY_OP_SUBTRACT_INT_INPLACE] = { + .best = { 0, 1, 2, 2 }, + .entries = { + { 3, 0, _BINARY_OP_SUBTRACT_INT_INPLACE_r03 }, + { 3, 1, _BINARY_OP_SUBTRACT_INT_INPLACE_r13 }, + { 3, 2, _BINARY_OP_SUBTRACT_INT_INPLACE_r23 }, + { -1, -1, -1 }, + }, + }, + [_BINARY_OP_MULTIPLY_INT_INPLACE] = { + .best = { 0, 1, 2, 2 }, + .entries = { + { 3, 0, _BINARY_OP_MULTIPLY_INT_INPLACE_r03 }, + { 3, 1, _BINARY_OP_MULTIPLY_INT_INPLACE_r13 }, + { 3, 2, _BINARY_OP_MULTIPLY_INT_INPLACE_r23 }, + { -1, -1, -1 }, + }, + }, + [_BINARY_OP_ADD_INT_INPLACE_RIGHT] = { + .best = { 0, 1, 2, 2 }, + .entries = { + { 3, 0, _BINARY_OP_ADD_INT_INPLACE_RIGHT_r03 }, + { 3, 1, _BINARY_OP_ADD_INT_INPLACE_RIGHT_r13 }, + { 3, 2, _BINARY_OP_ADD_INT_INPLACE_RIGHT_r23 }, + { -1, -1, -1 }, + }, + }, + [_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT] = { + .best = { 0, 1, 2, 2 }, + .entries = { + { 3, 0, _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r03 }, + { 3, 1, _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r13 }, + { 3, 2, _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r23 }, + { -1, -1, -1 }, + }, + }, + [_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT] = { + .best = { 0, 1, 2, 2 }, + .entries = { + { 3, 0, _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r03 }, + { 3, 1, _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r13 }, + { 3, 2, _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r23 }, + { -1, -1, -1 }, + }, + }, [_GUARD_NOS_FLOAT] = { .best = { 0, 1, 2, 3 }, .entries = { @@ -3960,6 +4020,24 @@ const uint16_t _PyUop_Uncached[MAX_UOP_REGS_ID+1] = { [_BINARY_OP_SUBTRACT_INT_r03] = _BINARY_OP_SUBTRACT_INT, [_BINARY_OP_SUBTRACT_INT_r13] = _BINARY_OP_SUBTRACT_INT, [_BINARY_OP_SUBTRACT_INT_r23] = _BINARY_OP_SUBTRACT_INT, + [_BINARY_OP_ADD_INT_INPLACE_r03] = _BINARY_OP_ADD_INT_INPLACE, + [_BINARY_OP_ADD_INT_INPLACE_r13] = _BINARY_OP_ADD_INT_INPLACE, + [_BINARY_OP_ADD_INT_INPLACE_r23] = _BINARY_OP_ADD_INT_INPLACE, + [_BINARY_OP_SUBTRACT_INT_INPLACE_r03] = _BINARY_OP_SUBTRACT_INT_INPLACE, + [_BINARY_OP_SUBTRACT_INT_INPLACE_r13] = _BINARY_OP_SUBTRACT_INT_INPLACE, + [_BINARY_OP_SUBTRACT_INT_INPLACE_r23] = _BINARY_OP_SUBTRACT_INT_INPLACE, + [_BINARY_OP_MULTIPLY_INT_INPLACE_r03] = _BINARY_OP_MULTIPLY_INT_INPLACE, + [_BINARY_OP_MULTIPLY_INT_INPLACE_r13] = _BINARY_OP_MULTIPLY_INT_INPLACE, + [_BINARY_OP_MULTIPLY_INT_INPLACE_r23] = _BINARY_OP_MULTIPLY_INT_INPLACE, + [_BINARY_OP_ADD_INT_INPLACE_RIGHT_r03] = _BINARY_OP_ADD_INT_INPLACE_RIGHT, + [_BINARY_OP_ADD_INT_INPLACE_RIGHT_r13] = _BINARY_OP_ADD_INT_INPLACE_RIGHT, + [_BINARY_OP_ADD_INT_INPLACE_RIGHT_r23] = _BINARY_OP_ADD_INT_INPLACE_RIGHT, + [_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r03] = _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT, + [_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r13] = _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT, + [_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r23] = _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT, + [_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r03] = _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT, + [_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r13] = _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT, + [_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r23] = _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT, [_GUARD_NOS_FLOAT_r02] = _GUARD_NOS_FLOAT, [_GUARD_NOS_FLOAT_r12] = _GUARD_NOS_FLOAT, [_GUARD_NOS_FLOAT_r22] = _GUARD_NOS_FLOAT, @@ -4633,6 +4711,14 @@ const char *const _PyOpcode_uop_name[MAX_UOP_REGS_ID+1] = { [_BINARY_OP_ADD_INT_r03] = "_BINARY_OP_ADD_INT_r03", [_BINARY_OP_ADD_INT_r13] = "_BINARY_OP_ADD_INT_r13", [_BINARY_OP_ADD_INT_r23] = "_BINARY_OP_ADD_INT_r23", + [_BINARY_OP_ADD_INT_INPLACE] = "_BINARY_OP_ADD_INT_INPLACE", + [_BINARY_OP_ADD_INT_INPLACE_r03] = "_BINARY_OP_ADD_INT_INPLACE_r03", + [_BINARY_OP_ADD_INT_INPLACE_r13] = "_BINARY_OP_ADD_INT_INPLACE_r13", + [_BINARY_OP_ADD_INT_INPLACE_r23] = "_BINARY_OP_ADD_INT_INPLACE_r23", + [_BINARY_OP_ADD_INT_INPLACE_RIGHT] = "_BINARY_OP_ADD_INT_INPLACE_RIGHT", + [_BINARY_OP_ADD_INT_INPLACE_RIGHT_r03] = "_BINARY_OP_ADD_INT_INPLACE_RIGHT_r03", + [_BINARY_OP_ADD_INT_INPLACE_RIGHT_r13] = "_BINARY_OP_ADD_INT_INPLACE_RIGHT_r13", + [_BINARY_OP_ADD_INT_INPLACE_RIGHT_r23] = "_BINARY_OP_ADD_INT_INPLACE_RIGHT_r23", [_BINARY_OP_ADD_UNICODE] = "_BINARY_OP_ADD_UNICODE", [_BINARY_OP_ADD_UNICODE_r03] = "_BINARY_OP_ADD_UNICODE_r03", [_BINARY_OP_ADD_UNICODE_r13] = "_BINARY_OP_ADD_UNICODE_r13", @@ -4657,6 +4743,14 @@ const char *const _PyOpcode_uop_name[MAX_UOP_REGS_ID+1] = { [_BINARY_OP_MULTIPLY_INT_r03] = "_BINARY_OP_MULTIPLY_INT_r03", [_BINARY_OP_MULTIPLY_INT_r13] = "_BINARY_OP_MULTIPLY_INT_r13", [_BINARY_OP_MULTIPLY_INT_r23] = "_BINARY_OP_MULTIPLY_INT_r23", + [_BINARY_OP_MULTIPLY_INT_INPLACE] = "_BINARY_OP_MULTIPLY_INT_INPLACE", + [_BINARY_OP_MULTIPLY_INT_INPLACE_r03] = "_BINARY_OP_MULTIPLY_INT_INPLACE_r03", + [_BINARY_OP_MULTIPLY_INT_INPLACE_r13] = "_BINARY_OP_MULTIPLY_INT_INPLACE_r13", + [_BINARY_OP_MULTIPLY_INT_INPLACE_r23] = "_BINARY_OP_MULTIPLY_INT_INPLACE_r23", + [_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT] = "_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT", + [_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r03] = "_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r03", + [_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r13] = "_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r13", + [_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r23] = "_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r23", [_BINARY_OP_SUBSCR_CHECK_FUNC] = "_BINARY_OP_SUBSCR_CHECK_FUNC", [_BINARY_OP_SUBSCR_CHECK_FUNC_r23] = "_BINARY_OP_SUBSCR_CHECK_FUNC_r23", [_BINARY_OP_SUBSCR_DICT] = "_BINARY_OP_SUBSCR_DICT", @@ -4696,6 +4790,14 @@ const char *const _PyOpcode_uop_name[MAX_UOP_REGS_ID+1] = { [_BINARY_OP_SUBTRACT_INT_r03] = "_BINARY_OP_SUBTRACT_INT_r03", [_BINARY_OP_SUBTRACT_INT_r13] = "_BINARY_OP_SUBTRACT_INT_r13", [_BINARY_OP_SUBTRACT_INT_r23] = "_BINARY_OP_SUBTRACT_INT_r23", + [_BINARY_OP_SUBTRACT_INT_INPLACE] = "_BINARY_OP_SUBTRACT_INT_INPLACE", + [_BINARY_OP_SUBTRACT_INT_INPLACE_r03] = "_BINARY_OP_SUBTRACT_INT_INPLACE_r03", + [_BINARY_OP_SUBTRACT_INT_INPLACE_r13] = "_BINARY_OP_SUBTRACT_INT_INPLACE_r13", + [_BINARY_OP_SUBTRACT_INT_INPLACE_r23] = "_BINARY_OP_SUBTRACT_INT_INPLACE_r23", + [_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT] = "_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT", + [_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r03] = "_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r03", + [_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r13] = "_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r13", + [_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r23] = "_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r23", [_BINARY_SLICE] = "_BINARY_SLICE", [_BINARY_SLICE_r31] = "_BINARY_SLICE_r31", [_BUILD_INTERPOLATION] = "_BUILD_INTERPOLATION", @@ -6006,6 +6108,18 @@ int _PyUop_num_popped(int opcode, int oparg) return 2; case _BINARY_OP_SUBTRACT_INT: return 2; + case _BINARY_OP_ADD_INT_INPLACE: + return 2; + case _BINARY_OP_SUBTRACT_INT_INPLACE: + return 2; + case _BINARY_OP_MULTIPLY_INT_INPLACE: + return 2; + case _BINARY_OP_ADD_INT_INPLACE_RIGHT: + return 2; + case _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT: + return 2; + case _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT: + return 2; case _GUARD_NOS_FLOAT: return 0; case _GUARD_TOS_FLOAT: diff --git a/Lib/test/test_capi/test_opt.py b/Lib/test/test_capi/test_opt.py index 2005dd9b0866bd..9663b393e545e2 100644 --- a/Lib/test/test_capi/test_opt.py +++ b/Lib/test/test_capi/test_opt.py @@ -3390,6 +3390,152 @@ def testfunc(args): uops = get_opnames(ex) self.assertNotIn("_UNARY_NEGATIVE_FLOAT_INPLACE", uops) + def test_int_add_inplace_unique_lhs(self): + # a * b produces a unique compact int; adding c reuses it in place + def testfunc(args): + a, b, c, n = args + total = 0 + for _ in range(n): + total += a * b + c + return total + + res, ex = self._run_with_optimizer(testfunc, (2000, 3, 4000, TIER2_THRESHOLD)) + self.assertEqual(res, TIER2_THRESHOLD * 10000) + self.assertIsNotNone(ex) + uops = get_opnames(ex) + self.assertIn("_BINARY_OP_ADD_INT_INPLACE", uops) + + def test_int_add_inplace_unique_rhs(self): + # a * b produces a unique compact int on the right side of + + def testfunc(args): + a, b, c, n = args + total = 0 + for _ in range(n): + total += c + a * b + return total + + res, ex = self._run_with_optimizer(testfunc, (2000, 3, 4000, TIER2_THRESHOLD)) + self.assertEqual(res, TIER2_THRESHOLD * 10000) + self.assertIsNotNone(ex) + uops = get_opnames(ex) + self.assertIn("_BINARY_OP_ADD_INT_INPLACE_RIGHT", uops) + + def test_int_add_no_inplace_non_unique(self): + # Both operands of a + b are locals — neither is unique, + # so the first add uses the regular op. But total += (a+b) + # has a unique RHS (result of a+b), so it uses _INPLACE_RIGHT. + def testfunc(args): + a, b, n = args + total = 0 + for _ in range(n): + total += a + b + return total + + res, ex = self._run_with_optimizer(testfunc, (2000, 3000, TIER2_THRESHOLD)) + self.assertEqual(res, TIER2_THRESHOLD * 5000) + self.assertIsNotNone(ex) + uops = get_opnames(ex) + # a + b: both are locals, no inplace + self.assertIn("_BINARY_OP_ADD_INT", uops) + # total += result: result is unique RHS + self.assertIn("_BINARY_OP_ADD_INT_INPLACE_RIGHT", uops) + # No LHS inplace variant for the first add + self.assertNotIn("_BINARY_OP_ADD_INT_INPLACE", uops) + + def test_int_add_inplace_small_int_result(self): + # When the result is a small int, fallback path is taken + # but the trace should still work correctly (no deopt) + def testfunc(args): + a, b, n = args + total = 0 + for _ in range(n): + total += a * b + 0 # a*b=6, +0=6, small int + return total + + res, ex = self._run_with_optimizer(testfunc, (2, 3, TIER2_THRESHOLD)) + self.assertEqual(res, TIER2_THRESHOLD * 6) + + def test_int_subtract_inplace_unique_lhs(self): + # a * b produces a unique compact int; subtracting c reuses it + def testfunc(args): + a, b, c, n = args + total = 0 + for _ in range(n): + total += a * b - c + return total + + res, ex = self._run_with_optimizer(testfunc, (2000, 3, 1000, TIER2_THRESHOLD)) + self.assertEqual(res, TIER2_THRESHOLD * 5000) + self.assertIsNotNone(ex) + uops = get_opnames(ex) + self.assertIn("_BINARY_OP_SUBTRACT_INT_INPLACE", uops) + + def test_int_subtract_inplace_unique_rhs(self): + # a * b produces a unique compact int on the right of - + def testfunc(args): + a, b, c, n = args + total = 0 + for _ in range(n): + total += c - a * b + return total + + res, ex = self._run_with_optimizer(testfunc, (2000, 3, 10000, TIER2_THRESHOLD)) + self.assertEqual(res, TIER2_THRESHOLD * 4000) + self.assertIsNotNone(ex) + uops = get_opnames(ex) + self.assertIn("_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT", uops) + + def test_int_multiply_inplace_unique_lhs(self): + # (a + b) produces a unique compact int; multiplying by c reuses it + def testfunc(args): + a, b, c, n = args + total = 0 + for _ in range(n): + total += (a + b) * c + return total + + res, ex = self._run_with_optimizer(testfunc, (2000, 3000, 4, TIER2_THRESHOLD)) + self.assertEqual(res, TIER2_THRESHOLD * 20000) + self.assertIsNotNone(ex) + uops = get_opnames(ex) + self.assertIn("_BINARY_OP_MULTIPLY_INT_INPLACE", uops) + + def test_int_multiply_inplace_unique_rhs(self): + # (a + b) produces a unique compact int on the right side of * + def testfunc(args): + a, b, c, n = args + total = 0 + for _ in range(n): + total += c * (a + b) + return total + + res, ex = self._run_with_optimizer(testfunc, (2000, 3000, 4, TIER2_THRESHOLD)) + self.assertEqual(res, TIER2_THRESHOLD * 20000) + self.assertIsNotNone(ex) + uops = get_opnames(ex) + self.assertIn("_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT", uops) + + def test_int_inplace_chain_propagation(self): + # a * b + c * d: both products are unique, the + reuses one; + # result of + is also unique for the subsequent += + def testfunc(args): + a, b, c, d, n = args + total = 0 + for _ in range(n): + total += a * b + c * d + return total + + res, ex = self._run_with_optimizer(testfunc, (2000, 3, 4000, 5, TIER2_THRESHOLD)) + self.assertEqual(res, TIER2_THRESHOLD * 26000) + self.assertIsNotNone(ex) + uops = get_opnames(ex) + inplace_add = ( + "_BINARY_OP_ADD_INT_INPLACE" in uops + or "_BINARY_OP_ADD_INT_INPLACE_RIGHT" in uops + ) + self.assertTrue(inplace_add, + "Expected an inplace add for unique intermediate results") + def test_load_attr_instance_value(self): def testfunc(n): class C(): diff --git a/Python/bytecodes.c b/Python/bytecodes.c index 18fea9ae4a21f4..f1c5e2637a1f18 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -708,6 +708,63 @@ dummy_func( macro(BINARY_OP_SUBTRACT_INT) = _GUARD_TOS_INT + _GUARD_NOS_INT + unused/5 + _BINARY_OP_SUBTRACT_INT + _POP_TOP_INT + _POP_TOP_INT; + // Inplace compact int ops: mutate the uniquely-referenced operand + // when the result is a non-small medium int. For small int results, + // return the cached singleton. Deopt on overflow. Tier 2 only. + tier2 op(_BINARY_OP_ADD_INT_INPLACE, (left, right -- res, l, r)) { + INT_INPLACE_OP(left, right, left, +); + EXIT_IF(_int_inplace_status == 2); + res = _int_inplace_status == 1 ? _int_inplace_smallref : left; + l = _int_inplace_status == 0 ? PyStackRef_NULL : left; + r = right; + INPUTS_DEAD(); + } + + tier2 op(_BINARY_OP_SUBTRACT_INT_INPLACE, (left, right -- res, l, r)) { + INT_INPLACE_OP(left, right, left, -); + EXIT_IF(_int_inplace_status == 2); + res = _int_inplace_status == 1 ? _int_inplace_smallref : left; + l = _int_inplace_status == 0 ? PyStackRef_NULL : left; + r = right; + INPUTS_DEAD(); + } + + tier2 op(_BINARY_OP_MULTIPLY_INT_INPLACE, (left, right -- res, l, r)) { + INT_INPLACE_OP(left, right, left, *); + EXIT_IF(_int_inplace_status == 2); + res = _int_inplace_status == 1 ? _int_inplace_smallref : left; + l = _int_inplace_status == 0 ? PyStackRef_NULL : left; + r = right; + INPUTS_DEAD(); + } + + tier2 op(_BINARY_OP_ADD_INT_INPLACE_RIGHT, (left, right -- res, l, r)) { + INT_INPLACE_OP(left, right, right, +); + EXIT_IF(_int_inplace_status == 2); + res = _int_inplace_status == 1 ? _int_inplace_smallref : right; + l = left; + r = _int_inplace_status == 0 ? PyStackRef_NULL : right; + INPUTS_DEAD(); + } + + tier2 op(_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT, (left, right -- res, l, r)) { + INT_INPLACE_OP(left, right, right, -); + EXIT_IF(_int_inplace_status == 2); + res = _int_inplace_status == 1 ? _int_inplace_smallref : right; + l = left; + r = _int_inplace_status == 0 ? PyStackRef_NULL : right; + INPUTS_DEAD(); + } + + tier2 op(_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT, (left, right -- res, l, r)) { + INT_INPLACE_OP(left, right, right, *); + EXIT_IF(_int_inplace_status == 2); + res = _int_inplace_status == 1 ? _int_inplace_smallref : right; + l = left; + r = _int_inplace_status == 0 ? PyStackRef_NULL : right; + INPUTS_DEAD(); + } + op(_GUARD_NOS_FLOAT, (left, unused -- left, unused)) { PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); EXIT_IF(!PyFloat_CheckExact(left_o)); diff --git a/Python/ceval_macros.h b/Python/ceval_macros.h index de629deddf39da..53528a9b8e83cf 100644 --- a/Python/ceval_macros.h +++ b/Python/ceval_macros.h @@ -562,3 +562,54 @@ gen_try_set_executing(PyGenObject *gen) ((PyFloatObject *)PyStackRef_AsPyObjectBorrow(TARGET)) \ ->ob_fval = _dres; \ } while (0) + +// Inplace compact int operation. Computes left OP right and attempts to +// store the result in TARGET (which must be uniquely referenced). +// After the macro: +// _int_inplace_ok = 1: TARGET was mutated in place, res = TARGET +// _int_inplace_ok = 0: result is a small int or overflow; caller +// must fall back to _PyCompactLong_* and EXIT_IF +// _int_inplace_status after macro: +// 0 = mutated TARGET in place (res = TARGET) +// 1 = result is a small int stored in _int_inplace_smallref +// 2 = overflow, caller must EXIT_IF +#define INT_INPLACE_OP(left, right, TARGET, OP) \ + int _int_inplace_status = 0; \ + _PyStackRef _int_inplace_smallref = PyStackRef_NULL; \ + do { \ + PyObject *_left_o = PyStackRef_AsPyObjectBorrow(left); \ + PyObject *_right_o = PyStackRef_AsPyObjectBorrow(right); \ + assert(PyLong_CheckExact(_left_o)); \ + assert(PyLong_CheckExact(_right_o)); \ + assert(_PyLong_BothAreCompact((PyLongObject *)_left_o, \ + (PyLongObject *)_right_o)); \ + assert(_PyObject_IsUniquelyReferenced( \ + PyStackRef_AsPyObjectBorrow(TARGET))); \ + STAT_INC(BINARY_OP, hit); \ + Py_ssize_t _left_val = _PyLong_CompactValue( \ + (PyLongObject *)_left_o); \ + Py_ssize_t _right_val = _PyLong_CompactValue( \ + (PyLongObject *)_right_o); \ + Py_ssize_t _result = _left_val OP _right_val; \ + if (_result >= -_PY_NSMALLNEGINTS \ + && _result < _PY_NSMALLPOSINTS) { \ + _int_inplace_smallref = PyStackRef_FromPyObjectBorrow( \ + _PyLong_GetSmallInt(_result)); \ + _int_inplace_status = 1; \ + } \ + else if ((twodigits)((stwodigits)_result) + PyLong_MASK \ + < (twodigits)PyLong_MASK + PyLong_BASE) \ + { \ + PyLongObject *_target = (PyLongObject *) \ + PyStackRef_AsPyObjectBorrow(TARGET); \ + Py_ssize_t _sign = _result < 0 ? -1 : 1; \ + digit _abs = (digit)(_result < 0 ? -_result : _result); \ + _target->long_value.lv_tag = \ + (Py_ssize_t)_sign << _PyLong_NON_SIZE_BITS; \ + _target->long_value.ob_digit[0] = _abs; \ + } \ + else { \ + _int_inplace_status = 2; \ + } \ + } while (0) + diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h index 46740b3954ef9e..b3ffbe3d43e0b7 100644 --- a/Python/executor_cases.c.h +++ b/Python/executor_cases.c.h @@ -4504,6 +4504,552 @@ break; } + case _BINARY_OP_ADD_INT_INPLACE_r03: { + CHECK_CURRENT_CACHED_VALUES(0); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef right; + _PyStackRef left; + _PyStackRef res; + _PyStackRef l; + _PyStackRef r; + right = stack_pointer[-1]; + left = stack_pointer[-2]; + INT_INPLACE_OP(left, right, left, +); + if (_int_inplace_status == 2) { + UOP_STAT_INC(uopcode, miss); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_JUMP_TARGET(); + } + res = _int_inplace_status == 1 ? _int_inplace_smallref : left; + l = _int_inplace_status == 0 ? PyStackRef_NULL : left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + stack_pointer += -2; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _BINARY_OP_ADD_INT_INPLACE_r13: { + CHECK_CURRENT_CACHED_VALUES(1); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef right; + _PyStackRef left; + _PyStackRef res; + _PyStackRef l; + _PyStackRef r; + _PyStackRef _stack_item_0 = _tos_cache0; + right = _stack_item_0; + left = stack_pointer[-1]; + INT_INPLACE_OP(left, right, left, +); + if (_int_inplace_status == 2) { + UOP_STAT_INC(uopcode, miss); + _tos_cache0 = right; + SET_CURRENT_CACHED_VALUES(1); + JUMP_TO_JUMP_TARGET(); + } + res = _int_inplace_status == 1 ? _int_inplace_smallref : left; + l = _int_inplace_status == 0 ? PyStackRef_NULL : left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + stack_pointer += -1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _BINARY_OP_ADD_INT_INPLACE_r23: { + CHECK_CURRENT_CACHED_VALUES(2); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef right; + _PyStackRef left; + _PyStackRef res; + _PyStackRef l; + _PyStackRef r; + _PyStackRef _stack_item_0 = _tos_cache0; + _PyStackRef _stack_item_1 = _tos_cache1; + right = _stack_item_1; + left = _stack_item_0; + INT_INPLACE_OP(left, right, left, +); + if (_int_inplace_status == 2) { + UOP_STAT_INC(uopcode, miss); + _tos_cache1 = right; + _tos_cache0 = left; + SET_CURRENT_CACHED_VALUES(2); + JUMP_TO_JUMP_TARGET(); + } + res = _int_inplace_status == 1 ? _int_inplace_smallref : left; + l = _int_inplace_status == 0 ? PyStackRef_NULL : left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _BINARY_OP_SUBTRACT_INT_INPLACE_r03: { + CHECK_CURRENT_CACHED_VALUES(0); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef right; + _PyStackRef left; + _PyStackRef res; + _PyStackRef l; + _PyStackRef r; + right = stack_pointer[-1]; + left = stack_pointer[-2]; + INT_INPLACE_OP(left, right, left, -); + if (_int_inplace_status == 2) { + UOP_STAT_INC(uopcode, miss); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_JUMP_TARGET(); + } + res = _int_inplace_status == 1 ? _int_inplace_smallref : left; + l = _int_inplace_status == 0 ? PyStackRef_NULL : left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + stack_pointer += -2; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _BINARY_OP_SUBTRACT_INT_INPLACE_r13: { + CHECK_CURRENT_CACHED_VALUES(1); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef right; + _PyStackRef left; + _PyStackRef res; + _PyStackRef l; + _PyStackRef r; + _PyStackRef _stack_item_0 = _tos_cache0; + right = _stack_item_0; + left = stack_pointer[-1]; + INT_INPLACE_OP(left, right, left, -); + if (_int_inplace_status == 2) { + UOP_STAT_INC(uopcode, miss); + _tos_cache0 = right; + SET_CURRENT_CACHED_VALUES(1); + JUMP_TO_JUMP_TARGET(); + } + res = _int_inplace_status == 1 ? _int_inplace_smallref : left; + l = _int_inplace_status == 0 ? PyStackRef_NULL : left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + stack_pointer += -1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _BINARY_OP_SUBTRACT_INT_INPLACE_r23: { + CHECK_CURRENT_CACHED_VALUES(2); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef right; + _PyStackRef left; + _PyStackRef res; + _PyStackRef l; + _PyStackRef r; + _PyStackRef _stack_item_0 = _tos_cache0; + _PyStackRef _stack_item_1 = _tos_cache1; + right = _stack_item_1; + left = _stack_item_0; + INT_INPLACE_OP(left, right, left, -); + if (_int_inplace_status == 2) { + UOP_STAT_INC(uopcode, miss); + _tos_cache1 = right; + _tos_cache0 = left; + SET_CURRENT_CACHED_VALUES(2); + JUMP_TO_JUMP_TARGET(); + } + res = _int_inplace_status == 1 ? _int_inplace_smallref : left; + l = _int_inplace_status == 0 ? PyStackRef_NULL : left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _BINARY_OP_MULTIPLY_INT_INPLACE_r03: { + CHECK_CURRENT_CACHED_VALUES(0); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef right; + _PyStackRef left; + _PyStackRef res; + _PyStackRef l; + _PyStackRef r; + right = stack_pointer[-1]; + left = stack_pointer[-2]; + INT_INPLACE_OP(left, right, left, *); + if (_int_inplace_status == 2) { + UOP_STAT_INC(uopcode, miss); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_JUMP_TARGET(); + } + res = _int_inplace_status == 1 ? _int_inplace_smallref : left; + l = _int_inplace_status == 0 ? PyStackRef_NULL : left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + stack_pointer += -2; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _BINARY_OP_MULTIPLY_INT_INPLACE_r13: { + CHECK_CURRENT_CACHED_VALUES(1); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef right; + _PyStackRef left; + _PyStackRef res; + _PyStackRef l; + _PyStackRef r; + _PyStackRef _stack_item_0 = _tos_cache0; + right = _stack_item_0; + left = stack_pointer[-1]; + INT_INPLACE_OP(left, right, left, *); + if (_int_inplace_status == 2) { + UOP_STAT_INC(uopcode, miss); + _tos_cache0 = right; + SET_CURRENT_CACHED_VALUES(1); + JUMP_TO_JUMP_TARGET(); + } + res = _int_inplace_status == 1 ? _int_inplace_smallref : left; + l = _int_inplace_status == 0 ? PyStackRef_NULL : left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + stack_pointer += -1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _BINARY_OP_MULTIPLY_INT_INPLACE_r23: { + CHECK_CURRENT_CACHED_VALUES(2); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef right; + _PyStackRef left; + _PyStackRef res; + _PyStackRef l; + _PyStackRef r; + _PyStackRef _stack_item_0 = _tos_cache0; + _PyStackRef _stack_item_1 = _tos_cache1; + right = _stack_item_1; + left = _stack_item_0; + INT_INPLACE_OP(left, right, left, *); + if (_int_inplace_status == 2) { + UOP_STAT_INC(uopcode, miss); + _tos_cache1 = right; + _tos_cache0 = left; + SET_CURRENT_CACHED_VALUES(2); + JUMP_TO_JUMP_TARGET(); + } + res = _int_inplace_status == 1 ? _int_inplace_smallref : left; + l = _int_inplace_status == 0 ? PyStackRef_NULL : left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _BINARY_OP_ADD_INT_INPLACE_RIGHT_r03: { + CHECK_CURRENT_CACHED_VALUES(0); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef right; + _PyStackRef left; + _PyStackRef res; + _PyStackRef l; + _PyStackRef r; + right = stack_pointer[-1]; + left = stack_pointer[-2]; + INT_INPLACE_OP(left, right, right, +); + if (_int_inplace_status == 2) { + UOP_STAT_INC(uopcode, miss); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_JUMP_TARGET(); + } + res = _int_inplace_status == 1 ? _int_inplace_smallref : right; + l = left; + r = _int_inplace_status == 0 ? PyStackRef_NULL : right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + stack_pointer += -2; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _BINARY_OP_ADD_INT_INPLACE_RIGHT_r13: { + CHECK_CURRENT_CACHED_VALUES(1); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef right; + _PyStackRef left; + _PyStackRef res; + _PyStackRef l; + _PyStackRef r; + _PyStackRef _stack_item_0 = _tos_cache0; + right = _stack_item_0; + left = stack_pointer[-1]; + INT_INPLACE_OP(left, right, right, +); + if (_int_inplace_status == 2) { + UOP_STAT_INC(uopcode, miss); + _tos_cache0 = right; + SET_CURRENT_CACHED_VALUES(1); + JUMP_TO_JUMP_TARGET(); + } + res = _int_inplace_status == 1 ? _int_inplace_smallref : right; + l = left; + r = _int_inplace_status == 0 ? PyStackRef_NULL : right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + stack_pointer += -1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _BINARY_OP_ADD_INT_INPLACE_RIGHT_r23: { + CHECK_CURRENT_CACHED_VALUES(2); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef right; + _PyStackRef left; + _PyStackRef res; + _PyStackRef l; + _PyStackRef r; + _PyStackRef _stack_item_0 = _tos_cache0; + _PyStackRef _stack_item_1 = _tos_cache1; + right = _stack_item_1; + left = _stack_item_0; + INT_INPLACE_OP(left, right, right, +); + if (_int_inplace_status == 2) { + UOP_STAT_INC(uopcode, miss); + _tos_cache1 = right; + _tos_cache0 = left; + SET_CURRENT_CACHED_VALUES(2); + JUMP_TO_JUMP_TARGET(); + } + res = _int_inplace_status == 1 ? _int_inplace_smallref : right; + l = left; + r = _int_inplace_status == 0 ? PyStackRef_NULL : right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r03: { + CHECK_CURRENT_CACHED_VALUES(0); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef right; + _PyStackRef left; + _PyStackRef res; + _PyStackRef l; + _PyStackRef r; + right = stack_pointer[-1]; + left = stack_pointer[-2]; + INT_INPLACE_OP(left, right, right, -); + if (_int_inplace_status == 2) { + UOP_STAT_INC(uopcode, miss); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_JUMP_TARGET(); + } + res = _int_inplace_status == 1 ? _int_inplace_smallref : right; + l = left; + r = _int_inplace_status == 0 ? PyStackRef_NULL : right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + stack_pointer += -2; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r13: { + CHECK_CURRENT_CACHED_VALUES(1); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef right; + _PyStackRef left; + _PyStackRef res; + _PyStackRef l; + _PyStackRef r; + _PyStackRef _stack_item_0 = _tos_cache0; + right = _stack_item_0; + left = stack_pointer[-1]; + INT_INPLACE_OP(left, right, right, -); + if (_int_inplace_status == 2) { + UOP_STAT_INC(uopcode, miss); + _tos_cache0 = right; + SET_CURRENT_CACHED_VALUES(1); + JUMP_TO_JUMP_TARGET(); + } + res = _int_inplace_status == 1 ? _int_inplace_smallref : right; + l = left; + r = _int_inplace_status == 0 ? PyStackRef_NULL : right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + stack_pointer += -1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r23: { + CHECK_CURRENT_CACHED_VALUES(2); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef right; + _PyStackRef left; + _PyStackRef res; + _PyStackRef l; + _PyStackRef r; + _PyStackRef _stack_item_0 = _tos_cache0; + _PyStackRef _stack_item_1 = _tos_cache1; + right = _stack_item_1; + left = _stack_item_0; + INT_INPLACE_OP(left, right, right, -); + if (_int_inplace_status == 2) { + UOP_STAT_INC(uopcode, miss); + _tos_cache1 = right; + _tos_cache0 = left; + SET_CURRENT_CACHED_VALUES(2); + JUMP_TO_JUMP_TARGET(); + } + res = _int_inplace_status == 1 ? _int_inplace_smallref : right; + l = left; + r = _int_inplace_status == 0 ? PyStackRef_NULL : right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r03: { + CHECK_CURRENT_CACHED_VALUES(0); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef right; + _PyStackRef left; + _PyStackRef res; + _PyStackRef l; + _PyStackRef r; + right = stack_pointer[-1]; + left = stack_pointer[-2]; + INT_INPLACE_OP(left, right, right, *); + if (_int_inplace_status == 2) { + UOP_STAT_INC(uopcode, miss); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_JUMP_TARGET(); + } + res = _int_inplace_status == 1 ? _int_inplace_smallref : right; + l = left; + r = _int_inplace_status == 0 ? PyStackRef_NULL : right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + stack_pointer += -2; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r13: { + CHECK_CURRENT_CACHED_VALUES(1); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef right; + _PyStackRef left; + _PyStackRef res; + _PyStackRef l; + _PyStackRef r; + _PyStackRef _stack_item_0 = _tos_cache0; + right = _stack_item_0; + left = stack_pointer[-1]; + INT_INPLACE_OP(left, right, right, *); + if (_int_inplace_status == 2) { + UOP_STAT_INC(uopcode, miss); + _tos_cache0 = right; + SET_CURRENT_CACHED_VALUES(1); + JUMP_TO_JUMP_TARGET(); + } + res = _int_inplace_status == 1 ? _int_inplace_smallref : right; + l = left; + r = _int_inplace_status == 0 ? PyStackRef_NULL : right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + stack_pointer += -1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r23: { + CHECK_CURRENT_CACHED_VALUES(2); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef right; + _PyStackRef left; + _PyStackRef res; + _PyStackRef l; + _PyStackRef r; + _PyStackRef _stack_item_0 = _tos_cache0; + _PyStackRef _stack_item_1 = _tos_cache1; + right = _stack_item_1; + left = _stack_item_0; + INT_INPLACE_OP(left, right, right, *); + if (_int_inplace_status == 2) { + UOP_STAT_INC(uopcode, miss); + _tos_cache1 = right; + _tos_cache0 = left; + SET_CURRENT_CACHED_VALUES(2); + JUMP_TO_JUMP_TARGET(); + } + res = _int_inplace_status == 1 ? _int_inplace_smallref : right; + l = left; + r = _int_inplace_status == 0 ? PyStackRef_NULL : right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + case _GUARD_NOS_FLOAT_r02: { CHECK_CURRENT_CACHED_VALUES(0); assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); diff --git a/Python/optimizer_bytecodes.c b/Python/optimizer_bytecodes.c index 792f83cdbd2d3a..d443914e76ef0b 100644 --- a/Python/optimizer_bytecodes.c +++ b/Python/optimizer_bytecodes.c @@ -309,23 +309,59 @@ dummy_func(void) { } op(_BINARY_OP_ADD_INT, (left, right -- res, l, r)) { - res = sym_new_compact_int(ctx); - l = left; - r = right; + if (PyJitRef_IsUnique(left)) { + ADD_OP(_BINARY_OP_ADD_INT_INPLACE, 0, 0); + l = sym_new_null(ctx); + r = right; + } + else if (PyJitRef_IsUnique(right)) { + ADD_OP(_BINARY_OP_ADD_INT_INPLACE_RIGHT, 0, 0); + l = left; + r = sym_new_null(ctx); + } + else { + l = left; + r = right; + } + res = PyJitRef_MakeUnique(sym_new_compact_int(ctx)); REPLACE_OPCODE_IF_EVALUATES_PURE(left, right, res); } op(_BINARY_OP_SUBTRACT_INT, (left, right -- res, l, r)) { - res = sym_new_compact_int(ctx); - l = left; - r = right; + if (PyJitRef_IsUnique(left)) { + ADD_OP(_BINARY_OP_SUBTRACT_INT_INPLACE, 0, 0); + l = sym_new_null(ctx); + r = right; + } + else if (PyJitRef_IsUnique(right)) { + ADD_OP(_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT, 0, 0); + l = left; + r = sym_new_null(ctx); + } + else { + l = left; + r = right; + } + res = PyJitRef_MakeUnique(sym_new_compact_int(ctx)); REPLACE_OPCODE_IF_EVALUATES_PURE(left, right, res); } op(_BINARY_OP_MULTIPLY_INT, (left, right -- res, l, r)) { - res = sym_new_compact_int(ctx); - l = left; - r = right; + if (PyJitRef_IsUnique(left)) { + ADD_OP(_BINARY_OP_MULTIPLY_INT_INPLACE, 0, 0); + l = sym_new_null(ctx); + r = right; + } + else if (PyJitRef_IsUnique(right)) { + ADD_OP(_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT, 0, 0); + l = left; + r = sym_new_null(ctx); + } + else { + l = left; + r = right; + } + res = PyJitRef_MakeUnique(sym_new_compact_int(ctx)); REPLACE_OPCODE_IF_EVALUATES_PURE(left, right, res); } diff --git a/Python/optimizer_cases.c.h b/Python/optimizer_cases.c.h index 7539133fb92096..97859d5ba05e22 100644 --- a/Python/optimizer_cases.c.h +++ b/Python/optimizer_cases.c.h @@ -596,9 +596,21 @@ JitOptRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; - res = sym_new_compact_int(ctx); - l = left; - r = right; + if (PyJitRef_IsUnique(left)) { + ADD_OP(_BINARY_OP_MULTIPLY_INT_INPLACE, 0, 0); + l = sym_new_null(ctx); + r = right; + } + else if (PyJitRef_IsUnique(right)) { + ADD_OP(_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT, 0, 0); + l = left; + r = sym_new_null(ctx); + } + else { + l = left; + r = right; + } + res = PyJitRef_MakeUnique(sym_new_compact_int(ctx)); if ( sym_is_safe_const(ctx, left) && sym_is_safe_const(ctx, right) @@ -660,9 +672,21 @@ JitOptRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; - res = sym_new_compact_int(ctx); - l = left; - r = right; + if (PyJitRef_IsUnique(left)) { + ADD_OP(_BINARY_OP_ADD_INT_INPLACE, 0, 0); + l = sym_new_null(ctx); + r = right; + } + else if (PyJitRef_IsUnique(right)) { + ADD_OP(_BINARY_OP_ADD_INT_INPLACE_RIGHT, 0, 0); + l = left; + r = sym_new_null(ctx); + } + else { + l = left; + r = right; + } + res = PyJitRef_MakeUnique(sym_new_compact_int(ctx)); if ( sym_is_safe_const(ctx, left) && sym_is_safe_const(ctx, right) @@ -724,9 +748,21 @@ JitOptRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; - res = sym_new_compact_int(ctx); - l = left; - r = right; + if (PyJitRef_IsUnique(left)) { + ADD_OP(_BINARY_OP_SUBTRACT_INT_INPLACE, 0, 0); + l = sym_new_null(ctx); + r = right; + } + else if (PyJitRef_IsUnique(right)) { + ADD_OP(_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT, 0, 0); + l = left; + r = sym_new_null(ctx); + } + else { + l = left; + r = right; + } + res = PyJitRef_MakeUnique(sym_new_compact_int(ctx)); if ( sym_is_safe_const(ctx, left) && sym_is_safe_const(ctx, right) @@ -780,6 +816,102 @@ break; } + case _BINARY_OP_ADD_INT_INPLACE: { + JitOptRef res; + JitOptRef l; + JitOptRef r; + res = sym_new_not_null(ctx); + l = sym_new_not_null(ctx); + r = sym_new_not_null(ctx); + CHECK_STACK_BOUNDS(1); + stack_pointer[-2] = res; + stack_pointer[-1] = l; + stack_pointer[0] = r; + stack_pointer += 1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + break; + } + + case _BINARY_OP_SUBTRACT_INT_INPLACE: { + JitOptRef res; + JitOptRef l; + JitOptRef r; + res = sym_new_not_null(ctx); + l = sym_new_not_null(ctx); + r = sym_new_not_null(ctx); + CHECK_STACK_BOUNDS(1); + stack_pointer[-2] = res; + stack_pointer[-1] = l; + stack_pointer[0] = r; + stack_pointer += 1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + break; + } + + case _BINARY_OP_MULTIPLY_INT_INPLACE: { + JitOptRef res; + JitOptRef l; + JitOptRef r; + res = sym_new_not_null(ctx); + l = sym_new_not_null(ctx); + r = sym_new_not_null(ctx); + CHECK_STACK_BOUNDS(1); + stack_pointer[-2] = res; + stack_pointer[-1] = l; + stack_pointer[0] = r; + stack_pointer += 1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + break; + } + + case _BINARY_OP_ADD_INT_INPLACE_RIGHT: { + JitOptRef res; + JitOptRef l; + JitOptRef r; + res = sym_new_not_null(ctx); + l = sym_new_not_null(ctx); + r = sym_new_not_null(ctx); + CHECK_STACK_BOUNDS(1); + stack_pointer[-2] = res; + stack_pointer[-1] = l; + stack_pointer[0] = r; + stack_pointer += 1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + break; + } + + case _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT: { + JitOptRef res; + JitOptRef l; + JitOptRef r; + res = sym_new_not_null(ctx); + l = sym_new_not_null(ctx); + r = sym_new_not_null(ctx); + CHECK_STACK_BOUNDS(1); + stack_pointer[-2] = res; + stack_pointer[-1] = l; + stack_pointer[0] = r; + stack_pointer += 1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + break; + } + + case _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT: { + JitOptRef res; + JitOptRef l; + JitOptRef r; + res = sym_new_not_null(ctx); + l = sym_new_not_null(ctx); + r = sym_new_not_null(ctx); + CHECK_STACK_BOUNDS(1); + stack_pointer[-2] = res; + stack_pointer[-1] = l; + stack_pointer[0] = r; + stack_pointer += 1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + break; + } + case _GUARD_NOS_FLOAT: { JitOptRef left; left = stack_pointer[-2]; From 964bb34be583a9bd3cf7b97e2d4c97329ee04cc4 Mon Sep 17 00:00:00 2001 From: Pieter Eendebak Date: Mon, 30 Mar 2026 17:26:38 +0200 Subject: [PATCH 02/11] rework --- Python/bytecodes.c | 84 ++++++-- Python/ceval_macros.h | 47 ++--- Python/executor_cases.c.h | 378 +++++++++++++++++++++++------------ Python/optimizer_bytecodes.c | 32 +-- Python/optimizer_cases.c.h | 30 +-- 5 files changed, 351 insertions(+), 220 deletions(-) diff --git a/Python/bytecodes.c b/Python/bytecodes.c index f1c5e2637a1f18..ad315a24afa273 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -708,60 +708,102 @@ dummy_func( macro(BINARY_OP_SUBTRACT_INT) = _GUARD_TOS_INT + _GUARD_NOS_INT + unused/5 + _BINARY_OP_SUBTRACT_INT + _POP_TOP_INT + _POP_TOP_INT; - // Inplace compact int ops: mutate the uniquely-referenced operand - // when the result is a non-small medium int. For small int results, - // return the cached singleton. Deopt on overflow. Tier 2 only. + // Inplace compact int ops: try to mutate the uniquely-referenced + // operand. If TARGET is immortal (small int at runtime) or the + // result doesn't fit, fall back to _PyCompactLong_*. Tier 2 only. tier2 op(_BINARY_OP_ADD_INT_INPLACE, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, left, +); - EXIT_IF(_int_inplace_status == 2); - res = _int_inplace_status == 1 ? _int_inplace_smallref : left; - l = _int_inplace_status == 0 ? PyStackRef_NULL : left; + if (_int_inplace_ok) { + res = left; + l = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + EXIT_IF(PyStackRef_IsNull(res)); + l = left; + } r = right; INPUTS_DEAD(); } tier2 op(_BINARY_OP_SUBTRACT_INT_INPLACE, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, left, -); - EXIT_IF(_int_inplace_status == 2); - res = _int_inplace_status == 1 ? _int_inplace_smallref : left; - l = _int_inplace_status == 0 ? PyStackRef_NULL : left; + if (_int_inplace_ok) { + res = left; + l = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + EXIT_IF(PyStackRef_IsNull(res)); + l = left; + } r = right; INPUTS_DEAD(); } tier2 op(_BINARY_OP_MULTIPLY_INT_INPLACE, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, left, *); - EXIT_IF(_int_inplace_status == 2); - res = _int_inplace_status == 1 ? _int_inplace_smallref : left; - l = _int_inplace_status == 0 ? PyStackRef_NULL : left; + if (_int_inplace_ok) { + res = left; + l = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + EXIT_IF(PyStackRef_IsNull(res)); + l = left; + } r = right; INPUTS_DEAD(); } tier2 op(_BINARY_OP_ADD_INT_INPLACE_RIGHT, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, right, +); - EXIT_IF(_int_inplace_status == 2); - res = _int_inplace_status == 1 ? _int_inplace_smallref : right; + if (_int_inplace_ok) { + res = right; + r = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + EXIT_IF(PyStackRef_IsNull(res)); + r = right; + } l = left; - r = _int_inplace_status == 0 ? PyStackRef_NULL : right; INPUTS_DEAD(); } tier2 op(_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, right, -); - EXIT_IF(_int_inplace_status == 2); - res = _int_inplace_status == 1 ? _int_inplace_smallref : right; + if (_int_inplace_ok) { + res = right; + r = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + EXIT_IF(PyStackRef_IsNull(res)); + r = right; + } l = left; - r = _int_inplace_status == 0 ? PyStackRef_NULL : right; INPUTS_DEAD(); } tier2 op(_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, right, *); - EXIT_IF(_int_inplace_status == 2); - res = _int_inplace_status == 1 ? _int_inplace_smallref : right; + if (_int_inplace_ok) { + res = right; + r = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + EXIT_IF(PyStackRef_IsNull(res)); + r = right; + } l = left; - r = _int_inplace_status == 0 ? PyStackRef_NULL : right; INPUTS_DEAD(); } diff --git a/Python/ceval_macros.h b/Python/ceval_macros.h index 53528a9b8e83cf..db9e394de1c887 100644 --- a/Python/ceval_macros.h +++ b/Python/ceval_macros.h @@ -564,52 +564,49 @@ gen_try_set_executing(PyGenObject *gen) } while (0) // Inplace compact int operation. Computes left OP right and attempts to -// store the result in TARGET (which must be uniquely referenced). -// After the macro: -// _int_inplace_ok = 1: TARGET was mutated in place, res = TARGET -// _int_inplace_ok = 0: result is a small int or overflow; caller -// must fall back to _PyCompactLong_* and EXIT_IF -// _int_inplace_status after macro: -// 0 = mutated TARGET in place (res = TARGET) -// 1 = result is a small int stored in _int_inplace_smallref -// 2 = overflow, caller must EXIT_IF +// Inplace compact int operation. TARGET is expected to be uniquely +// referenced at the optimizer level, but at runtime it may be a +// cached small int singleton. We check _Py_IsImmortal on TARGET +// to decide whether inplace mutation is safe. +// +// _int_inplace_ok after macro: +// 1 = mutated TARGET in place (caller should set res = TARGET) +// 0 = TARGET was immortal (small int); caller should use the +// standard _PyCompactLong_* function instead #define INT_INPLACE_OP(left, right, TARGET, OP) \ - int _int_inplace_status = 0; \ - _PyStackRef _int_inplace_smallref = PyStackRef_NULL; \ + int _int_inplace_ok = 0; \ do { \ + PyObject *_target_o = PyStackRef_AsPyObjectBorrow(TARGET); \ + if (_Py_IsImmortal(_target_o)) { \ + break; \ + } \ PyObject *_left_o = PyStackRef_AsPyObjectBorrow(left); \ PyObject *_right_o = PyStackRef_AsPyObjectBorrow(right); \ assert(PyLong_CheckExact(_left_o)); \ assert(PyLong_CheckExact(_right_o)); \ assert(_PyLong_BothAreCompact((PyLongObject *)_left_o, \ (PyLongObject *)_right_o)); \ - assert(_PyObject_IsUniquelyReferenced( \ - PyStackRef_AsPyObjectBorrow(TARGET))); \ + assert(_PyObject_IsUniquelyReferenced(_target_o)); \ STAT_INC(BINARY_OP, hit); \ Py_ssize_t _left_val = _PyLong_CompactValue( \ (PyLongObject *)_left_o); \ Py_ssize_t _right_val = _PyLong_CompactValue( \ (PyLongObject *)_right_o); \ Py_ssize_t _result = _left_val OP _right_val; \ - if (_result >= -_PY_NSMALLNEGINTS \ - && _result < _PY_NSMALLPOSINTS) { \ - _int_inplace_smallref = PyStackRef_FromPyObjectBorrow( \ - _PyLong_GetSmallInt(_result)); \ - _int_inplace_status = 1; \ - } \ - else if ((twodigits)((stwodigits)_result) + PyLong_MASK \ + /* Result must fit in a single digit and not be a small int */ \ + if (((twodigits)((stwodigits)_result) + PyLong_MASK \ < (twodigits)PyLong_MASK + PyLong_BASE) \ + && (_result < -_PY_NSMALLNEGINTS \ + || _result >= _PY_NSMALLPOSINTS)) \ { \ - PyLongObject *_target = (PyLongObject *) \ - PyStackRef_AsPyObjectBorrow(TARGET); \ + PyLongObject *_target = (PyLongObject *)_target_o; \ Py_ssize_t _sign = _result < 0 ? -1 : 1; \ digit _abs = (digit)(_result < 0 ? -_result : _result); \ _target->long_value.lv_tag = \ (Py_ssize_t)_sign << _PyLong_NON_SIZE_BITS; \ _target->long_value.ob_digit[0] = _abs; \ + _int_inplace_ok = 1; \ } \ - else { \ - _int_inplace_status = 2; \ - } \ + /* else: result is small int or overflow — fall back */ \ } while (0) diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h index b3ffbe3d43e0b7..6c4d02d283663c 100644 --- a/Python/executor_cases.c.h +++ b/Python/executor_cases.c.h @@ -4515,13 +4515,20 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; INT_INPLACE_OP(left, right, left, +); - if (_int_inplace_status == 2) { - UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_JUMP_TARGET(); + if (_int_inplace_ok) { + res = left; + l = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + if (PyStackRef_IsNull(res)) { + UOP_STAT_INC(uopcode, miss); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_JUMP_TARGET(); + } + l = left; } - res = _int_inplace_status == 1 ? _int_inplace_smallref : left; - l = _int_inplace_status == 0 ? PyStackRef_NULL : left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4545,14 +4552,21 @@ right = _stack_item_0; left = stack_pointer[-1]; INT_INPLACE_OP(left, right, left, +); - if (_int_inplace_status == 2) { - UOP_STAT_INC(uopcode, miss); - _tos_cache0 = right; - SET_CURRENT_CACHED_VALUES(1); - JUMP_TO_JUMP_TARGET(); + if (_int_inplace_ok) { + res = left; + l = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + if (PyStackRef_IsNull(res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache0 = right; + SET_CURRENT_CACHED_VALUES(1); + JUMP_TO_JUMP_TARGET(); + } + l = left; } - res = _int_inplace_status == 1 ? _int_inplace_smallref : left; - l = _int_inplace_status == 0 ? PyStackRef_NULL : left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4577,15 +4591,22 @@ right = _stack_item_1; left = _stack_item_0; INT_INPLACE_OP(left, right, left, +); - if (_int_inplace_status == 2) { - UOP_STAT_INC(uopcode, miss); - _tos_cache1 = right; - _tos_cache0 = left; - SET_CURRENT_CACHED_VALUES(2); - JUMP_TO_JUMP_TARGET(); + if (_int_inplace_ok) { + res = left; + l = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + if (PyStackRef_IsNull(res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache1 = right; + _tos_cache0 = left; + SET_CURRENT_CACHED_VALUES(2); + JUMP_TO_JUMP_TARGET(); + } + l = left; } - res = _int_inplace_status == 1 ? _int_inplace_smallref : left; - l = _int_inplace_status == 0 ? PyStackRef_NULL : left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4606,13 +4627,20 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; INT_INPLACE_OP(left, right, left, -); - if (_int_inplace_status == 2) { - UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_JUMP_TARGET(); + if (_int_inplace_ok) { + res = left; + l = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + if (PyStackRef_IsNull(res)) { + UOP_STAT_INC(uopcode, miss); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_JUMP_TARGET(); + } + l = left; } - res = _int_inplace_status == 1 ? _int_inplace_smallref : left; - l = _int_inplace_status == 0 ? PyStackRef_NULL : left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4636,14 +4664,21 @@ right = _stack_item_0; left = stack_pointer[-1]; INT_INPLACE_OP(left, right, left, -); - if (_int_inplace_status == 2) { - UOP_STAT_INC(uopcode, miss); - _tos_cache0 = right; - SET_CURRENT_CACHED_VALUES(1); - JUMP_TO_JUMP_TARGET(); + if (_int_inplace_ok) { + res = left; + l = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + if (PyStackRef_IsNull(res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache0 = right; + SET_CURRENT_CACHED_VALUES(1); + JUMP_TO_JUMP_TARGET(); + } + l = left; } - res = _int_inplace_status == 1 ? _int_inplace_smallref : left; - l = _int_inplace_status == 0 ? PyStackRef_NULL : left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4668,15 +4703,22 @@ right = _stack_item_1; left = _stack_item_0; INT_INPLACE_OP(left, right, left, -); - if (_int_inplace_status == 2) { - UOP_STAT_INC(uopcode, miss); - _tos_cache1 = right; - _tos_cache0 = left; - SET_CURRENT_CACHED_VALUES(2); - JUMP_TO_JUMP_TARGET(); + if (_int_inplace_ok) { + res = left; + l = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + if (PyStackRef_IsNull(res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache1 = right; + _tos_cache0 = left; + SET_CURRENT_CACHED_VALUES(2); + JUMP_TO_JUMP_TARGET(); + } + l = left; } - res = _int_inplace_status == 1 ? _int_inplace_smallref : left; - l = _int_inplace_status == 0 ? PyStackRef_NULL : left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4697,13 +4739,20 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; INT_INPLACE_OP(left, right, left, *); - if (_int_inplace_status == 2) { - UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_JUMP_TARGET(); + if (_int_inplace_ok) { + res = left; + l = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + if (PyStackRef_IsNull(res)) { + UOP_STAT_INC(uopcode, miss); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_JUMP_TARGET(); + } + l = left; } - res = _int_inplace_status == 1 ? _int_inplace_smallref : left; - l = _int_inplace_status == 0 ? PyStackRef_NULL : left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4727,14 +4776,21 @@ right = _stack_item_0; left = stack_pointer[-1]; INT_INPLACE_OP(left, right, left, *); - if (_int_inplace_status == 2) { - UOP_STAT_INC(uopcode, miss); - _tos_cache0 = right; - SET_CURRENT_CACHED_VALUES(1); - JUMP_TO_JUMP_TARGET(); + if (_int_inplace_ok) { + res = left; + l = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + if (PyStackRef_IsNull(res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache0 = right; + SET_CURRENT_CACHED_VALUES(1); + JUMP_TO_JUMP_TARGET(); + } + l = left; } - res = _int_inplace_status == 1 ? _int_inplace_smallref : left; - l = _int_inplace_status == 0 ? PyStackRef_NULL : left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4759,15 +4815,22 @@ right = _stack_item_1; left = _stack_item_0; INT_INPLACE_OP(left, right, left, *); - if (_int_inplace_status == 2) { - UOP_STAT_INC(uopcode, miss); - _tos_cache1 = right; - _tos_cache0 = left; - SET_CURRENT_CACHED_VALUES(2); - JUMP_TO_JUMP_TARGET(); + if (_int_inplace_ok) { + res = left; + l = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + if (PyStackRef_IsNull(res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache1 = right; + _tos_cache0 = left; + SET_CURRENT_CACHED_VALUES(2); + JUMP_TO_JUMP_TARGET(); + } + l = left; } - res = _int_inplace_status == 1 ? _int_inplace_smallref : left; - l = _int_inplace_status == 0 ? PyStackRef_NULL : left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4788,14 +4851,21 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; INT_INPLACE_OP(left, right, right, +); - if (_int_inplace_status == 2) { - UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_JUMP_TARGET(); + if (_int_inplace_ok) { + res = right; + r = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + if (PyStackRef_IsNull(res)) { + UOP_STAT_INC(uopcode, miss); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_JUMP_TARGET(); + } + r = right; } - res = _int_inplace_status == 1 ? _int_inplace_smallref : right; l = left; - r = _int_inplace_status == 0 ? PyStackRef_NULL : right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4818,15 +4888,22 @@ right = _stack_item_0; left = stack_pointer[-1]; INT_INPLACE_OP(left, right, right, +); - if (_int_inplace_status == 2) { - UOP_STAT_INC(uopcode, miss); - _tos_cache0 = right; - SET_CURRENT_CACHED_VALUES(1); - JUMP_TO_JUMP_TARGET(); + if (_int_inplace_ok) { + res = right; + r = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + if (PyStackRef_IsNull(res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache0 = right; + SET_CURRENT_CACHED_VALUES(1); + JUMP_TO_JUMP_TARGET(); + } + r = right; } - res = _int_inplace_status == 1 ? _int_inplace_smallref : right; l = left; - r = _int_inplace_status == 0 ? PyStackRef_NULL : right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4850,16 +4927,23 @@ right = _stack_item_1; left = _stack_item_0; INT_INPLACE_OP(left, right, right, +); - if (_int_inplace_status == 2) { - UOP_STAT_INC(uopcode, miss); - _tos_cache1 = right; - _tos_cache0 = left; - SET_CURRENT_CACHED_VALUES(2); - JUMP_TO_JUMP_TARGET(); + if (_int_inplace_ok) { + res = right; + r = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + if (PyStackRef_IsNull(res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache1 = right; + _tos_cache0 = left; + SET_CURRENT_CACHED_VALUES(2); + JUMP_TO_JUMP_TARGET(); + } + r = right; } - res = _int_inplace_status == 1 ? _int_inplace_smallref : right; l = left; - r = _int_inplace_status == 0 ? PyStackRef_NULL : right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4879,14 +4963,21 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; INT_INPLACE_OP(left, right, right, -); - if (_int_inplace_status == 2) { - UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_JUMP_TARGET(); + if (_int_inplace_ok) { + res = right; + r = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + if (PyStackRef_IsNull(res)) { + UOP_STAT_INC(uopcode, miss); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_JUMP_TARGET(); + } + r = right; } - res = _int_inplace_status == 1 ? _int_inplace_smallref : right; l = left; - r = _int_inplace_status == 0 ? PyStackRef_NULL : right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4909,15 +5000,22 @@ right = _stack_item_0; left = stack_pointer[-1]; INT_INPLACE_OP(left, right, right, -); - if (_int_inplace_status == 2) { - UOP_STAT_INC(uopcode, miss); - _tos_cache0 = right; - SET_CURRENT_CACHED_VALUES(1); - JUMP_TO_JUMP_TARGET(); + if (_int_inplace_ok) { + res = right; + r = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + if (PyStackRef_IsNull(res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache0 = right; + SET_CURRENT_CACHED_VALUES(1); + JUMP_TO_JUMP_TARGET(); + } + r = right; } - res = _int_inplace_status == 1 ? _int_inplace_smallref : right; l = left; - r = _int_inplace_status == 0 ? PyStackRef_NULL : right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4941,16 +5039,23 @@ right = _stack_item_1; left = _stack_item_0; INT_INPLACE_OP(left, right, right, -); - if (_int_inplace_status == 2) { - UOP_STAT_INC(uopcode, miss); - _tos_cache1 = right; - _tos_cache0 = left; - SET_CURRENT_CACHED_VALUES(2); - JUMP_TO_JUMP_TARGET(); + if (_int_inplace_ok) { + res = right; + r = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + if (PyStackRef_IsNull(res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache1 = right; + _tos_cache0 = left; + SET_CURRENT_CACHED_VALUES(2); + JUMP_TO_JUMP_TARGET(); + } + r = right; } - res = _int_inplace_status == 1 ? _int_inplace_smallref : right; l = left; - r = _int_inplace_status == 0 ? PyStackRef_NULL : right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4970,14 +5075,21 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; INT_INPLACE_OP(left, right, right, *); - if (_int_inplace_status == 2) { - UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_JUMP_TARGET(); + if (_int_inplace_ok) { + res = right; + r = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + if (PyStackRef_IsNull(res)) { + UOP_STAT_INC(uopcode, miss); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_JUMP_TARGET(); + } + r = right; } - res = _int_inplace_status == 1 ? _int_inplace_smallref : right; l = left; - r = _int_inplace_status == 0 ? PyStackRef_NULL : right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -5000,15 +5112,22 @@ right = _stack_item_0; left = stack_pointer[-1]; INT_INPLACE_OP(left, right, right, *); - if (_int_inplace_status == 2) { - UOP_STAT_INC(uopcode, miss); - _tos_cache0 = right; - SET_CURRENT_CACHED_VALUES(1); - JUMP_TO_JUMP_TARGET(); + if (_int_inplace_ok) { + res = right; + r = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + if (PyStackRef_IsNull(res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache0 = right; + SET_CURRENT_CACHED_VALUES(1); + JUMP_TO_JUMP_TARGET(); + } + r = right; } - res = _int_inplace_status == 1 ? _int_inplace_smallref : right; l = left; - r = _int_inplace_status == 0 ? PyStackRef_NULL : right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -5032,16 +5151,23 @@ right = _stack_item_1; left = _stack_item_0; INT_INPLACE_OP(left, right, right, *); - if (_int_inplace_status == 2) { - UOP_STAT_INC(uopcode, miss); - _tos_cache1 = right; - _tos_cache0 = left; - SET_CURRENT_CACHED_VALUES(2); - JUMP_TO_JUMP_TARGET(); + if (_int_inplace_ok) { + res = right; + r = PyStackRef_NULL; + } + else { + res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); + if (PyStackRef_IsNull(res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache1 = right; + _tos_cache0 = left; + SET_CURRENT_CACHED_VALUES(2); + JUMP_TO_JUMP_TARGET(); + } + r = right; } - res = _int_inplace_status == 1 ? _int_inplace_smallref : right; l = left; - r = _int_inplace_status == 0 ? PyStackRef_NULL : right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; diff --git a/Python/optimizer_bytecodes.c b/Python/optimizer_bytecodes.c index d443914e76ef0b..4eea38a22426db 100644 --- a/Python/optimizer_bytecodes.c +++ b/Python/optimizer_bytecodes.c @@ -311,57 +311,41 @@ dummy_func(void) { op(_BINARY_OP_ADD_INT, (left, right -- res, l, r)) { if (PyJitRef_IsUnique(left)) { ADD_OP(_BINARY_OP_ADD_INT_INPLACE, 0, 0); - l = sym_new_null(ctx); - r = right; } else if (PyJitRef_IsUnique(right)) { ADD_OP(_BINARY_OP_ADD_INT_INPLACE_RIGHT, 0, 0); - l = left; - r = sym_new_null(ctx); - } - else { - l = left; - r = right; } + // Result may be a unique compact int or a cached small int + // at runtime. Mark as unique; inplace ops verify at runtime. res = PyJitRef_MakeUnique(sym_new_compact_int(ctx)); + l = left; + r = right; REPLACE_OPCODE_IF_EVALUATES_PURE(left, right, res); } op(_BINARY_OP_SUBTRACT_INT, (left, right -- res, l, r)) { if (PyJitRef_IsUnique(left)) { ADD_OP(_BINARY_OP_SUBTRACT_INT_INPLACE, 0, 0); - l = sym_new_null(ctx); - r = right; } else if (PyJitRef_IsUnique(right)) { ADD_OP(_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT, 0, 0); - l = left; - r = sym_new_null(ctx); - } - else { - l = left; - r = right; } res = PyJitRef_MakeUnique(sym_new_compact_int(ctx)); + l = left; + r = right; REPLACE_OPCODE_IF_EVALUATES_PURE(left, right, res); } op(_BINARY_OP_MULTIPLY_INT, (left, right -- res, l, r)) { if (PyJitRef_IsUnique(left)) { ADD_OP(_BINARY_OP_MULTIPLY_INT_INPLACE, 0, 0); - l = sym_new_null(ctx); - r = right; } else if (PyJitRef_IsUnique(right)) { ADD_OP(_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT, 0, 0); - l = left; - r = sym_new_null(ctx); - } - else { - l = left; - r = right; } res = PyJitRef_MakeUnique(sym_new_compact_int(ctx)); + l = left; + r = right; REPLACE_OPCODE_IF_EVALUATES_PURE(left, right, res); } diff --git a/Python/optimizer_cases.c.h b/Python/optimizer_cases.c.h index 97859d5ba05e22..8fc3e759ff3f17 100644 --- a/Python/optimizer_cases.c.h +++ b/Python/optimizer_cases.c.h @@ -598,19 +598,13 @@ left = stack_pointer[-2]; if (PyJitRef_IsUnique(left)) { ADD_OP(_BINARY_OP_MULTIPLY_INT_INPLACE, 0, 0); - l = sym_new_null(ctx); - r = right; } else if (PyJitRef_IsUnique(right)) { ADD_OP(_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT, 0, 0); - l = left; - r = sym_new_null(ctx); - } - else { - l = left; - r = right; } res = PyJitRef_MakeUnique(sym_new_compact_int(ctx)); + l = left; + r = right; if ( sym_is_safe_const(ctx, left) && sym_is_safe_const(ctx, right) @@ -674,19 +668,13 @@ left = stack_pointer[-2]; if (PyJitRef_IsUnique(left)) { ADD_OP(_BINARY_OP_ADD_INT_INPLACE, 0, 0); - l = sym_new_null(ctx); - r = right; } else if (PyJitRef_IsUnique(right)) { ADD_OP(_BINARY_OP_ADD_INT_INPLACE_RIGHT, 0, 0); - l = left; - r = sym_new_null(ctx); - } - else { - l = left; - r = right; } res = PyJitRef_MakeUnique(sym_new_compact_int(ctx)); + l = left; + r = right; if ( sym_is_safe_const(ctx, left) && sym_is_safe_const(ctx, right) @@ -750,19 +738,13 @@ left = stack_pointer[-2]; if (PyJitRef_IsUnique(left)) { ADD_OP(_BINARY_OP_SUBTRACT_INT_INPLACE, 0, 0); - l = sym_new_null(ctx); - r = right; } else if (PyJitRef_IsUnique(right)) { ADD_OP(_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT, 0, 0); - l = left; - r = sym_new_null(ctx); - } - else { - l = left; - r = right; } res = PyJitRef_MakeUnique(sym_new_compact_int(ctx)); + l = left; + r = right; if ( sym_is_safe_const(ctx, left) && sym_is_safe_const(ctx, right) From f33b4528957ce5de55822c99a10b0cc56ddb27c4 Mon Sep 17 00:00:00 2001 From: Pieter Eendebak Date: Mon, 30 Mar 2026 18:43:37 +0200 Subject: [PATCH 03/11] refactor --- Include/internal/pycore_uop_ids.h | 2530 +++++++++++++++-------------- Lib/test/test_capi/test_opt.py | 10 +- Python/ceval_macros.h | 28 +- 3 files changed, 1282 insertions(+), 1286 deletions(-) diff --git a/Include/internal/pycore_uop_ids.h b/Include/internal/pycore_uop_ids.h index 517ad4757a5eed..922fef91fa2044 100644 --- a/Include/internal/pycore_uop_ids.h +++ b/Include/internal/pycore_uop_ids.h @@ -29,19 +29,20 @@ extern "C" { #define _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT 317 #define _BINARY_OP_SUBSCR_CHECK_FUNC 318 #define _BINARY_OP_SUBSCR_DICT 319 -#define _BINARY_OP_SUBSCR_INIT_CALL 320 -#define _BINARY_OP_SUBSCR_LIST_INT 321 -#define _BINARY_OP_SUBSCR_LIST_SLICE 322 -#define _BINARY_OP_SUBSCR_STR_INT 323 -#define _BINARY_OP_SUBSCR_TUPLE_INT 324 -#define _BINARY_OP_SUBSCR_USTR_INT 325 -#define _BINARY_OP_SUBTRACT_FLOAT 326 -#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE 327 -#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT 328 -#define _BINARY_OP_SUBTRACT_INT 329 -#define _BINARY_OP_SUBTRACT_INT_INPLACE 330 -#define _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT 331 -#define _BINARY_SLICE 332 +#define _BINARY_OP_SUBSCR_DICT_KNOWN_HASH 320 +#define _BINARY_OP_SUBSCR_INIT_CALL 321 +#define _BINARY_OP_SUBSCR_LIST_INT 322 +#define _BINARY_OP_SUBSCR_LIST_SLICE 323 +#define _BINARY_OP_SUBSCR_STR_INT 324 +#define _BINARY_OP_SUBSCR_TUPLE_INT 325 +#define _BINARY_OP_SUBSCR_USTR_INT 326 +#define _BINARY_OP_SUBTRACT_FLOAT 327 +#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE 328 +#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT 329 +#define _BINARY_OP_SUBTRACT_INT 330 +#define _BINARY_OP_SUBTRACT_INT_INPLACE 331 +#define _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT 332 +#define _BINARY_SLICE 333 #define _BUILD_INTERPOLATION BUILD_INTERPOLATION #define _BUILD_LIST BUILD_LIST #define _BUILD_MAP BUILD_MAP @@ -50,181 +51,181 @@ extern "C" { #define _BUILD_STRING BUILD_STRING #define _BUILD_TEMPLATE BUILD_TEMPLATE #define _BUILD_TUPLE BUILD_TUPLE -#define _CALL_BUILTIN_CLASS 333 -#define _CALL_BUILTIN_FAST 334 -#define _CALL_BUILTIN_FAST_WITH_KEYWORDS 335 -#define _CALL_BUILTIN_O 336 -#define _CALL_FUNCTION_EX_NON_PY_GENERAL 337 -#define _CALL_INTRINSIC_1 338 -#define _CALL_INTRINSIC_2 339 -#define _CALL_ISINSTANCE 340 -#define _CALL_KW_NON_PY 341 -#define _CALL_LEN 342 -#define _CALL_LIST_APPEND 343 -#define _CALL_METHOD_DESCRIPTOR_FAST 344 -#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 345 -#define _CALL_METHOD_DESCRIPTOR_NOARGS 346 -#define _CALL_METHOD_DESCRIPTOR_O 347 -#define _CALL_NON_PY_GENERAL 348 -#define _CALL_STR_1 349 -#define _CALL_TUPLE_1 350 -#define _CALL_TYPE_1 351 -#define _CHECK_AND_ALLOCATE_OBJECT 352 -#define _CHECK_ATTR_CLASS 353 -#define _CHECK_ATTR_METHOD_LAZY_DICT 354 -#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS 355 +#define _CALL_BUILTIN_CLASS 334 +#define _CALL_BUILTIN_FAST 335 +#define _CALL_BUILTIN_FAST_WITH_KEYWORDS 336 +#define _CALL_BUILTIN_O 337 +#define _CALL_FUNCTION_EX_NON_PY_GENERAL 338 +#define _CALL_INTRINSIC_1 339 +#define _CALL_INTRINSIC_2 340 +#define _CALL_ISINSTANCE 341 +#define _CALL_KW_NON_PY 342 +#define _CALL_LEN 343 +#define _CALL_LIST_APPEND 344 +#define _CALL_METHOD_DESCRIPTOR_FAST 345 +#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 346 +#define _CALL_METHOD_DESCRIPTOR_NOARGS 347 +#define _CALL_METHOD_DESCRIPTOR_O 348 +#define _CALL_NON_PY_GENERAL 349 +#define _CALL_STR_1 350 +#define _CALL_TUPLE_1 351 +#define _CALL_TYPE_1 352 +#define _CHECK_AND_ALLOCATE_OBJECT 353 +#define _CHECK_ATTR_CLASS 354 +#define _CHECK_ATTR_METHOD_LAZY_DICT 355 +#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS 356 #define _CHECK_EG_MATCH CHECK_EG_MATCH #define _CHECK_EXC_MATCH CHECK_EXC_MATCH -#define _CHECK_FUNCTION_EXACT_ARGS 356 -#define _CHECK_FUNCTION_VERSION 357 -#define _CHECK_FUNCTION_VERSION_INLINE 358 -#define _CHECK_FUNCTION_VERSION_KW 359 -#define _CHECK_IS_NOT_PY_CALLABLE 360 -#define _CHECK_IS_NOT_PY_CALLABLE_EX 361 -#define _CHECK_IS_NOT_PY_CALLABLE_KW 362 -#define _CHECK_IS_PY_CALLABLE_EX 363 -#define _CHECK_MANAGED_OBJECT_HAS_VALUES 364 -#define _CHECK_METHOD_VERSION 365 -#define _CHECK_METHOD_VERSION_KW 366 -#define _CHECK_PEP_523 367 -#define _CHECK_PERIODIC 368 -#define _CHECK_PERIODIC_AT_END 369 -#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM 370 -#define _CHECK_RECURSION_REMAINING 371 -#define _CHECK_STACK_SPACE 372 -#define _CHECK_STACK_SPACE_OPERAND 373 -#define _CHECK_VALIDITY 374 -#define _COLD_DYNAMIC_EXIT 375 -#define _COLD_EXIT 376 -#define _COMPARE_OP 377 -#define _COMPARE_OP_FLOAT 378 -#define _COMPARE_OP_INT 379 -#define _COMPARE_OP_STR 380 -#define _CONTAINS_OP 381 -#define _CONTAINS_OP_DICT 382 -#define _CONTAINS_OP_SET 383 +#define _CHECK_FUNCTION_EXACT_ARGS 357 +#define _CHECK_FUNCTION_VERSION 358 +#define _CHECK_FUNCTION_VERSION_INLINE 359 +#define _CHECK_FUNCTION_VERSION_KW 360 +#define _CHECK_IS_NOT_PY_CALLABLE 361 +#define _CHECK_IS_NOT_PY_CALLABLE_EX 362 +#define _CHECK_IS_NOT_PY_CALLABLE_KW 363 +#define _CHECK_IS_PY_CALLABLE_EX 364 +#define _CHECK_MANAGED_OBJECT_HAS_VALUES 365 +#define _CHECK_METHOD_VERSION 366 +#define _CHECK_METHOD_VERSION_KW 367 +#define _CHECK_PEP_523 368 +#define _CHECK_PERIODIC 369 +#define _CHECK_PERIODIC_AT_END 370 +#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM 371 +#define _CHECK_RECURSION_REMAINING 372 +#define _CHECK_STACK_SPACE 373 +#define _CHECK_STACK_SPACE_OPERAND 374 +#define _CHECK_VALIDITY 375 +#define _COLD_DYNAMIC_EXIT 376 +#define _COLD_EXIT 377 +#define _COMPARE_OP 378 +#define _COMPARE_OP_FLOAT 379 +#define _COMPARE_OP_INT 380 +#define _COMPARE_OP_STR 381 +#define _CONTAINS_OP 382 +#define _CONTAINS_OP_DICT 383 +#define _CONTAINS_OP_SET 384 #define _CONVERT_VALUE CONVERT_VALUE -#define _COPY 384 -#define _COPY_1 385 -#define _COPY_2 386 -#define _COPY_3 387 +#define _COPY 385 +#define _COPY_1 386 +#define _COPY_2 387 +#define _COPY_3 388 #define _COPY_FREE_VARS COPY_FREE_VARS -#define _CREATE_INIT_FRAME 388 +#define _CREATE_INIT_FRAME 389 #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 389 -#define _DICT_MERGE 390 -#define _DICT_UPDATE 391 -#define _DO_CALL 392 -#define _DO_CALL_FUNCTION_EX 393 -#define _DO_CALL_KW 394 -#define _DYNAMIC_EXIT 395 +#define _DEOPT 390 +#define _DICT_MERGE 391 +#define _DICT_UPDATE 392 +#define _DO_CALL 393 +#define _DO_CALL_FUNCTION_EX 394 +#define _DO_CALL_KW 395 +#define _DYNAMIC_EXIT 396 #define _END_FOR END_FOR #define _END_SEND END_SEND -#define _ERROR_POP_N 396 +#define _ERROR_POP_N 397 #define _EXIT_INIT_CHECK EXIT_INIT_CHECK -#define _EXPAND_METHOD 397 -#define _EXPAND_METHOD_KW 398 -#define _FATAL_ERROR 399 +#define _EXPAND_METHOD 398 +#define _EXPAND_METHOD_KW 399 +#define _FATAL_ERROR 400 #define _FORMAT_SIMPLE FORMAT_SIMPLE #define _FORMAT_WITH_SPEC FORMAT_WITH_SPEC -#define _FOR_ITER 400 -#define _FOR_ITER_GEN_FRAME 401 -#define _FOR_ITER_TIER_TWO 402 +#define _FOR_ITER 401 +#define _FOR_ITER_GEN_FRAME 402 +#define _FOR_ITER_TIER_TWO 403 #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 _GUARD_BINARY_OP_EXTEND 403 -#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS 404 -#define _GUARD_BIT_IS_SET_POP 405 -#define _GUARD_BIT_IS_SET_POP_4 406 -#define _GUARD_BIT_IS_SET_POP_5 407 -#define _GUARD_BIT_IS_SET_POP_6 408 -#define _GUARD_BIT_IS_SET_POP_7 409 -#define _GUARD_BIT_IS_UNSET_POP 410 -#define _GUARD_BIT_IS_UNSET_POP_4 411 -#define _GUARD_BIT_IS_UNSET_POP_5 412 -#define _GUARD_BIT_IS_UNSET_POP_6 413 -#define _GUARD_BIT_IS_UNSET_POP_7 414 -#define _GUARD_CALLABLE_BUILTIN_FAST 415 -#define _GUARD_CALLABLE_BUILTIN_FAST_WITH_KEYWORDS 416 -#define _GUARD_CALLABLE_BUILTIN_O 417 -#define _GUARD_CALLABLE_ISINSTANCE 418 -#define _GUARD_CALLABLE_LEN 419 -#define _GUARD_CALLABLE_LIST_APPEND 420 -#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST 421 -#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 422 -#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_NOARGS 423 -#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_O 424 -#define _GUARD_CALLABLE_STR_1 425 -#define _GUARD_CALLABLE_TUPLE_1 426 -#define _GUARD_CALLABLE_TYPE_1 427 -#define _GUARD_CODE_VERSION_RETURN_GENERATOR 428 -#define _GUARD_CODE_VERSION_RETURN_VALUE 429 -#define _GUARD_CODE_VERSION_YIELD_VALUE 430 -#define _GUARD_CODE_VERSION__PUSH_FRAME 431 -#define _GUARD_DORV_NO_DICT 432 -#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 433 -#define _GUARD_GLOBALS_VERSION 434 -#define _GUARD_IP_RETURN_GENERATOR 435 -#define _GUARD_IP_RETURN_VALUE 436 -#define _GUARD_IP_YIELD_VALUE 437 -#define _GUARD_IP__PUSH_FRAME 438 -#define _GUARD_IS_FALSE_POP 439 -#define _GUARD_IS_NONE_POP 440 -#define _GUARD_IS_NOT_NONE_POP 441 -#define _GUARD_IS_TRUE_POP 442 -#define _GUARD_KEYS_VERSION 443 -#define _GUARD_NOS_ANY_DICT 444 -#define _GUARD_NOS_COMPACT_ASCII 445 -#define _GUARD_NOS_DICT 446 -#define _GUARD_NOS_FLOAT 447 -#define _GUARD_NOS_INT 448 -#define _GUARD_NOS_LIST 449 -#define _GUARD_NOS_NOT_NULL 450 -#define _GUARD_NOS_NULL 451 -#define _GUARD_NOS_OVERFLOWED 452 -#define _GUARD_NOS_TUPLE 453 -#define _GUARD_NOS_UNICODE 454 -#define _GUARD_NOT_EXHAUSTED_LIST 455 -#define _GUARD_NOT_EXHAUSTED_RANGE 456 -#define _GUARD_NOT_EXHAUSTED_TUPLE 457 -#define _GUARD_THIRD_NULL 458 -#define _GUARD_TOS_ANY_DICT 459 -#define _GUARD_TOS_ANY_SET 460 -#define _GUARD_TOS_DICT 461 -#define _GUARD_TOS_FLOAT 462 -#define _GUARD_TOS_FROZENDICT 463 -#define _GUARD_TOS_FROZENSET 464 -#define _GUARD_TOS_INT 465 -#define _GUARD_TOS_LIST 466 -#define _GUARD_TOS_OVERFLOWED 467 -#define _GUARD_TOS_SET 468 -#define _GUARD_TOS_SLICE 469 -#define _GUARD_TOS_TUPLE 470 -#define _GUARD_TOS_UNICODE 471 -#define _GUARD_TYPE_VERSION 472 -#define _GUARD_TYPE_VERSION_LOCKED 473 -#define _HANDLE_PENDING_AND_DEOPT 474 +#define _GUARD_BINARY_OP_EXTEND 404 +#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS 405 +#define _GUARD_BIT_IS_SET_POP 406 +#define _GUARD_BIT_IS_SET_POP_4 407 +#define _GUARD_BIT_IS_SET_POP_5 408 +#define _GUARD_BIT_IS_SET_POP_6 409 +#define _GUARD_BIT_IS_SET_POP_7 410 +#define _GUARD_BIT_IS_UNSET_POP 411 +#define _GUARD_BIT_IS_UNSET_POP_4 412 +#define _GUARD_BIT_IS_UNSET_POP_5 413 +#define _GUARD_BIT_IS_UNSET_POP_6 414 +#define _GUARD_BIT_IS_UNSET_POP_7 415 +#define _GUARD_CALLABLE_BUILTIN_FAST 416 +#define _GUARD_CALLABLE_BUILTIN_FAST_WITH_KEYWORDS 417 +#define _GUARD_CALLABLE_BUILTIN_O 418 +#define _GUARD_CALLABLE_ISINSTANCE 419 +#define _GUARD_CALLABLE_LEN 420 +#define _GUARD_CALLABLE_LIST_APPEND 421 +#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST 422 +#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 423 +#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_NOARGS 424 +#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_O 425 +#define _GUARD_CALLABLE_STR_1 426 +#define _GUARD_CALLABLE_TUPLE_1 427 +#define _GUARD_CALLABLE_TYPE_1 428 +#define _GUARD_CODE_VERSION_RETURN_GENERATOR 429 +#define _GUARD_CODE_VERSION_RETURN_VALUE 430 +#define _GUARD_CODE_VERSION_YIELD_VALUE 431 +#define _GUARD_CODE_VERSION__PUSH_FRAME 432 +#define _GUARD_DORV_NO_DICT 433 +#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 434 +#define _GUARD_GLOBALS_VERSION 435 +#define _GUARD_IP_RETURN_GENERATOR 436 +#define _GUARD_IP_RETURN_VALUE 437 +#define _GUARD_IP_YIELD_VALUE 438 +#define _GUARD_IP__PUSH_FRAME 439 +#define _GUARD_IS_FALSE_POP 440 +#define _GUARD_IS_NONE_POP 441 +#define _GUARD_IS_NOT_NONE_POP 442 +#define _GUARD_IS_TRUE_POP 443 +#define _GUARD_KEYS_VERSION 444 +#define _GUARD_NOS_ANY_DICT 445 +#define _GUARD_NOS_COMPACT_ASCII 446 +#define _GUARD_NOS_DICT 447 +#define _GUARD_NOS_FLOAT 448 +#define _GUARD_NOS_INT 449 +#define _GUARD_NOS_LIST 450 +#define _GUARD_NOS_NOT_NULL 451 +#define _GUARD_NOS_NULL 452 +#define _GUARD_NOS_OVERFLOWED 453 +#define _GUARD_NOS_TUPLE 454 +#define _GUARD_NOS_UNICODE 455 +#define _GUARD_NOT_EXHAUSTED_LIST 456 +#define _GUARD_NOT_EXHAUSTED_RANGE 457 +#define _GUARD_NOT_EXHAUSTED_TUPLE 458 +#define _GUARD_THIRD_NULL 459 +#define _GUARD_TOS_ANY_DICT 460 +#define _GUARD_TOS_ANY_SET 461 +#define _GUARD_TOS_DICT 462 +#define _GUARD_TOS_FLOAT 463 +#define _GUARD_TOS_FROZENDICT 464 +#define _GUARD_TOS_FROZENSET 465 +#define _GUARD_TOS_INT 466 +#define _GUARD_TOS_LIST 467 +#define _GUARD_TOS_OVERFLOWED 468 +#define _GUARD_TOS_SET 469 +#define _GUARD_TOS_SLICE 470 +#define _GUARD_TOS_TUPLE 471 +#define _GUARD_TOS_UNICODE 472 +#define _GUARD_TYPE_VERSION 473 +#define _GUARD_TYPE_VERSION_LOCKED 474 +#define _HANDLE_PENDING_AND_DEOPT 475 #define _IMPORT_FROM IMPORT_FROM #define _IMPORT_NAME IMPORT_NAME -#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS 475 -#define _INIT_CALL_PY_EXACT_ARGS 476 -#define _INIT_CALL_PY_EXACT_ARGS_0 477 -#define _INIT_CALL_PY_EXACT_ARGS_1 478 -#define _INIT_CALL_PY_EXACT_ARGS_2 479 -#define _INIT_CALL_PY_EXACT_ARGS_3 480 -#define _INIT_CALL_PY_EXACT_ARGS_4 481 -#define _INSERT_1_LOAD_CONST_INLINE 482 -#define _INSERT_1_LOAD_CONST_INLINE_BORROW 483 -#define _INSERT_2_LOAD_CONST_INLINE_BORROW 484 -#define _INSERT_NULL 485 +#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS 476 +#define _INIT_CALL_PY_EXACT_ARGS 477 +#define _INIT_CALL_PY_EXACT_ARGS_0 478 +#define _INIT_CALL_PY_EXACT_ARGS_1 479 +#define _INIT_CALL_PY_EXACT_ARGS_2 480 +#define _INIT_CALL_PY_EXACT_ARGS_3 481 +#define _INIT_CALL_PY_EXACT_ARGS_4 482 +#define _INSERT_1_LOAD_CONST_INLINE 483 +#define _INSERT_1_LOAD_CONST_INLINE_BORROW 484 +#define _INSERT_2_LOAD_CONST_INLINE_BORROW 485 +#define _INSERT_NULL 486 #define _INSTRUMENTED_FOR_ITER INSTRUMENTED_FOR_ITER #define _INSTRUMENTED_INSTRUCTION INSTRUMENTED_INSTRUCTION #define _INSTRUMENTED_JUMP_FORWARD INSTRUMENTED_JUMP_FORWARD @@ -234,1143 +235,1146 @@ 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 486 -#define _IS_OP 487 -#define _ITER_CHECK_LIST 488 -#define _ITER_CHECK_RANGE 489 -#define _ITER_CHECK_TUPLE 490 -#define _ITER_JUMP_LIST 491 -#define _ITER_JUMP_RANGE 492 -#define _ITER_JUMP_TUPLE 493 -#define _ITER_NEXT_LIST 494 -#define _ITER_NEXT_LIST_TIER_TWO 495 -#define _ITER_NEXT_RANGE 496 -#define _ITER_NEXT_TUPLE 497 +#define _IS_NONE 487 +#define _IS_OP 488 +#define _ITER_CHECK_LIST 489 +#define _ITER_CHECK_RANGE 490 +#define _ITER_CHECK_TUPLE 491 +#define _ITER_JUMP_LIST 492 +#define _ITER_JUMP_RANGE 493 +#define _ITER_JUMP_TUPLE 494 +#define _ITER_NEXT_LIST 495 +#define _ITER_NEXT_LIST_TIER_TWO 496 +#define _ITER_NEXT_RANGE 497 +#define _ITER_NEXT_TUPLE 498 #define _JUMP_BACKWARD_NO_INTERRUPT JUMP_BACKWARD_NO_INTERRUPT -#define _JUMP_TO_TOP 498 +#define _JUMP_TO_TOP 499 #define _LIST_APPEND LIST_APPEND -#define _LIST_EXTEND 499 -#define _LOAD_ATTR 500 -#define _LOAD_ATTR_CLASS 501 +#define _LIST_EXTEND 500 +#define _LOAD_ATTR 501 +#define _LOAD_ATTR_CLASS 502 #define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN -#define _LOAD_ATTR_INSTANCE_VALUE 502 -#define _LOAD_ATTR_METHOD_LAZY_DICT 503 -#define _LOAD_ATTR_METHOD_NO_DICT 504 -#define _LOAD_ATTR_METHOD_WITH_VALUES 505 -#define _LOAD_ATTR_MODULE 506 -#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 507 -#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 508 -#define _LOAD_ATTR_PROPERTY_FRAME 509 -#define _LOAD_ATTR_SLOT 510 -#define _LOAD_ATTR_WITH_HINT 511 +#define _LOAD_ATTR_INSTANCE_VALUE 503 +#define _LOAD_ATTR_METHOD_LAZY_DICT 504 +#define _LOAD_ATTR_METHOD_NO_DICT 505 +#define _LOAD_ATTR_METHOD_WITH_VALUES 506 +#define _LOAD_ATTR_MODULE 507 +#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 508 +#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 509 +#define _LOAD_ATTR_PROPERTY_FRAME 510 +#define _LOAD_ATTR_SLOT 511 +#define _LOAD_ATTR_WITH_HINT 512 #define _LOAD_BUILD_CLASS LOAD_BUILD_CLASS -#define _LOAD_BYTECODE 512 +#define _LOAD_BYTECODE 513 #define _LOAD_COMMON_CONSTANT LOAD_COMMON_CONSTANT #define _LOAD_CONST LOAD_CONST -#define _LOAD_CONST_INLINE 513 -#define _LOAD_CONST_INLINE_BORROW 514 -#define _LOAD_CONST_UNDER_INLINE 515 -#define _LOAD_CONST_UNDER_INLINE_BORROW 516 +#define _LOAD_CONST_INLINE 514 +#define _LOAD_CONST_INLINE_BORROW 515 +#define _LOAD_CONST_UNDER_INLINE 516 +#define _LOAD_CONST_UNDER_INLINE_BORROW 517 #define _LOAD_DEREF LOAD_DEREF -#define _LOAD_FAST 517 -#define _LOAD_FAST_0 518 -#define _LOAD_FAST_1 519 -#define _LOAD_FAST_2 520 -#define _LOAD_FAST_3 521 -#define _LOAD_FAST_4 522 -#define _LOAD_FAST_5 523 -#define _LOAD_FAST_6 524 -#define _LOAD_FAST_7 525 +#define _LOAD_FAST 518 +#define _LOAD_FAST_0 519 +#define _LOAD_FAST_1 520 +#define _LOAD_FAST_2 521 +#define _LOAD_FAST_3 522 +#define _LOAD_FAST_4 523 +#define _LOAD_FAST_5 524 +#define _LOAD_FAST_6 525 +#define _LOAD_FAST_7 526 #define _LOAD_FAST_AND_CLEAR LOAD_FAST_AND_CLEAR -#define _LOAD_FAST_BORROW 526 -#define _LOAD_FAST_BORROW_0 527 -#define _LOAD_FAST_BORROW_1 528 -#define _LOAD_FAST_BORROW_2 529 -#define _LOAD_FAST_BORROW_3 530 -#define _LOAD_FAST_BORROW_4 531 -#define _LOAD_FAST_BORROW_5 532 -#define _LOAD_FAST_BORROW_6 533 -#define _LOAD_FAST_BORROW_7 534 +#define _LOAD_FAST_BORROW 527 +#define _LOAD_FAST_BORROW_0 528 +#define _LOAD_FAST_BORROW_1 529 +#define _LOAD_FAST_BORROW_2 530 +#define _LOAD_FAST_BORROW_3 531 +#define _LOAD_FAST_BORROW_4 532 +#define _LOAD_FAST_BORROW_5 533 +#define _LOAD_FAST_BORROW_6 534 +#define _LOAD_FAST_BORROW_7 535 #define _LOAD_FAST_CHECK LOAD_FAST_CHECK #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 535 -#define _LOAD_GLOBAL_BUILTINS 536 -#define _LOAD_GLOBAL_MODULE 537 +#define _LOAD_GLOBAL 536 +#define _LOAD_GLOBAL_BUILTINS 537 +#define _LOAD_GLOBAL_MODULE 538 #define _LOAD_LOCALS LOAD_LOCALS #define _LOAD_NAME LOAD_NAME -#define _LOAD_SMALL_INT 538 -#define _LOAD_SMALL_INT_0 539 -#define _LOAD_SMALL_INT_1 540 -#define _LOAD_SMALL_INT_2 541 -#define _LOAD_SMALL_INT_3 542 -#define _LOAD_SPECIAL 543 +#define _LOAD_SMALL_INT 539 +#define _LOAD_SMALL_INT_0 540 +#define _LOAD_SMALL_INT_1 541 +#define _LOAD_SMALL_INT_2 542 +#define _LOAD_SMALL_INT_3 543 +#define _LOAD_SPECIAL 544 #define _LOAD_SUPER_ATTR_ATTR LOAD_SUPER_ATTR_ATTR #define _LOAD_SUPER_ATTR_METHOD LOAD_SUPER_ATTR_METHOD -#define _LOCK_OBJECT 544 -#define _MAKE_CALLARGS_A_TUPLE 545 +#define _LOCK_OBJECT 545 +#define _MAKE_CALLARGS_A_TUPLE 546 #define _MAKE_CELL MAKE_CELL #define _MAKE_FUNCTION MAKE_FUNCTION -#define _MAKE_HEAP_SAFE 546 -#define _MAKE_WARM 547 +#define _MAKE_HEAP_SAFE 547 +#define _MAKE_WARM 548 #define _MAP_ADD MAP_ADD -#define _MATCH_CLASS 548 +#define _MATCH_CLASS 549 #define _MATCH_KEYS MATCH_KEYS #define _MATCH_MAPPING MATCH_MAPPING #define _MATCH_SEQUENCE MATCH_SEQUENCE -#define _MAYBE_EXPAND_METHOD 549 -#define _MAYBE_EXPAND_METHOD_KW 550 -#define _MONITOR_CALL 551 -#define _MONITOR_CALL_KW 552 -#define _MONITOR_JUMP_BACKWARD 553 -#define _MONITOR_RESUME 554 +#define _MAYBE_EXPAND_METHOD 550 +#define _MAYBE_EXPAND_METHOD_KW 551 +#define _MONITOR_CALL 552 +#define _MONITOR_CALL_KW 553 +#define _MONITOR_JUMP_BACKWARD 554 +#define _MONITOR_RESUME 555 #define _NOP NOP -#define _POP_CALL 555 -#define _POP_CALL_LOAD_CONST_INLINE_BORROW 556 -#define _POP_CALL_ONE 557 -#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW 558 -#define _POP_CALL_TWO 559 -#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW 560 +#define _POP_CALL 556 +#define _POP_CALL_LOAD_CONST_INLINE_BORROW 557 +#define _POP_CALL_ONE 558 +#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW 559 +#define _POP_CALL_TWO 560 +#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW 561 #define _POP_EXCEPT POP_EXCEPT #define _POP_ITER POP_ITER -#define _POP_JUMP_IF_FALSE 561 -#define _POP_JUMP_IF_TRUE 562 +#define _POP_JUMP_IF_FALSE 562 +#define _POP_JUMP_IF_TRUE 563 #define _POP_TOP POP_TOP -#define _POP_TOP_FLOAT 563 -#define _POP_TOP_INT 564 -#define _POP_TOP_LOAD_CONST_INLINE 565 -#define _POP_TOP_LOAD_CONST_INLINE_BORROW 566 -#define _POP_TOP_NOP 567 -#define _POP_TOP_UNICODE 568 -#define _POP_TWO 569 -#define _POP_TWO_LOAD_CONST_INLINE_BORROW 570 +#define _POP_TOP_FLOAT 564 +#define _POP_TOP_INT 565 +#define _POP_TOP_LOAD_CONST_INLINE 566 +#define _POP_TOP_LOAD_CONST_INLINE_BORROW 567 +#define _POP_TOP_NOP 568 +#define _POP_TOP_UNICODE 569 +#define _POP_TWO 570 +#define _POP_TWO_LOAD_CONST_INLINE_BORROW 571 #define _PUSH_EXC_INFO PUSH_EXC_INFO -#define _PUSH_FRAME 571 +#define _PUSH_FRAME 572 #define _PUSH_NULL PUSH_NULL -#define _PUSH_NULL_CONDITIONAL 572 -#define _PY_FRAME_EX 573 -#define _PY_FRAME_GENERAL 574 -#define _PY_FRAME_KW 575 -#define _RECORD_3OS_GEN_FUNC 576 -#define _RECORD_4OS 577 -#define _RECORD_BOUND_METHOD 578 -#define _RECORD_CALLABLE 579 -#define _RECORD_CODE 580 -#define _RECORD_NOS 581 -#define _RECORD_NOS_GEN_FUNC 582 -#define _RECORD_TOS 583 -#define _RECORD_TOS_TYPE 584 -#define _REPLACE_WITH_TRUE 585 -#define _RESUME_CHECK 586 +#define _PUSH_NULL_CONDITIONAL 573 +#define _PY_FRAME_EX 574 +#define _PY_FRAME_GENERAL 575 +#define _PY_FRAME_KW 576 +#define _RECORD_3OS_GEN_FUNC 577 +#define _RECORD_4OS 578 +#define _RECORD_BOUND_METHOD 579 +#define _RECORD_CALLABLE 580 +#define _RECORD_CODE 581 +#define _RECORD_NOS 582 +#define _RECORD_NOS_GEN_FUNC 583 +#define _RECORD_TOS 584 +#define _RECORD_TOS_TYPE 585 +#define _REPLACE_WITH_TRUE 586 +#define _RESUME_CHECK 587 #define _RETURN_GENERATOR RETURN_GENERATOR -#define _RETURN_VALUE 587 -#define _SAVE_RETURN_OFFSET 588 -#define _SEND 589 -#define _SEND_GEN_FRAME 590 +#define _RETURN_VALUE 588 +#define _SAVE_RETURN_OFFSET 589 +#define _SEND 590 +#define _SEND_GEN_FRAME 591 #define _SETUP_ANNOTATIONS SETUP_ANNOTATIONS #define _SET_ADD SET_ADD #define _SET_FUNCTION_ATTRIBUTE SET_FUNCTION_ATTRIBUTE -#define _SET_UPDATE 591 -#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW 592 -#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW 593 -#define _SPILL_OR_RELOAD 594 -#define _START_EXECUTOR 595 -#define _STORE_ATTR 596 -#define _STORE_ATTR_INSTANCE_VALUE 597 -#define _STORE_ATTR_SLOT 598 -#define _STORE_ATTR_WITH_HINT 599 +#define _SET_UPDATE 592 +#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW 593 +#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW 594 +#define _SPILL_OR_RELOAD 595 +#define _START_EXECUTOR 596 +#define _STORE_ATTR 597 +#define _STORE_ATTR_INSTANCE_VALUE 598 +#define _STORE_ATTR_SLOT 599 +#define _STORE_ATTR_WITH_HINT 600 #define _STORE_DEREF STORE_DEREF #define _STORE_GLOBAL STORE_GLOBAL #define _STORE_NAME STORE_NAME -#define _STORE_SLICE 600 -#define _STORE_SUBSCR 601 -#define _STORE_SUBSCR_DICT 602 -#define _STORE_SUBSCR_LIST_INT 603 -#define _SWAP 604 -#define _SWAP_2 605 -#define _SWAP_3 606 -#define _SWAP_FAST 607 -#define _SWAP_FAST_0 608 -#define _SWAP_FAST_1 609 -#define _SWAP_FAST_2 610 -#define _SWAP_FAST_3 611 -#define _SWAP_FAST_4 612 -#define _SWAP_FAST_5 613 -#define _SWAP_FAST_6 614 -#define _SWAP_FAST_7 615 -#define _TIER2_RESUME_CHECK 616 -#define _TO_BOOL 617 +#define _STORE_SLICE 601 +#define _STORE_SUBSCR 602 +#define _STORE_SUBSCR_DICT 603 +#define _STORE_SUBSCR_DICT_KNOWN_HASH 604 +#define _STORE_SUBSCR_LIST_INT 605 +#define _SWAP 606 +#define _SWAP_2 607 +#define _SWAP_3 608 +#define _SWAP_FAST 609 +#define _SWAP_FAST_0 610 +#define _SWAP_FAST_1 611 +#define _SWAP_FAST_2 612 +#define _SWAP_FAST_3 613 +#define _SWAP_FAST_4 614 +#define _SWAP_FAST_5 615 +#define _SWAP_FAST_6 616 +#define _SWAP_FAST_7 617 +#define _TIER2_RESUME_CHECK 618 +#define _TO_BOOL 619 #define _TO_BOOL_BOOL TO_BOOL_BOOL -#define _TO_BOOL_INT 618 -#define _TO_BOOL_LIST 619 +#define _TO_BOOL_INT 620 +#define _TO_BOOL_LIST 621 #define _TO_BOOL_NONE TO_BOOL_NONE -#define _TO_BOOL_STR 620 +#define _TO_BOOL_STR 622 #define _TRACE_RECORD TRACE_RECORD -#define _UNARY_INVERT 621 -#define _UNARY_NEGATIVE 622 -#define _UNARY_NEGATIVE_FLOAT_INPLACE 623 +#define _UNARY_INVERT 623 +#define _UNARY_NEGATIVE 624 +#define _UNARY_NEGATIVE_FLOAT_INPLACE 625 #define _UNARY_NOT UNARY_NOT #define _UNPACK_EX UNPACK_EX -#define _UNPACK_SEQUENCE 624 -#define _UNPACK_SEQUENCE_LIST 625 -#define _UNPACK_SEQUENCE_TUPLE 626 -#define _UNPACK_SEQUENCE_TWO_TUPLE 627 -#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE 628 -#define _UNPACK_SEQUENCE_UNIQUE_TUPLE 629 -#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE 630 +#define _UNPACK_SEQUENCE 626 +#define _UNPACK_SEQUENCE_LIST 627 +#define _UNPACK_SEQUENCE_TUPLE 628 +#define _UNPACK_SEQUENCE_TWO_TUPLE 629 +#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE 630 +#define _UNPACK_SEQUENCE_UNIQUE_TUPLE 631 +#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE 632 #define _WITH_EXCEPT_START WITH_EXCEPT_START -#define _YIELD_VALUE 631 -#define MAX_UOP_ID 631 -#define _BINARY_OP_r23 632 -#define _BINARY_OP_ADD_FLOAT_r03 633 -#define _BINARY_OP_ADD_FLOAT_r13 634 -#define _BINARY_OP_ADD_FLOAT_r23 635 -#define _BINARY_OP_ADD_FLOAT_INPLACE_r03 636 -#define _BINARY_OP_ADD_FLOAT_INPLACE_r13 637 -#define _BINARY_OP_ADD_FLOAT_INPLACE_r23 638 -#define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT_r03 639 -#define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT_r13 640 -#define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT_r23 641 -#define _BINARY_OP_ADD_INT_r03 642 -#define _BINARY_OP_ADD_INT_r13 643 -#define _BINARY_OP_ADD_INT_r23 644 -#define _BINARY_OP_ADD_INT_INPLACE_r03 645 -#define _BINARY_OP_ADD_INT_INPLACE_r13 646 -#define _BINARY_OP_ADD_INT_INPLACE_r23 647 -#define _BINARY_OP_ADD_INT_INPLACE_RIGHT_r03 648 -#define _BINARY_OP_ADD_INT_INPLACE_RIGHT_r13 649 -#define _BINARY_OP_ADD_INT_INPLACE_RIGHT_r23 650 -#define _BINARY_OP_ADD_UNICODE_r03 651 -#define _BINARY_OP_ADD_UNICODE_r13 652 -#define _BINARY_OP_ADD_UNICODE_r23 653 -#define _BINARY_OP_EXTEND_r23 654 -#define _BINARY_OP_INPLACE_ADD_UNICODE_r21 655 -#define _BINARY_OP_MULTIPLY_FLOAT_r03 656 -#define _BINARY_OP_MULTIPLY_FLOAT_r13 657 -#define _BINARY_OP_MULTIPLY_FLOAT_r23 658 -#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_r03 659 -#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_r13 660 -#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_r23 661 -#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT_r03 662 -#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT_r13 663 -#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT_r23 664 -#define _BINARY_OP_MULTIPLY_INT_r03 665 -#define _BINARY_OP_MULTIPLY_INT_r13 666 -#define _BINARY_OP_MULTIPLY_INT_r23 667 -#define _BINARY_OP_MULTIPLY_INT_INPLACE_r03 668 -#define _BINARY_OP_MULTIPLY_INT_INPLACE_r13 669 -#define _BINARY_OP_MULTIPLY_INT_INPLACE_r23 670 -#define _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r03 671 -#define _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r13 672 -#define _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r23 673 -#define _BINARY_OP_SUBSCR_CHECK_FUNC_r23 674 -#define _BINARY_OP_SUBSCR_DICT_r23 675 -#define _BINARY_OP_SUBSCR_INIT_CALL_r01 676 -#define _BINARY_OP_SUBSCR_INIT_CALL_r11 677 -#define _BINARY_OP_SUBSCR_INIT_CALL_r21 678 -#define _BINARY_OP_SUBSCR_INIT_CALL_r31 679 -#define _BINARY_OP_SUBSCR_LIST_INT_r23 680 -#define _BINARY_OP_SUBSCR_LIST_SLICE_r23 681 -#define _BINARY_OP_SUBSCR_STR_INT_r23 682 -#define _BINARY_OP_SUBSCR_TUPLE_INT_r03 683 -#define _BINARY_OP_SUBSCR_TUPLE_INT_r13 684 -#define _BINARY_OP_SUBSCR_TUPLE_INT_r23 685 -#define _BINARY_OP_SUBSCR_USTR_INT_r23 686 -#define _BINARY_OP_SUBTRACT_FLOAT_r03 687 -#define _BINARY_OP_SUBTRACT_FLOAT_r13 688 -#define _BINARY_OP_SUBTRACT_FLOAT_r23 689 -#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_r03 690 -#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_r13 691 -#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_r23 692 -#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT_r03 693 -#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT_r13 694 -#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT_r23 695 -#define _BINARY_OP_SUBTRACT_INT_r03 696 -#define _BINARY_OP_SUBTRACT_INT_r13 697 -#define _BINARY_OP_SUBTRACT_INT_r23 698 -#define _BINARY_OP_SUBTRACT_INT_INPLACE_r03 699 -#define _BINARY_OP_SUBTRACT_INT_INPLACE_r13 700 -#define _BINARY_OP_SUBTRACT_INT_INPLACE_r23 701 -#define _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r03 702 -#define _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r13 703 -#define _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r23 704 -#define _BINARY_SLICE_r31 705 -#define _BUILD_INTERPOLATION_r01 706 -#define _BUILD_LIST_r01 707 -#define _BUILD_MAP_r01 708 -#define _BUILD_SET_r01 709 -#define _BUILD_SLICE_r01 710 -#define _BUILD_STRING_r01 711 -#define _BUILD_TEMPLATE_r21 712 -#define _BUILD_TUPLE_r01 713 -#define _CALL_BUILTIN_CLASS_r01 714 -#define _CALL_BUILTIN_FAST_r01 715 -#define _CALL_BUILTIN_FAST_WITH_KEYWORDS_r01 716 -#define _CALL_BUILTIN_O_r03 717 -#define _CALL_FUNCTION_EX_NON_PY_GENERAL_r31 718 -#define _CALL_INTRINSIC_1_r12 719 -#define _CALL_INTRINSIC_2_r23 720 -#define _CALL_ISINSTANCE_r31 721 -#define _CALL_KW_NON_PY_r11 722 -#define _CALL_LEN_r33 723 -#define _CALL_LIST_APPEND_r03 724 -#define _CALL_LIST_APPEND_r13 725 -#define _CALL_LIST_APPEND_r23 726 -#define _CALL_LIST_APPEND_r33 727 -#define _CALL_METHOD_DESCRIPTOR_FAST_r01 728 -#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_r01 729 -#define _CALL_METHOD_DESCRIPTOR_NOARGS_r01 730 -#define _CALL_METHOD_DESCRIPTOR_O_r03 731 -#define _CALL_NON_PY_GENERAL_r01 732 -#define _CALL_STR_1_r32 733 -#define _CALL_TUPLE_1_r32 734 -#define _CALL_TYPE_1_r02 735 -#define _CALL_TYPE_1_r12 736 -#define _CALL_TYPE_1_r22 737 -#define _CALL_TYPE_1_r32 738 -#define _CHECK_AND_ALLOCATE_OBJECT_r00 739 -#define _CHECK_ATTR_CLASS_r01 740 -#define _CHECK_ATTR_CLASS_r11 741 -#define _CHECK_ATTR_CLASS_r22 742 -#define _CHECK_ATTR_CLASS_r33 743 -#define _CHECK_ATTR_METHOD_LAZY_DICT_r01 744 -#define _CHECK_ATTR_METHOD_LAZY_DICT_r11 745 -#define _CHECK_ATTR_METHOD_LAZY_DICT_r22 746 -#define _CHECK_ATTR_METHOD_LAZY_DICT_r33 747 -#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS_r00 748 -#define _CHECK_EG_MATCH_r22 749 -#define _CHECK_EXC_MATCH_r22 750 -#define _CHECK_FUNCTION_EXACT_ARGS_r00 751 -#define _CHECK_FUNCTION_VERSION_r00 752 -#define _CHECK_FUNCTION_VERSION_INLINE_r00 753 -#define _CHECK_FUNCTION_VERSION_INLINE_r11 754 -#define _CHECK_FUNCTION_VERSION_INLINE_r22 755 -#define _CHECK_FUNCTION_VERSION_INLINE_r33 756 -#define _CHECK_FUNCTION_VERSION_KW_r11 757 -#define _CHECK_IS_NOT_PY_CALLABLE_r00 758 -#define _CHECK_IS_NOT_PY_CALLABLE_EX_r03 759 -#define _CHECK_IS_NOT_PY_CALLABLE_EX_r13 760 -#define _CHECK_IS_NOT_PY_CALLABLE_EX_r23 761 -#define _CHECK_IS_NOT_PY_CALLABLE_EX_r33 762 -#define _CHECK_IS_NOT_PY_CALLABLE_KW_r11 763 -#define _CHECK_IS_PY_CALLABLE_EX_r03 764 -#define _CHECK_IS_PY_CALLABLE_EX_r13 765 -#define _CHECK_IS_PY_CALLABLE_EX_r23 766 -#define _CHECK_IS_PY_CALLABLE_EX_r33 767 -#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r01 768 -#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r11 769 -#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r22 770 -#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r33 771 -#define _CHECK_METHOD_VERSION_r00 772 -#define _CHECK_METHOD_VERSION_KW_r11 773 -#define _CHECK_PEP_523_r00 774 -#define _CHECK_PEP_523_r11 775 -#define _CHECK_PEP_523_r22 776 -#define _CHECK_PEP_523_r33 777 -#define _CHECK_PERIODIC_r00 778 -#define _CHECK_PERIODIC_AT_END_r00 779 -#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM_r00 780 -#define _CHECK_RECURSION_REMAINING_r00 781 -#define _CHECK_RECURSION_REMAINING_r11 782 -#define _CHECK_RECURSION_REMAINING_r22 783 -#define _CHECK_RECURSION_REMAINING_r33 784 -#define _CHECK_STACK_SPACE_r00 785 -#define _CHECK_STACK_SPACE_OPERAND_r00 786 -#define _CHECK_STACK_SPACE_OPERAND_r11 787 -#define _CHECK_STACK_SPACE_OPERAND_r22 788 -#define _CHECK_STACK_SPACE_OPERAND_r33 789 -#define _CHECK_VALIDITY_r00 790 -#define _CHECK_VALIDITY_r11 791 -#define _CHECK_VALIDITY_r22 792 -#define _CHECK_VALIDITY_r33 793 -#define _COLD_DYNAMIC_EXIT_r00 794 -#define _COLD_EXIT_r00 795 -#define _COMPARE_OP_r21 796 -#define _COMPARE_OP_FLOAT_r03 797 -#define _COMPARE_OP_FLOAT_r13 798 -#define _COMPARE_OP_FLOAT_r23 799 -#define _COMPARE_OP_INT_r23 800 -#define _COMPARE_OP_STR_r23 801 -#define _CONTAINS_OP_r23 802 -#define _CONTAINS_OP_DICT_r23 803 -#define _CONTAINS_OP_SET_r23 804 -#define _CONVERT_VALUE_r11 805 -#define _COPY_r01 806 -#define _COPY_1_r02 807 -#define _COPY_1_r12 808 -#define _COPY_1_r23 809 -#define _COPY_2_r03 810 -#define _COPY_2_r13 811 -#define _COPY_2_r23 812 -#define _COPY_3_r03 813 -#define _COPY_3_r13 814 -#define _COPY_3_r23 815 -#define _COPY_3_r33 816 -#define _COPY_FREE_VARS_r00 817 -#define _COPY_FREE_VARS_r11 818 -#define _COPY_FREE_VARS_r22 819 -#define _COPY_FREE_VARS_r33 820 -#define _CREATE_INIT_FRAME_r01 821 -#define _DELETE_ATTR_r10 822 -#define _DELETE_DEREF_r00 823 -#define _DELETE_FAST_r00 824 -#define _DELETE_GLOBAL_r00 825 -#define _DELETE_NAME_r00 826 -#define _DELETE_SUBSCR_r20 827 -#define _DEOPT_r00 828 -#define _DEOPT_r10 829 -#define _DEOPT_r20 830 -#define _DEOPT_r30 831 -#define _DICT_MERGE_r11 832 -#define _DICT_UPDATE_r11 833 -#define _DO_CALL_r01 834 -#define _DO_CALL_FUNCTION_EX_r31 835 -#define _DO_CALL_KW_r11 836 -#define _DYNAMIC_EXIT_r00 837 -#define _DYNAMIC_EXIT_r10 838 -#define _DYNAMIC_EXIT_r20 839 -#define _DYNAMIC_EXIT_r30 840 -#define _END_FOR_r10 841 -#define _END_SEND_r31 842 -#define _ERROR_POP_N_r00 843 -#define _EXIT_INIT_CHECK_r10 844 -#define _EXIT_TRACE_r00 845 -#define _EXIT_TRACE_r10 846 -#define _EXIT_TRACE_r20 847 -#define _EXIT_TRACE_r30 848 -#define _EXPAND_METHOD_r00 849 -#define _EXPAND_METHOD_KW_r11 850 -#define _FATAL_ERROR_r00 851 -#define _FATAL_ERROR_r11 852 -#define _FATAL_ERROR_r22 853 -#define _FATAL_ERROR_r33 854 -#define _FORMAT_SIMPLE_r11 855 -#define _FORMAT_WITH_SPEC_r21 856 -#define _FOR_ITER_r23 857 -#define _FOR_ITER_GEN_FRAME_r03 858 -#define _FOR_ITER_GEN_FRAME_r13 859 -#define _FOR_ITER_GEN_FRAME_r23 860 -#define _FOR_ITER_TIER_TWO_r23 861 -#define _GET_AITER_r11 862 -#define _GET_ANEXT_r12 863 -#define _GET_AWAITABLE_r11 864 -#define _GET_ITER_r12 865 -#define _GET_LEN_r12 866 -#define _GUARD_BINARY_OP_EXTEND_r22 867 -#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r02 868 -#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r12 869 -#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r22 870 -#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r33 871 -#define _GUARD_BIT_IS_SET_POP_r00 872 -#define _GUARD_BIT_IS_SET_POP_r10 873 -#define _GUARD_BIT_IS_SET_POP_r21 874 -#define _GUARD_BIT_IS_SET_POP_r32 875 -#define _GUARD_BIT_IS_SET_POP_4_r00 876 -#define _GUARD_BIT_IS_SET_POP_4_r10 877 -#define _GUARD_BIT_IS_SET_POP_4_r21 878 -#define _GUARD_BIT_IS_SET_POP_4_r32 879 -#define _GUARD_BIT_IS_SET_POP_5_r00 880 -#define _GUARD_BIT_IS_SET_POP_5_r10 881 -#define _GUARD_BIT_IS_SET_POP_5_r21 882 -#define _GUARD_BIT_IS_SET_POP_5_r32 883 -#define _GUARD_BIT_IS_SET_POP_6_r00 884 -#define _GUARD_BIT_IS_SET_POP_6_r10 885 -#define _GUARD_BIT_IS_SET_POP_6_r21 886 -#define _GUARD_BIT_IS_SET_POP_6_r32 887 -#define _GUARD_BIT_IS_SET_POP_7_r00 888 -#define _GUARD_BIT_IS_SET_POP_7_r10 889 -#define _GUARD_BIT_IS_SET_POP_7_r21 890 -#define _GUARD_BIT_IS_SET_POP_7_r32 891 -#define _GUARD_BIT_IS_UNSET_POP_r00 892 -#define _GUARD_BIT_IS_UNSET_POP_r10 893 -#define _GUARD_BIT_IS_UNSET_POP_r21 894 -#define _GUARD_BIT_IS_UNSET_POP_r32 895 -#define _GUARD_BIT_IS_UNSET_POP_4_r00 896 -#define _GUARD_BIT_IS_UNSET_POP_4_r10 897 -#define _GUARD_BIT_IS_UNSET_POP_4_r21 898 -#define _GUARD_BIT_IS_UNSET_POP_4_r32 899 -#define _GUARD_BIT_IS_UNSET_POP_5_r00 900 -#define _GUARD_BIT_IS_UNSET_POP_5_r10 901 -#define _GUARD_BIT_IS_UNSET_POP_5_r21 902 -#define _GUARD_BIT_IS_UNSET_POP_5_r32 903 -#define _GUARD_BIT_IS_UNSET_POP_6_r00 904 -#define _GUARD_BIT_IS_UNSET_POP_6_r10 905 -#define _GUARD_BIT_IS_UNSET_POP_6_r21 906 -#define _GUARD_BIT_IS_UNSET_POP_6_r32 907 -#define _GUARD_BIT_IS_UNSET_POP_7_r00 908 -#define _GUARD_BIT_IS_UNSET_POP_7_r10 909 -#define _GUARD_BIT_IS_UNSET_POP_7_r21 910 -#define _GUARD_BIT_IS_UNSET_POP_7_r32 911 -#define _GUARD_CALLABLE_BUILTIN_FAST_r00 912 -#define _GUARD_CALLABLE_BUILTIN_FAST_WITH_KEYWORDS_r00 913 -#define _GUARD_CALLABLE_BUILTIN_O_r00 914 -#define _GUARD_CALLABLE_ISINSTANCE_r03 915 -#define _GUARD_CALLABLE_ISINSTANCE_r13 916 -#define _GUARD_CALLABLE_ISINSTANCE_r23 917 -#define _GUARD_CALLABLE_ISINSTANCE_r33 918 -#define _GUARD_CALLABLE_LEN_r03 919 -#define _GUARD_CALLABLE_LEN_r13 920 -#define _GUARD_CALLABLE_LEN_r23 921 -#define _GUARD_CALLABLE_LEN_r33 922 -#define _GUARD_CALLABLE_LIST_APPEND_r03 923 -#define _GUARD_CALLABLE_LIST_APPEND_r13 924 -#define _GUARD_CALLABLE_LIST_APPEND_r23 925 -#define _GUARD_CALLABLE_LIST_APPEND_r33 926 -#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_r00 927 -#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_r00 928 -#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_NOARGS_r00 929 -#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_O_r00 930 -#define _GUARD_CALLABLE_STR_1_r03 931 -#define _GUARD_CALLABLE_STR_1_r13 932 -#define _GUARD_CALLABLE_STR_1_r23 933 -#define _GUARD_CALLABLE_STR_1_r33 934 -#define _GUARD_CALLABLE_TUPLE_1_r03 935 -#define _GUARD_CALLABLE_TUPLE_1_r13 936 -#define _GUARD_CALLABLE_TUPLE_1_r23 937 -#define _GUARD_CALLABLE_TUPLE_1_r33 938 -#define _GUARD_CALLABLE_TYPE_1_r03 939 -#define _GUARD_CALLABLE_TYPE_1_r13 940 -#define _GUARD_CALLABLE_TYPE_1_r23 941 -#define _GUARD_CALLABLE_TYPE_1_r33 942 -#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r00 943 -#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r11 944 -#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r22 945 -#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r33 946 -#define _GUARD_CODE_VERSION_RETURN_VALUE_r00 947 -#define _GUARD_CODE_VERSION_RETURN_VALUE_r11 948 -#define _GUARD_CODE_VERSION_RETURN_VALUE_r22 949 -#define _GUARD_CODE_VERSION_RETURN_VALUE_r33 950 -#define _GUARD_CODE_VERSION_YIELD_VALUE_r00 951 -#define _GUARD_CODE_VERSION_YIELD_VALUE_r11 952 -#define _GUARD_CODE_VERSION_YIELD_VALUE_r22 953 -#define _GUARD_CODE_VERSION_YIELD_VALUE_r33 954 -#define _GUARD_CODE_VERSION__PUSH_FRAME_r00 955 -#define _GUARD_CODE_VERSION__PUSH_FRAME_r11 956 -#define _GUARD_CODE_VERSION__PUSH_FRAME_r22 957 -#define _GUARD_CODE_VERSION__PUSH_FRAME_r33 958 -#define _GUARD_DORV_NO_DICT_r01 959 -#define _GUARD_DORV_NO_DICT_r11 960 -#define _GUARD_DORV_NO_DICT_r22 961 -#define _GUARD_DORV_NO_DICT_r33 962 -#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r01 963 -#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r11 964 -#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r22 965 -#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r33 966 -#define _GUARD_GLOBALS_VERSION_r00 967 -#define _GUARD_GLOBALS_VERSION_r11 968 -#define _GUARD_GLOBALS_VERSION_r22 969 -#define _GUARD_GLOBALS_VERSION_r33 970 -#define _GUARD_IP_RETURN_GENERATOR_r00 971 -#define _GUARD_IP_RETURN_GENERATOR_r11 972 -#define _GUARD_IP_RETURN_GENERATOR_r22 973 -#define _GUARD_IP_RETURN_GENERATOR_r33 974 -#define _GUARD_IP_RETURN_VALUE_r00 975 -#define _GUARD_IP_RETURN_VALUE_r11 976 -#define _GUARD_IP_RETURN_VALUE_r22 977 -#define _GUARD_IP_RETURN_VALUE_r33 978 -#define _GUARD_IP_YIELD_VALUE_r00 979 -#define _GUARD_IP_YIELD_VALUE_r11 980 -#define _GUARD_IP_YIELD_VALUE_r22 981 -#define _GUARD_IP_YIELD_VALUE_r33 982 -#define _GUARD_IP__PUSH_FRAME_r00 983 -#define _GUARD_IP__PUSH_FRAME_r11 984 -#define _GUARD_IP__PUSH_FRAME_r22 985 -#define _GUARD_IP__PUSH_FRAME_r33 986 -#define _GUARD_IS_FALSE_POP_r00 987 -#define _GUARD_IS_FALSE_POP_r10 988 -#define _GUARD_IS_FALSE_POP_r21 989 -#define _GUARD_IS_FALSE_POP_r32 990 -#define _GUARD_IS_NONE_POP_r00 991 -#define _GUARD_IS_NONE_POP_r10 992 -#define _GUARD_IS_NONE_POP_r21 993 -#define _GUARD_IS_NONE_POP_r32 994 -#define _GUARD_IS_NOT_NONE_POP_r10 995 -#define _GUARD_IS_TRUE_POP_r00 996 -#define _GUARD_IS_TRUE_POP_r10 997 -#define _GUARD_IS_TRUE_POP_r21 998 -#define _GUARD_IS_TRUE_POP_r32 999 -#define _GUARD_KEYS_VERSION_r01 1000 -#define _GUARD_KEYS_VERSION_r11 1001 -#define _GUARD_KEYS_VERSION_r22 1002 -#define _GUARD_KEYS_VERSION_r33 1003 -#define _GUARD_NOS_ANY_DICT_r02 1004 -#define _GUARD_NOS_ANY_DICT_r12 1005 -#define _GUARD_NOS_ANY_DICT_r22 1006 -#define _GUARD_NOS_ANY_DICT_r33 1007 -#define _GUARD_NOS_COMPACT_ASCII_r02 1008 -#define _GUARD_NOS_COMPACT_ASCII_r12 1009 -#define _GUARD_NOS_COMPACT_ASCII_r22 1010 -#define _GUARD_NOS_COMPACT_ASCII_r33 1011 -#define _GUARD_NOS_DICT_r02 1012 -#define _GUARD_NOS_DICT_r12 1013 -#define _GUARD_NOS_DICT_r22 1014 -#define _GUARD_NOS_DICT_r33 1015 -#define _GUARD_NOS_FLOAT_r02 1016 -#define _GUARD_NOS_FLOAT_r12 1017 -#define _GUARD_NOS_FLOAT_r22 1018 -#define _GUARD_NOS_FLOAT_r33 1019 -#define _GUARD_NOS_INT_r02 1020 -#define _GUARD_NOS_INT_r12 1021 -#define _GUARD_NOS_INT_r22 1022 -#define _GUARD_NOS_INT_r33 1023 -#define _GUARD_NOS_LIST_r02 1024 -#define _GUARD_NOS_LIST_r12 1025 -#define _GUARD_NOS_LIST_r22 1026 -#define _GUARD_NOS_LIST_r33 1027 -#define _GUARD_NOS_NOT_NULL_r02 1028 -#define _GUARD_NOS_NOT_NULL_r12 1029 -#define _GUARD_NOS_NOT_NULL_r22 1030 -#define _GUARD_NOS_NOT_NULL_r33 1031 -#define _GUARD_NOS_NULL_r02 1032 -#define _GUARD_NOS_NULL_r12 1033 -#define _GUARD_NOS_NULL_r22 1034 -#define _GUARD_NOS_NULL_r33 1035 -#define _GUARD_NOS_OVERFLOWED_r02 1036 -#define _GUARD_NOS_OVERFLOWED_r12 1037 -#define _GUARD_NOS_OVERFLOWED_r22 1038 -#define _GUARD_NOS_OVERFLOWED_r33 1039 -#define _GUARD_NOS_TUPLE_r02 1040 -#define _GUARD_NOS_TUPLE_r12 1041 -#define _GUARD_NOS_TUPLE_r22 1042 -#define _GUARD_NOS_TUPLE_r33 1043 -#define _GUARD_NOS_UNICODE_r02 1044 -#define _GUARD_NOS_UNICODE_r12 1045 -#define _GUARD_NOS_UNICODE_r22 1046 -#define _GUARD_NOS_UNICODE_r33 1047 -#define _GUARD_NOT_EXHAUSTED_LIST_r02 1048 -#define _GUARD_NOT_EXHAUSTED_LIST_r12 1049 -#define _GUARD_NOT_EXHAUSTED_LIST_r22 1050 -#define _GUARD_NOT_EXHAUSTED_LIST_r33 1051 -#define _GUARD_NOT_EXHAUSTED_RANGE_r02 1052 -#define _GUARD_NOT_EXHAUSTED_RANGE_r12 1053 -#define _GUARD_NOT_EXHAUSTED_RANGE_r22 1054 -#define _GUARD_NOT_EXHAUSTED_RANGE_r33 1055 -#define _GUARD_NOT_EXHAUSTED_TUPLE_r02 1056 -#define _GUARD_NOT_EXHAUSTED_TUPLE_r12 1057 -#define _GUARD_NOT_EXHAUSTED_TUPLE_r22 1058 -#define _GUARD_NOT_EXHAUSTED_TUPLE_r33 1059 -#define _GUARD_THIRD_NULL_r03 1060 -#define _GUARD_THIRD_NULL_r13 1061 -#define _GUARD_THIRD_NULL_r23 1062 -#define _GUARD_THIRD_NULL_r33 1063 -#define _GUARD_TOS_ANY_DICT_r01 1064 -#define _GUARD_TOS_ANY_DICT_r11 1065 -#define _GUARD_TOS_ANY_DICT_r22 1066 -#define _GUARD_TOS_ANY_DICT_r33 1067 -#define _GUARD_TOS_ANY_SET_r01 1068 -#define _GUARD_TOS_ANY_SET_r11 1069 -#define _GUARD_TOS_ANY_SET_r22 1070 -#define _GUARD_TOS_ANY_SET_r33 1071 -#define _GUARD_TOS_DICT_r01 1072 -#define _GUARD_TOS_DICT_r11 1073 -#define _GUARD_TOS_DICT_r22 1074 -#define _GUARD_TOS_DICT_r33 1075 -#define _GUARD_TOS_FLOAT_r01 1076 -#define _GUARD_TOS_FLOAT_r11 1077 -#define _GUARD_TOS_FLOAT_r22 1078 -#define _GUARD_TOS_FLOAT_r33 1079 -#define _GUARD_TOS_FROZENDICT_r01 1080 -#define _GUARD_TOS_FROZENDICT_r11 1081 -#define _GUARD_TOS_FROZENDICT_r22 1082 -#define _GUARD_TOS_FROZENDICT_r33 1083 -#define _GUARD_TOS_FROZENSET_r01 1084 -#define _GUARD_TOS_FROZENSET_r11 1085 -#define _GUARD_TOS_FROZENSET_r22 1086 -#define _GUARD_TOS_FROZENSET_r33 1087 -#define _GUARD_TOS_INT_r01 1088 -#define _GUARD_TOS_INT_r11 1089 -#define _GUARD_TOS_INT_r22 1090 -#define _GUARD_TOS_INT_r33 1091 -#define _GUARD_TOS_LIST_r01 1092 -#define _GUARD_TOS_LIST_r11 1093 -#define _GUARD_TOS_LIST_r22 1094 -#define _GUARD_TOS_LIST_r33 1095 -#define _GUARD_TOS_OVERFLOWED_r01 1096 -#define _GUARD_TOS_OVERFLOWED_r11 1097 -#define _GUARD_TOS_OVERFLOWED_r22 1098 -#define _GUARD_TOS_OVERFLOWED_r33 1099 -#define _GUARD_TOS_SET_r01 1100 -#define _GUARD_TOS_SET_r11 1101 -#define _GUARD_TOS_SET_r22 1102 -#define _GUARD_TOS_SET_r33 1103 -#define _GUARD_TOS_SLICE_r01 1104 -#define _GUARD_TOS_SLICE_r11 1105 -#define _GUARD_TOS_SLICE_r22 1106 -#define _GUARD_TOS_SLICE_r33 1107 -#define _GUARD_TOS_TUPLE_r01 1108 -#define _GUARD_TOS_TUPLE_r11 1109 -#define _GUARD_TOS_TUPLE_r22 1110 -#define _GUARD_TOS_TUPLE_r33 1111 -#define _GUARD_TOS_UNICODE_r01 1112 -#define _GUARD_TOS_UNICODE_r11 1113 -#define _GUARD_TOS_UNICODE_r22 1114 -#define _GUARD_TOS_UNICODE_r33 1115 -#define _GUARD_TYPE_VERSION_r01 1116 -#define _GUARD_TYPE_VERSION_r11 1117 -#define _GUARD_TYPE_VERSION_r22 1118 -#define _GUARD_TYPE_VERSION_r33 1119 -#define _GUARD_TYPE_VERSION_LOCKED_r01 1120 -#define _GUARD_TYPE_VERSION_LOCKED_r11 1121 -#define _GUARD_TYPE_VERSION_LOCKED_r22 1122 -#define _GUARD_TYPE_VERSION_LOCKED_r33 1123 -#define _HANDLE_PENDING_AND_DEOPT_r00 1124 -#define _HANDLE_PENDING_AND_DEOPT_r10 1125 -#define _HANDLE_PENDING_AND_DEOPT_r20 1126 -#define _HANDLE_PENDING_AND_DEOPT_r30 1127 -#define _IMPORT_FROM_r12 1128 -#define _IMPORT_NAME_r21 1129 -#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS_r00 1130 -#define _INIT_CALL_PY_EXACT_ARGS_r01 1131 -#define _INIT_CALL_PY_EXACT_ARGS_0_r01 1132 -#define _INIT_CALL_PY_EXACT_ARGS_1_r01 1133 -#define _INIT_CALL_PY_EXACT_ARGS_2_r01 1134 -#define _INIT_CALL_PY_EXACT_ARGS_3_r01 1135 -#define _INIT_CALL_PY_EXACT_ARGS_4_r01 1136 -#define _INSERT_1_LOAD_CONST_INLINE_r02 1137 -#define _INSERT_1_LOAD_CONST_INLINE_r12 1138 -#define _INSERT_1_LOAD_CONST_INLINE_r23 1139 -#define _INSERT_1_LOAD_CONST_INLINE_BORROW_r02 1140 -#define _INSERT_1_LOAD_CONST_INLINE_BORROW_r12 1141 -#define _INSERT_1_LOAD_CONST_INLINE_BORROW_r23 1142 -#define _INSERT_2_LOAD_CONST_INLINE_BORROW_r03 1143 -#define _INSERT_2_LOAD_CONST_INLINE_BORROW_r13 1144 -#define _INSERT_2_LOAD_CONST_INLINE_BORROW_r23 1145 -#define _INSERT_NULL_r10 1146 -#define _INSTRUMENTED_FOR_ITER_r23 1147 -#define _INSTRUMENTED_INSTRUCTION_r00 1148 -#define _INSTRUMENTED_JUMP_FORWARD_r00 1149 -#define _INSTRUMENTED_JUMP_FORWARD_r11 1150 -#define _INSTRUMENTED_JUMP_FORWARD_r22 1151 -#define _INSTRUMENTED_JUMP_FORWARD_r33 1152 -#define _INSTRUMENTED_LINE_r00 1153 -#define _INSTRUMENTED_NOT_TAKEN_r00 1154 -#define _INSTRUMENTED_NOT_TAKEN_r11 1155 -#define _INSTRUMENTED_NOT_TAKEN_r22 1156 -#define _INSTRUMENTED_NOT_TAKEN_r33 1157 -#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r00 1158 -#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r10 1159 -#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r21 1160 -#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r32 1161 -#define _INSTRUMENTED_POP_JUMP_IF_NONE_r10 1162 -#define _INSTRUMENTED_POP_JUMP_IF_NOT_NONE_r10 1163 -#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r00 1164 -#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r10 1165 -#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r21 1166 -#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r32 1167 -#define _IS_NONE_r11 1168 -#define _IS_OP_r03 1169 -#define _IS_OP_r13 1170 -#define _IS_OP_r23 1171 -#define _ITER_CHECK_LIST_r02 1172 -#define _ITER_CHECK_LIST_r12 1173 -#define _ITER_CHECK_LIST_r22 1174 -#define _ITER_CHECK_LIST_r33 1175 -#define _ITER_CHECK_RANGE_r02 1176 -#define _ITER_CHECK_RANGE_r12 1177 -#define _ITER_CHECK_RANGE_r22 1178 -#define _ITER_CHECK_RANGE_r33 1179 -#define _ITER_CHECK_TUPLE_r02 1180 -#define _ITER_CHECK_TUPLE_r12 1181 -#define _ITER_CHECK_TUPLE_r22 1182 -#define _ITER_CHECK_TUPLE_r33 1183 -#define _ITER_JUMP_LIST_r02 1184 -#define _ITER_JUMP_LIST_r12 1185 -#define _ITER_JUMP_LIST_r22 1186 -#define _ITER_JUMP_LIST_r33 1187 -#define _ITER_JUMP_RANGE_r02 1188 -#define _ITER_JUMP_RANGE_r12 1189 -#define _ITER_JUMP_RANGE_r22 1190 -#define _ITER_JUMP_RANGE_r33 1191 -#define _ITER_JUMP_TUPLE_r02 1192 -#define _ITER_JUMP_TUPLE_r12 1193 -#define _ITER_JUMP_TUPLE_r22 1194 -#define _ITER_JUMP_TUPLE_r33 1195 -#define _ITER_NEXT_LIST_r23 1196 -#define _ITER_NEXT_LIST_TIER_TWO_r23 1197 -#define _ITER_NEXT_RANGE_r03 1198 -#define _ITER_NEXT_RANGE_r13 1199 -#define _ITER_NEXT_RANGE_r23 1200 -#define _ITER_NEXT_TUPLE_r03 1201 -#define _ITER_NEXT_TUPLE_r13 1202 -#define _ITER_NEXT_TUPLE_r23 1203 -#define _JUMP_BACKWARD_NO_INTERRUPT_r00 1204 -#define _JUMP_BACKWARD_NO_INTERRUPT_r11 1205 -#define _JUMP_BACKWARD_NO_INTERRUPT_r22 1206 -#define _JUMP_BACKWARD_NO_INTERRUPT_r33 1207 -#define _JUMP_TO_TOP_r00 1208 -#define _LIST_APPEND_r10 1209 -#define _LIST_EXTEND_r11 1210 -#define _LOAD_ATTR_r10 1211 -#define _LOAD_ATTR_CLASS_r11 1212 -#define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN_r11 1213 -#define _LOAD_ATTR_INSTANCE_VALUE_r02 1214 -#define _LOAD_ATTR_INSTANCE_VALUE_r12 1215 -#define _LOAD_ATTR_INSTANCE_VALUE_r23 1216 -#define _LOAD_ATTR_METHOD_LAZY_DICT_r02 1217 -#define _LOAD_ATTR_METHOD_LAZY_DICT_r12 1218 -#define _LOAD_ATTR_METHOD_LAZY_DICT_r23 1219 -#define _LOAD_ATTR_METHOD_NO_DICT_r02 1220 -#define _LOAD_ATTR_METHOD_NO_DICT_r12 1221 -#define _LOAD_ATTR_METHOD_NO_DICT_r23 1222 -#define _LOAD_ATTR_METHOD_WITH_VALUES_r02 1223 -#define _LOAD_ATTR_METHOD_WITH_VALUES_r12 1224 -#define _LOAD_ATTR_METHOD_WITH_VALUES_r23 1225 -#define _LOAD_ATTR_MODULE_r12 1226 -#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT_r11 1227 -#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES_r11 1228 -#define _LOAD_ATTR_PROPERTY_FRAME_r11 1229 -#define _LOAD_ATTR_SLOT_r02 1230 -#define _LOAD_ATTR_SLOT_r12 1231 -#define _LOAD_ATTR_SLOT_r23 1232 -#define _LOAD_ATTR_WITH_HINT_r12 1233 -#define _LOAD_BUILD_CLASS_r01 1234 -#define _LOAD_BYTECODE_r00 1235 -#define _LOAD_COMMON_CONSTANT_r01 1236 -#define _LOAD_COMMON_CONSTANT_r12 1237 -#define _LOAD_COMMON_CONSTANT_r23 1238 -#define _LOAD_CONST_r01 1239 -#define _LOAD_CONST_r12 1240 -#define _LOAD_CONST_r23 1241 -#define _LOAD_CONST_INLINE_r01 1242 -#define _LOAD_CONST_INLINE_r12 1243 -#define _LOAD_CONST_INLINE_r23 1244 -#define _LOAD_CONST_INLINE_BORROW_r01 1245 -#define _LOAD_CONST_INLINE_BORROW_r12 1246 -#define _LOAD_CONST_INLINE_BORROW_r23 1247 -#define _LOAD_CONST_UNDER_INLINE_r02 1248 -#define _LOAD_CONST_UNDER_INLINE_r12 1249 -#define _LOAD_CONST_UNDER_INLINE_r23 1250 -#define _LOAD_CONST_UNDER_INLINE_BORROW_r02 1251 -#define _LOAD_CONST_UNDER_INLINE_BORROW_r12 1252 -#define _LOAD_CONST_UNDER_INLINE_BORROW_r23 1253 -#define _LOAD_DEREF_r01 1254 -#define _LOAD_FAST_r01 1255 -#define _LOAD_FAST_r12 1256 -#define _LOAD_FAST_r23 1257 -#define _LOAD_FAST_0_r01 1258 -#define _LOAD_FAST_0_r12 1259 -#define _LOAD_FAST_0_r23 1260 -#define _LOAD_FAST_1_r01 1261 -#define _LOAD_FAST_1_r12 1262 -#define _LOAD_FAST_1_r23 1263 -#define _LOAD_FAST_2_r01 1264 -#define _LOAD_FAST_2_r12 1265 -#define _LOAD_FAST_2_r23 1266 -#define _LOAD_FAST_3_r01 1267 -#define _LOAD_FAST_3_r12 1268 -#define _LOAD_FAST_3_r23 1269 -#define _LOAD_FAST_4_r01 1270 -#define _LOAD_FAST_4_r12 1271 -#define _LOAD_FAST_4_r23 1272 -#define _LOAD_FAST_5_r01 1273 -#define _LOAD_FAST_5_r12 1274 -#define _LOAD_FAST_5_r23 1275 -#define _LOAD_FAST_6_r01 1276 -#define _LOAD_FAST_6_r12 1277 -#define _LOAD_FAST_6_r23 1278 -#define _LOAD_FAST_7_r01 1279 -#define _LOAD_FAST_7_r12 1280 -#define _LOAD_FAST_7_r23 1281 -#define _LOAD_FAST_AND_CLEAR_r01 1282 -#define _LOAD_FAST_AND_CLEAR_r12 1283 -#define _LOAD_FAST_AND_CLEAR_r23 1284 -#define _LOAD_FAST_BORROW_r01 1285 -#define _LOAD_FAST_BORROW_r12 1286 -#define _LOAD_FAST_BORROW_r23 1287 -#define _LOAD_FAST_BORROW_0_r01 1288 -#define _LOAD_FAST_BORROW_0_r12 1289 -#define _LOAD_FAST_BORROW_0_r23 1290 -#define _LOAD_FAST_BORROW_1_r01 1291 -#define _LOAD_FAST_BORROW_1_r12 1292 -#define _LOAD_FAST_BORROW_1_r23 1293 -#define _LOAD_FAST_BORROW_2_r01 1294 -#define _LOAD_FAST_BORROW_2_r12 1295 -#define _LOAD_FAST_BORROW_2_r23 1296 -#define _LOAD_FAST_BORROW_3_r01 1297 -#define _LOAD_FAST_BORROW_3_r12 1298 -#define _LOAD_FAST_BORROW_3_r23 1299 -#define _LOAD_FAST_BORROW_4_r01 1300 -#define _LOAD_FAST_BORROW_4_r12 1301 -#define _LOAD_FAST_BORROW_4_r23 1302 -#define _LOAD_FAST_BORROW_5_r01 1303 -#define _LOAD_FAST_BORROW_5_r12 1304 -#define _LOAD_FAST_BORROW_5_r23 1305 -#define _LOAD_FAST_BORROW_6_r01 1306 -#define _LOAD_FAST_BORROW_6_r12 1307 -#define _LOAD_FAST_BORROW_6_r23 1308 -#define _LOAD_FAST_BORROW_7_r01 1309 -#define _LOAD_FAST_BORROW_7_r12 1310 -#define _LOAD_FAST_BORROW_7_r23 1311 -#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r02 1312 -#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r13 1313 -#define _LOAD_FAST_CHECK_r01 1314 -#define _LOAD_FAST_CHECK_r12 1315 -#define _LOAD_FAST_CHECK_r23 1316 -#define _LOAD_FAST_LOAD_FAST_r02 1317 -#define _LOAD_FAST_LOAD_FAST_r13 1318 -#define _LOAD_FROM_DICT_OR_DEREF_r11 1319 -#define _LOAD_FROM_DICT_OR_GLOBALS_r11 1320 -#define _LOAD_GLOBAL_r00 1321 -#define _LOAD_GLOBAL_BUILTINS_r01 1322 -#define _LOAD_GLOBAL_MODULE_r01 1323 -#define _LOAD_LOCALS_r01 1324 -#define _LOAD_LOCALS_r12 1325 -#define _LOAD_LOCALS_r23 1326 -#define _LOAD_NAME_r01 1327 -#define _LOAD_SMALL_INT_r01 1328 -#define _LOAD_SMALL_INT_r12 1329 -#define _LOAD_SMALL_INT_r23 1330 -#define _LOAD_SMALL_INT_0_r01 1331 -#define _LOAD_SMALL_INT_0_r12 1332 -#define _LOAD_SMALL_INT_0_r23 1333 -#define _LOAD_SMALL_INT_1_r01 1334 -#define _LOAD_SMALL_INT_1_r12 1335 -#define _LOAD_SMALL_INT_1_r23 1336 -#define _LOAD_SMALL_INT_2_r01 1337 -#define _LOAD_SMALL_INT_2_r12 1338 -#define _LOAD_SMALL_INT_2_r23 1339 -#define _LOAD_SMALL_INT_3_r01 1340 -#define _LOAD_SMALL_INT_3_r12 1341 -#define _LOAD_SMALL_INT_3_r23 1342 -#define _LOAD_SPECIAL_r00 1343 -#define _LOAD_SUPER_ATTR_ATTR_r31 1344 -#define _LOAD_SUPER_ATTR_METHOD_r32 1345 -#define _LOCK_OBJECT_r01 1346 -#define _LOCK_OBJECT_r11 1347 -#define _LOCK_OBJECT_r22 1348 -#define _LOCK_OBJECT_r33 1349 -#define _MAKE_CALLARGS_A_TUPLE_r33 1350 -#define _MAKE_CELL_r00 1351 -#define _MAKE_FUNCTION_r11 1352 -#define _MAKE_HEAP_SAFE_r01 1353 -#define _MAKE_HEAP_SAFE_r11 1354 -#define _MAKE_HEAP_SAFE_r22 1355 -#define _MAKE_HEAP_SAFE_r33 1356 -#define _MAKE_WARM_r00 1357 -#define _MAKE_WARM_r11 1358 -#define _MAKE_WARM_r22 1359 -#define _MAKE_WARM_r33 1360 -#define _MAP_ADD_r20 1361 -#define _MATCH_CLASS_r33 1362 -#define _MATCH_KEYS_r23 1363 -#define _MATCH_MAPPING_r02 1364 -#define _MATCH_MAPPING_r12 1365 -#define _MATCH_MAPPING_r23 1366 -#define _MATCH_SEQUENCE_r02 1367 -#define _MATCH_SEQUENCE_r12 1368 -#define _MATCH_SEQUENCE_r23 1369 -#define _MAYBE_EXPAND_METHOD_r00 1370 -#define _MAYBE_EXPAND_METHOD_KW_r11 1371 -#define _MONITOR_CALL_r00 1372 -#define _MONITOR_CALL_KW_r11 1373 -#define _MONITOR_JUMP_BACKWARD_r00 1374 -#define _MONITOR_JUMP_BACKWARD_r11 1375 -#define _MONITOR_JUMP_BACKWARD_r22 1376 -#define _MONITOR_JUMP_BACKWARD_r33 1377 -#define _MONITOR_RESUME_r00 1378 -#define _NOP_r00 1379 -#define _NOP_r11 1380 -#define _NOP_r22 1381 -#define _NOP_r33 1382 -#define _POP_CALL_r20 1383 -#define _POP_CALL_LOAD_CONST_INLINE_BORROW_r21 1384 -#define _POP_CALL_ONE_r30 1385 -#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW_r31 1386 -#define _POP_CALL_TWO_r30 1387 -#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW_r31 1388 -#define _POP_EXCEPT_r10 1389 -#define _POP_ITER_r20 1390 -#define _POP_JUMP_IF_FALSE_r00 1391 -#define _POP_JUMP_IF_FALSE_r10 1392 -#define _POP_JUMP_IF_FALSE_r21 1393 -#define _POP_JUMP_IF_FALSE_r32 1394 -#define _POP_JUMP_IF_TRUE_r00 1395 -#define _POP_JUMP_IF_TRUE_r10 1396 -#define _POP_JUMP_IF_TRUE_r21 1397 -#define _POP_JUMP_IF_TRUE_r32 1398 -#define _POP_TOP_r10 1399 -#define _POP_TOP_FLOAT_r00 1400 -#define _POP_TOP_FLOAT_r10 1401 -#define _POP_TOP_FLOAT_r21 1402 -#define _POP_TOP_FLOAT_r32 1403 -#define _POP_TOP_INT_r00 1404 -#define _POP_TOP_INT_r10 1405 -#define _POP_TOP_INT_r21 1406 -#define _POP_TOP_INT_r32 1407 -#define _POP_TOP_LOAD_CONST_INLINE_r11 1408 -#define _POP_TOP_LOAD_CONST_INLINE_BORROW_r11 1409 -#define _POP_TOP_NOP_r00 1410 -#define _POP_TOP_NOP_r10 1411 -#define _POP_TOP_NOP_r21 1412 -#define _POP_TOP_NOP_r32 1413 -#define _POP_TOP_UNICODE_r00 1414 -#define _POP_TOP_UNICODE_r10 1415 -#define _POP_TOP_UNICODE_r21 1416 -#define _POP_TOP_UNICODE_r32 1417 -#define _POP_TWO_r20 1418 -#define _POP_TWO_LOAD_CONST_INLINE_BORROW_r21 1419 -#define _PUSH_EXC_INFO_r02 1420 -#define _PUSH_EXC_INFO_r12 1421 -#define _PUSH_EXC_INFO_r23 1422 -#define _PUSH_FRAME_r10 1423 -#define _PUSH_NULL_r01 1424 -#define _PUSH_NULL_r12 1425 -#define _PUSH_NULL_r23 1426 -#define _PUSH_NULL_CONDITIONAL_r00 1427 -#define _PY_FRAME_EX_r31 1428 -#define _PY_FRAME_GENERAL_r01 1429 -#define _PY_FRAME_KW_r11 1430 -#define _REPLACE_WITH_TRUE_r02 1431 -#define _REPLACE_WITH_TRUE_r12 1432 -#define _REPLACE_WITH_TRUE_r23 1433 -#define _RESUME_CHECK_r00 1434 -#define _RESUME_CHECK_r11 1435 -#define _RESUME_CHECK_r22 1436 -#define _RESUME_CHECK_r33 1437 -#define _RETURN_GENERATOR_r01 1438 -#define _RETURN_VALUE_r11 1439 -#define _SAVE_RETURN_OFFSET_r00 1440 -#define _SAVE_RETURN_OFFSET_r11 1441 -#define _SAVE_RETURN_OFFSET_r22 1442 -#define _SAVE_RETURN_OFFSET_r33 1443 -#define _SEND_r33 1444 -#define _SEND_GEN_FRAME_r33 1445 -#define _SETUP_ANNOTATIONS_r00 1446 -#define _SET_ADD_r10 1447 -#define _SET_FUNCTION_ATTRIBUTE_r01 1448 -#define _SET_FUNCTION_ATTRIBUTE_r11 1449 -#define _SET_FUNCTION_ATTRIBUTE_r21 1450 -#define _SET_FUNCTION_ATTRIBUTE_r32 1451 -#define _SET_IP_r00 1452 -#define _SET_IP_r11 1453 -#define _SET_IP_r22 1454 -#define _SET_IP_r33 1455 -#define _SET_UPDATE_r11 1456 -#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r02 1457 -#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r12 1458 -#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r22 1459 -#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r32 1460 -#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r03 1461 -#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r13 1462 -#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r23 1463 -#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r33 1464 -#define _SPILL_OR_RELOAD_r01 1465 -#define _SPILL_OR_RELOAD_r02 1466 -#define _SPILL_OR_RELOAD_r03 1467 -#define _SPILL_OR_RELOAD_r10 1468 -#define _SPILL_OR_RELOAD_r12 1469 -#define _SPILL_OR_RELOAD_r13 1470 -#define _SPILL_OR_RELOAD_r20 1471 -#define _SPILL_OR_RELOAD_r21 1472 -#define _SPILL_OR_RELOAD_r23 1473 -#define _SPILL_OR_RELOAD_r30 1474 -#define _SPILL_OR_RELOAD_r31 1475 -#define _SPILL_OR_RELOAD_r32 1476 -#define _START_EXECUTOR_r00 1477 -#define _STORE_ATTR_r20 1478 -#define _STORE_ATTR_INSTANCE_VALUE_r21 1479 -#define _STORE_ATTR_SLOT_r21 1480 -#define _STORE_ATTR_WITH_HINT_r21 1481 -#define _STORE_DEREF_r10 1482 -#define _STORE_FAST_LOAD_FAST_r11 1483 -#define _STORE_FAST_STORE_FAST_r20 1484 -#define _STORE_GLOBAL_r10 1485 -#define _STORE_NAME_r10 1486 -#define _STORE_SLICE_r30 1487 -#define _STORE_SUBSCR_r30 1488 -#define _STORE_SUBSCR_DICT_r31 1489 -#define _STORE_SUBSCR_LIST_INT_r32 1490 -#define _SWAP_r11 1491 -#define _SWAP_2_r02 1492 -#define _SWAP_2_r12 1493 -#define _SWAP_2_r22 1494 -#define _SWAP_2_r33 1495 -#define _SWAP_3_r03 1496 -#define _SWAP_3_r13 1497 -#define _SWAP_3_r23 1498 -#define _SWAP_3_r33 1499 -#define _SWAP_FAST_r01 1500 -#define _SWAP_FAST_r11 1501 -#define _SWAP_FAST_r22 1502 -#define _SWAP_FAST_r33 1503 -#define _SWAP_FAST_0_r01 1504 -#define _SWAP_FAST_0_r11 1505 -#define _SWAP_FAST_0_r22 1506 -#define _SWAP_FAST_0_r33 1507 -#define _SWAP_FAST_1_r01 1508 -#define _SWAP_FAST_1_r11 1509 -#define _SWAP_FAST_1_r22 1510 -#define _SWAP_FAST_1_r33 1511 -#define _SWAP_FAST_2_r01 1512 -#define _SWAP_FAST_2_r11 1513 -#define _SWAP_FAST_2_r22 1514 -#define _SWAP_FAST_2_r33 1515 -#define _SWAP_FAST_3_r01 1516 -#define _SWAP_FAST_3_r11 1517 -#define _SWAP_FAST_3_r22 1518 -#define _SWAP_FAST_3_r33 1519 -#define _SWAP_FAST_4_r01 1520 -#define _SWAP_FAST_4_r11 1521 -#define _SWAP_FAST_4_r22 1522 -#define _SWAP_FAST_4_r33 1523 -#define _SWAP_FAST_5_r01 1524 -#define _SWAP_FAST_5_r11 1525 -#define _SWAP_FAST_5_r22 1526 -#define _SWAP_FAST_5_r33 1527 -#define _SWAP_FAST_6_r01 1528 -#define _SWAP_FAST_6_r11 1529 -#define _SWAP_FAST_6_r22 1530 -#define _SWAP_FAST_6_r33 1531 -#define _SWAP_FAST_7_r01 1532 -#define _SWAP_FAST_7_r11 1533 -#define _SWAP_FAST_7_r22 1534 -#define _SWAP_FAST_7_r33 1535 -#define _TIER2_RESUME_CHECK_r00 1536 -#define _TIER2_RESUME_CHECK_r11 1537 -#define _TIER2_RESUME_CHECK_r22 1538 -#define _TIER2_RESUME_CHECK_r33 1539 -#define _TO_BOOL_r11 1540 -#define _TO_BOOL_BOOL_r01 1541 -#define _TO_BOOL_BOOL_r11 1542 -#define _TO_BOOL_BOOL_r22 1543 -#define _TO_BOOL_BOOL_r33 1544 -#define _TO_BOOL_INT_r02 1545 -#define _TO_BOOL_INT_r12 1546 -#define _TO_BOOL_INT_r23 1547 -#define _TO_BOOL_LIST_r02 1548 -#define _TO_BOOL_LIST_r12 1549 -#define _TO_BOOL_LIST_r23 1550 -#define _TO_BOOL_NONE_r01 1551 -#define _TO_BOOL_NONE_r11 1552 -#define _TO_BOOL_NONE_r22 1553 -#define _TO_BOOL_NONE_r33 1554 -#define _TO_BOOL_STR_r02 1555 -#define _TO_BOOL_STR_r12 1556 -#define _TO_BOOL_STR_r23 1557 -#define _TRACE_RECORD_r00 1558 -#define _UNARY_INVERT_r12 1559 -#define _UNARY_NEGATIVE_r12 1560 -#define _UNARY_NEGATIVE_FLOAT_INPLACE_r02 1561 -#define _UNARY_NEGATIVE_FLOAT_INPLACE_r12 1562 -#define _UNARY_NEGATIVE_FLOAT_INPLACE_r23 1563 -#define _UNARY_NOT_r01 1564 -#define _UNARY_NOT_r11 1565 -#define _UNARY_NOT_r22 1566 -#define _UNARY_NOT_r33 1567 -#define _UNPACK_EX_r10 1568 -#define _UNPACK_SEQUENCE_r10 1569 -#define _UNPACK_SEQUENCE_LIST_r10 1570 -#define _UNPACK_SEQUENCE_TUPLE_r10 1571 -#define _UNPACK_SEQUENCE_TWO_TUPLE_r12 1572 -#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r03 1573 -#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r13 1574 -#define _UNPACK_SEQUENCE_UNIQUE_TUPLE_r10 1575 -#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r02 1576 -#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r12 1577 -#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r23 1578 -#define _WITH_EXCEPT_START_r33 1579 -#define _YIELD_VALUE_r11 1580 -#define MAX_UOP_REGS_ID 1580 +#define _YIELD_VALUE 633 +#define MAX_UOP_ID 633 +#define _BINARY_OP_r23 634 +#define _BINARY_OP_ADD_FLOAT_r03 635 +#define _BINARY_OP_ADD_FLOAT_r13 636 +#define _BINARY_OP_ADD_FLOAT_r23 637 +#define _BINARY_OP_ADD_FLOAT_INPLACE_r03 638 +#define _BINARY_OP_ADD_FLOAT_INPLACE_r13 639 +#define _BINARY_OP_ADD_FLOAT_INPLACE_r23 640 +#define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT_r03 641 +#define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT_r13 642 +#define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT_r23 643 +#define _BINARY_OP_ADD_INT_r03 644 +#define _BINARY_OP_ADD_INT_r13 645 +#define _BINARY_OP_ADD_INT_r23 646 +#define _BINARY_OP_ADD_INT_INPLACE_r03 647 +#define _BINARY_OP_ADD_INT_INPLACE_r13 648 +#define _BINARY_OP_ADD_INT_INPLACE_r23 649 +#define _BINARY_OP_ADD_INT_INPLACE_RIGHT_r03 650 +#define _BINARY_OP_ADD_INT_INPLACE_RIGHT_r13 651 +#define _BINARY_OP_ADD_INT_INPLACE_RIGHT_r23 652 +#define _BINARY_OP_ADD_UNICODE_r03 653 +#define _BINARY_OP_ADD_UNICODE_r13 654 +#define _BINARY_OP_ADD_UNICODE_r23 655 +#define _BINARY_OP_EXTEND_r23 656 +#define _BINARY_OP_INPLACE_ADD_UNICODE_r21 657 +#define _BINARY_OP_MULTIPLY_FLOAT_r03 658 +#define _BINARY_OP_MULTIPLY_FLOAT_r13 659 +#define _BINARY_OP_MULTIPLY_FLOAT_r23 660 +#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_r03 661 +#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_r13 662 +#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_r23 663 +#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT_r03 664 +#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT_r13 665 +#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT_r23 666 +#define _BINARY_OP_MULTIPLY_INT_r03 667 +#define _BINARY_OP_MULTIPLY_INT_r13 668 +#define _BINARY_OP_MULTIPLY_INT_r23 669 +#define _BINARY_OP_MULTIPLY_INT_INPLACE_r03 670 +#define _BINARY_OP_MULTIPLY_INT_INPLACE_r13 671 +#define _BINARY_OP_MULTIPLY_INT_INPLACE_r23 672 +#define _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r03 673 +#define _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r13 674 +#define _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r23 675 +#define _BINARY_OP_SUBSCR_CHECK_FUNC_r23 676 +#define _BINARY_OP_SUBSCR_DICT_r23 677 +#define _BINARY_OP_SUBSCR_DICT_KNOWN_HASH_r23 678 +#define _BINARY_OP_SUBSCR_INIT_CALL_r01 679 +#define _BINARY_OP_SUBSCR_INIT_CALL_r11 680 +#define _BINARY_OP_SUBSCR_INIT_CALL_r21 681 +#define _BINARY_OP_SUBSCR_INIT_CALL_r31 682 +#define _BINARY_OP_SUBSCR_LIST_INT_r23 683 +#define _BINARY_OP_SUBSCR_LIST_SLICE_r23 684 +#define _BINARY_OP_SUBSCR_STR_INT_r23 685 +#define _BINARY_OP_SUBSCR_TUPLE_INT_r03 686 +#define _BINARY_OP_SUBSCR_TUPLE_INT_r13 687 +#define _BINARY_OP_SUBSCR_TUPLE_INT_r23 688 +#define _BINARY_OP_SUBSCR_USTR_INT_r23 689 +#define _BINARY_OP_SUBTRACT_FLOAT_r03 690 +#define _BINARY_OP_SUBTRACT_FLOAT_r13 691 +#define _BINARY_OP_SUBTRACT_FLOAT_r23 692 +#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_r03 693 +#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_r13 694 +#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_r23 695 +#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT_r03 696 +#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT_r13 697 +#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT_r23 698 +#define _BINARY_OP_SUBTRACT_INT_r03 699 +#define _BINARY_OP_SUBTRACT_INT_r13 700 +#define _BINARY_OP_SUBTRACT_INT_r23 701 +#define _BINARY_OP_SUBTRACT_INT_INPLACE_r03 702 +#define _BINARY_OP_SUBTRACT_INT_INPLACE_r13 703 +#define _BINARY_OP_SUBTRACT_INT_INPLACE_r23 704 +#define _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r03 705 +#define _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r13 706 +#define _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r23 707 +#define _BINARY_SLICE_r31 708 +#define _BUILD_INTERPOLATION_r01 709 +#define _BUILD_LIST_r01 710 +#define _BUILD_MAP_r01 711 +#define _BUILD_SET_r01 712 +#define _BUILD_SLICE_r01 713 +#define _BUILD_STRING_r01 714 +#define _BUILD_TEMPLATE_r21 715 +#define _BUILD_TUPLE_r01 716 +#define _CALL_BUILTIN_CLASS_r01 717 +#define _CALL_BUILTIN_FAST_r01 718 +#define _CALL_BUILTIN_FAST_WITH_KEYWORDS_r01 719 +#define _CALL_BUILTIN_O_r03 720 +#define _CALL_FUNCTION_EX_NON_PY_GENERAL_r31 721 +#define _CALL_INTRINSIC_1_r12 722 +#define _CALL_INTRINSIC_2_r23 723 +#define _CALL_ISINSTANCE_r31 724 +#define _CALL_KW_NON_PY_r11 725 +#define _CALL_LEN_r33 726 +#define _CALL_LIST_APPEND_r03 727 +#define _CALL_LIST_APPEND_r13 728 +#define _CALL_LIST_APPEND_r23 729 +#define _CALL_LIST_APPEND_r33 730 +#define _CALL_METHOD_DESCRIPTOR_FAST_r01 731 +#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_r01 732 +#define _CALL_METHOD_DESCRIPTOR_NOARGS_r01 733 +#define _CALL_METHOD_DESCRIPTOR_O_r03 734 +#define _CALL_NON_PY_GENERAL_r01 735 +#define _CALL_STR_1_r32 736 +#define _CALL_TUPLE_1_r32 737 +#define _CALL_TYPE_1_r02 738 +#define _CALL_TYPE_1_r12 739 +#define _CALL_TYPE_1_r22 740 +#define _CALL_TYPE_1_r32 741 +#define _CHECK_AND_ALLOCATE_OBJECT_r00 742 +#define _CHECK_ATTR_CLASS_r01 743 +#define _CHECK_ATTR_CLASS_r11 744 +#define _CHECK_ATTR_CLASS_r22 745 +#define _CHECK_ATTR_CLASS_r33 746 +#define _CHECK_ATTR_METHOD_LAZY_DICT_r01 747 +#define _CHECK_ATTR_METHOD_LAZY_DICT_r11 748 +#define _CHECK_ATTR_METHOD_LAZY_DICT_r22 749 +#define _CHECK_ATTR_METHOD_LAZY_DICT_r33 750 +#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS_r00 751 +#define _CHECK_EG_MATCH_r22 752 +#define _CHECK_EXC_MATCH_r22 753 +#define _CHECK_FUNCTION_EXACT_ARGS_r00 754 +#define _CHECK_FUNCTION_VERSION_r00 755 +#define _CHECK_FUNCTION_VERSION_INLINE_r00 756 +#define _CHECK_FUNCTION_VERSION_INLINE_r11 757 +#define _CHECK_FUNCTION_VERSION_INLINE_r22 758 +#define _CHECK_FUNCTION_VERSION_INLINE_r33 759 +#define _CHECK_FUNCTION_VERSION_KW_r11 760 +#define _CHECK_IS_NOT_PY_CALLABLE_r00 761 +#define _CHECK_IS_NOT_PY_CALLABLE_EX_r03 762 +#define _CHECK_IS_NOT_PY_CALLABLE_EX_r13 763 +#define _CHECK_IS_NOT_PY_CALLABLE_EX_r23 764 +#define _CHECK_IS_NOT_PY_CALLABLE_EX_r33 765 +#define _CHECK_IS_NOT_PY_CALLABLE_KW_r11 766 +#define _CHECK_IS_PY_CALLABLE_EX_r03 767 +#define _CHECK_IS_PY_CALLABLE_EX_r13 768 +#define _CHECK_IS_PY_CALLABLE_EX_r23 769 +#define _CHECK_IS_PY_CALLABLE_EX_r33 770 +#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r01 771 +#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r11 772 +#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r22 773 +#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r33 774 +#define _CHECK_METHOD_VERSION_r00 775 +#define _CHECK_METHOD_VERSION_KW_r11 776 +#define _CHECK_PEP_523_r00 777 +#define _CHECK_PEP_523_r11 778 +#define _CHECK_PEP_523_r22 779 +#define _CHECK_PEP_523_r33 780 +#define _CHECK_PERIODIC_r00 781 +#define _CHECK_PERIODIC_AT_END_r00 782 +#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM_r00 783 +#define _CHECK_RECURSION_REMAINING_r00 784 +#define _CHECK_RECURSION_REMAINING_r11 785 +#define _CHECK_RECURSION_REMAINING_r22 786 +#define _CHECK_RECURSION_REMAINING_r33 787 +#define _CHECK_STACK_SPACE_r00 788 +#define _CHECK_STACK_SPACE_OPERAND_r00 789 +#define _CHECK_STACK_SPACE_OPERAND_r11 790 +#define _CHECK_STACK_SPACE_OPERAND_r22 791 +#define _CHECK_STACK_SPACE_OPERAND_r33 792 +#define _CHECK_VALIDITY_r00 793 +#define _CHECK_VALIDITY_r11 794 +#define _CHECK_VALIDITY_r22 795 +#define _CHECK_VALIDITY_r33 796 +#define _COLD_DYNAMIC_EXIT_r00 797 +#define _COLD_EXIT_r00 798 +#define _COMPARE_OP_r21 799 +#define _COMPARE_OP_FLOAT_r03 800 +#define _COMPARE_OP_FLOAT_r13 801 +#define _COMPARE_OP_FLOAT_r23 802 +#define _COMPARE_OP_INT_r23 803 +#define _COMPARE_OP_STR_r23 804 +#define _CONTAINS_OP_r23 805 +#define _CONTAINS_OP_DICT_r23 806 +#define _CONTAINS_OP_SET_r23 807 +#define _CONVERT_VALUE_r11 808 +#define _COPY_r01 809 +#define _COPY_1_r02 810 +#define _COPY_1_r12 811 +#define _COPY_1_r23 812 +#define _COPY_2_r03 813 +#define _COPY_2_r13 814 +#define _COPY_2_r23 815 +#define _COPY_3_r03 816 +#define _COPY_3_r13 817 +#define _COPY_3_r23 818 +#define _COPY_3_r33 819 +#define _COPY_FREE_VARS_r00 820 +#define _COPY_FREE_VARS_r11 821 +#define _COPY_FREE_VARS_r22 822 +#define _COPY_FREE_VARS_r33 823 +#define _CREATE_INIT_FRAME_r01 824 +#define _DELETE_ATTR_r10 825 +#define _DELETE_DEREF_r00 826 +#define _DELETE_FAST_r00 827 +#define _DELETE_GLOBAL_r00 828 +#define _DELETE_NAME_r00 829 +#define _DELETE_SUBSCR_r20 830 +#define _DEOPT_r00 831 +#define _DEOPT_r10 832 +#define _DEOPT_r20 833 +#define _DEOPT_r30 834 +#define _DICT_MERGE_r11 835 +#define _DICT_UPDATE_r11 836 +#define _DO_CALL_r01 837 +#define _DO_CALL_FUNCTION_EX_r31 838 +#define _DO_CALL_KW_r11 839 +#define _DYNAMIC_EXIT_r00 840 +#define _DYNAMIC_EXIT_r10 841 +#define _DYNAMIC_EXIT_r20 842 +#define _DYNAMIC_EXIT_r30 843 +#define _END_FOR_r10 844 +#define _END_SEND_r31 845 +#define _ERROR_POP_N_r00 846 +#define _EXIT_INIT_CHECK_r10 847 +#define _EXIT_TRACE_r00 848 +#define _EXIT_TRACE_r10 849 +#define _EXIT_TRACE_r20 850 +#define _EXIT_TRACE_r30 851 +#define _EXPAND_METHOD_r00 852 +#define _EXPAND_METHOD_KW_r11 853 +#define _FATAL_ERROR_r00 854 +#define _FATAL_ERROR_r11 855 +#define _FATAL_ERROR_r22 856 +#define _FATAL_ERROR_r33 857 +#define _FORMAT_SIMPLE_r11 858 +#define _FORMAT_WITH_SPEC_r21 859 +#define _FOR_ITER_r23 860 +#define _FOR_ITER_GEN_FRAME_r03 861 +#define _FOR_ITER_GEN_FRAME_r13 862 +#define _FOR_ITER_GEN_FRAME_r23 863 +#define _FOR_ITER_TIER_TWO_r23 864 +#define _GET_AITER_r11 865 +#define _GET_ANEXT_r12 866 +#define _GET_AWAITABLE_r11 867 +#define _GET_ITER_r12 868 +#define _GET_LEN_r12 869 +#define _GUARD_BINARY_OP_EXTEND_r22 870 +#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r02 871 +#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r12 872 +#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r22 873 +#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r33 874 +#define _GUARD_BIT_IS_SET_POP_r00 875 +#define _GUARD_BIT_IS_SET_POP_r10 876 +#define _GUARD_BIT_IS_SET_POP_r21 877 +#define _GUARD_BIT_IS_SET_POP_r32 878 +#define _GUARD_BIT_IS_SET_POP_4_r00 879 +#define _GUARD_BIT_IS_SET_POP_4_r10 880 +#define _GUARD_BIT_IS_SET_POP_4_r21 881 +#define _GUARD_BIT_IS_SET_POP_4_r32 882 +#define _GUARD_BIT_IS_SET_POP_5_r00 883 +#define _GUARD_BIT_IS_SET_POP_5_r10 884 +#define _GUARD_BIT_IS_SET_POP_5_r21 885 +#define _GUARD_BIT_IS_SET_POP_5_r32 886 +#define _GUARD_BIT_IS_SET_POP_6_r00 887 +#define _GUARD_BIT_IS_SET_POP_6_r10 888 +#define _GUARD_BIT_IS_SET_POP_6_r21 889 +#define _GUARD_BIT_IS_SET_POP_6_r32 890 +#define _GUARD_BIT_IS_SET_POP_7_r00 891 +#define _GUARD_BIT_IS_SET_POP_7_r10 892 +#define _GUARD_BIT_IS_SET_POP_7_r21 893 +#define _GUARD_BIT_IS_SET_POP_7_r32 894 +#define _GUARD_BIT_IS_UNSET_POP_r00 895 +#define _GUARD_BIT_IS_UNSET_POP_r10 896 +#define _GUARD_BIT_IS_UNSET_POP_r21 897 +#define _GUARD_BIT_IS_UNSET_POP_r32 898 +#define _GUARD_BIT_IS_UNSET_POP_4_r00 899 +#define _GUARD_BIT_IS_UNSET_POP_4_r10 900 +#define _GUARD_BIT_IS_UNSET_POP_4_r21 901 +#define _GUARD_BIT_IS_UNSET_POP_4_r32 902 +#define _GUARD_BIT_IS_UNSET_POP_5_r00 903 +#define _GUARD_BIT_IS_UNSET_POP_5_r10 904 +#define _GUARD_BIT_IS_UNSET_POP_5_r21 905 +#define _GUARD_BIT_IS_UNSET_POP_5_r32 906 +#define _GUARD_BIT_IS_UNSET_POP_6_r00 907 +#define _GUARD_BIT_IS_UNSET_POP_6_r10 908 +#define _GUARD_BIT_IS_UNSET_POP_6_r21 909 +#define _GUARD_BIT_IS_UNSET_POP_6_r32 910 +#define _GUARD_BIT_IS_UNSET_POP_7_r00 911 +#define _GUARD_BIT_IS_UNSET_POP_7_r10 912 +#define _GUARD_BIT_IS_UNSET_POP_7_r21 913 +#define _GUARD_BIT_IS_UNSET_POP_7_r32 914 +#define _GUARD_CALLABLE_BUILTIN_FAST_r00 915 +#define _GUARD_CALLABLE_BUILTIN_FAST_WITH_KEYWORDS_r00 916 +#define _GUARD_CALLABLE_BUILTIN_O_r00 917 +#define _GUARD_CALLABLE_ISINSTANCE_r03 918 +#define _GUARD_CALLABLE_ISINSTANCE_r13 919 +#define _GUARD_CALLABLE_ISINSTANCE_r23 920 +#define _GUARD_CALLABLE_ISINSTANCE_r33 921 +#define _GUARD_CALLABLE_LEN_r03 922 +#define _GUARD_CALLABLE_LEN_r13 923 +#define _GUARD_CALLABLE_LEN_r23 924 +#define _GUARD_CALLABLE_LEN_r33 925 +#define _GUARD_CALLABLE_LIST_APPEND_r03 926 +#define _GUARD_CALLABLE_LIST_APPEND_r13 927 +#define _GUARD_CALLABLE_LIST_APPEND_r23 928 +#define _GUARD_CALLABLE_LIST_APPEND_r33 929 +#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_r00 930 +#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_r00 931 +#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_NOARGS_r00 932 +#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_O_r00 933 +#define _GUARD_CALLABLE_STR_1_r03 934 +#define _GUARD_CALLABLE_STR_1_r13 935 +#define _GUARD_CALLABLE_STR_1_r23 936 +#define _GUARD_CALLABLE_STR_1_r33 937 +#define _GUARD_CALLABLE_TUPLE_1_r03 938 +#define _GUARD_CALLABLE_TUPLE_1_r13 939 +#define _GUARD_CALLABLE_TUPLE_1_r23 940 +#define _GUARD_CALLABLE_TUPLE_1_r33 941 +#define _GUARD_CALLABLE_TYPE_1_r03 942 +#define _GUARD_CALLABLE_TYPE_1_r13 943 +#define _GUARD_CALLABLE_TYPE_1_r23 944 +#define _GUARD_CALLABLE_TYPE_1_r33 945 +#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r00 946 +#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r11 947 +#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r22 948 +#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r33 949 +#define _GUARD_CODE_VERSION_RETURN_VALUE_r00 950 +#define _GUARD_CODE_VERSION_RETURN_VALUE_r11 951 +#define _GUARD_CODE_VERSION_RETURN_VALUE_r22 952 +#define _GUARD_CODE_VERSION_RETURN_VALUE_r33 953 +#define _GUARD_CODE_VERSION_YIELD_VALUE_r00 954 +#define _GUARD_CODE_VERSION_YIELD_VALUE_r11 955 +#define _GUARD_CODE_VERSION_YIELD_VALUE_r22 956 +#define _GUARD_CODE_VERSION_YIELD_VALUE_r33 957 +#define _GUARD_CODE_VERSION__PUSH_FRAME_r00 958 +#define _GUARD_CODE_VERSION__PUSH_FRAME_r11 959 +#define _GUARD_CODE_VERSION__PUSH_FRAME_r22 960 +#define _GUARD_CODE_VERSION__PUSH_FRAME_r33 961 +#define _GUARD_DORV_NO_DICT_r01 962 +#define _GUARD_DORV_NO_DICT_r11 963 +#define _GUARD_DORV_NO_DICT_r22 964 +#define _GUARD_DORV_NO_DICT_r33 965 +#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r01 966 +#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r11 967 +#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r22 968 +#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r33 969 +#define _GUARD_GLOBALS_VERSION_r00 970 +#define _GUARD_GLOBALS_VERSION_r11 971 +#define _GUARD_GLOBALS_VERSION_r22 972 +#define _GUARD_GLOBALS_VERSION_r33 973 +#define _GUARD_IP_RETURN_GENERATOR_r00 974 +#define _GUARD_IP_RETURN_GENERATOR_r11 975 +#define _GUARD_IP_RETURN_GENERATOR_r22 976 +#define _GUARD_IP_RETURN_GENERATOR_r33 977 +#define _GUARD_IP_RETURN_VALUE_r00 978 +#define _GUARD_IP_RETURN_VALUE_r11 979 +#define _GUARD_IP_RETURN_VALUE_r22 980 +#define _GUARD_IP_RETURN_VALUE_r33 981 +#define _GUARD_IP_YIELD_VALUE_r00 982 +#define _GUARD_IP_YIELD_VALUE_r11 983 +#define _GUARD_IP_YIELD_VALUE_r22 984 +#define _GUARD_IP_YIELD_VALUE_r33 985 +#define _GUARD_IP__PUSH_FRAME_r00 986 +#define _GUARD_IP__PUSH_FRAME_r11 987 +#define _GUARD_IP__PUSH_FRAME_r22 988 +#define _GUARD_IP__PUSH_FRAME_r33 989 +#define _GUARD_IS_FALSE_POP_r00 990 +#define _GUARD_IS_FALSE_POP_r10 991 +#define _GUARD_IS_FALSE_POP_r21 992 +#define _GUARD_IS_FALSE_POP_r32 993 +#define _GUARD_IS_NONE_POP_r00 994 +#define _GUARD_IS_NONE_POP_r10 995 +#define _GUARD_IS_NONE_POP_r21 996 +#define _GUARD_IS_NONE_POP_r32 997 +#define _GUARD_IS_NOT_NONE_POP_r10 998 +#define _GUARD_IS_TRUE_POP_r00 999 +#define _GUARD_IS_TRUE_POP_r10 1000 +#define _GUARD_IS_TRUE_POP_r21 1001 +#define _GUARD_IS_TRUE_POP_r32 1002 +#define _GUARD_KEYS_VERSION_r01 1003 +#define _GUARD_KEYS_VERSION_r11 1004 +#define _GUARD_KEYS_VERSION_r22 1005 +#define _GUARD_KEYS_VERSION_r33 1006 +#define _GUARD_NOS_ANY_DICT_r02 1007 +#define _GUARD_NOS_ANY_DICT_r12 1008 +#define _GUARD_NOS_ANY_DICT_r22 1009 +#define _GUARD_NOS_ANY_DICT_r33 1010 +#define _GUARD_NOS_COMPACT_ASCII_r02 1011 +#define _GUARD_NOS_COMPACT_ASCII_r12 1012 +#define _GUARD_NOS_COMPACT_ASCII_r22 1013 +#define _GUARD_NOS_COMPACT_ASCII_r33 1014 +#define _GUARD_NOS_DICT_r02 1015 +#define _GUARD_NOS_DICT_r12 1016 +#define _GUARD_NOS_DICT_r22 1017 +#define _GUARD_NOS_DICT_r33 1018 +#define _GUARD_NOS_FLOAT_r02 1019 +#define _GUARD_NOS_FLOAT_r12 1020 +#define _GUARD_NOS_FLOAT_r22 1021 +#define _GUARD_NOS_FLOAT_r33 1022 +#define _GUARD_NOS_INT_r02 1023 +#define _GUARD_NOS_INT_r12 1024 +#define _GUARD_NOS_INT_r22 1025 +#define _GUARD_NOS_INT_r33 1026 +#define _GUARD_NOS_LIST_r02 1027 +#define _GUARD_NOS_LIST_r12 1028 +#define _GUARD_NOS_LIST_r22 1029 +#define _GUARD_NOS_LIST_r33 1030 +#define _GUARD_NOS_NOT_NULL_r02 1031 +#define _GUARD_NOS_NOT_NULL_r12 1032 +#define _GUARD_NOS_NOT_NULL_r22 1033 +#define _GUARD_NOS_NOT_NULL_r33 1034 +#define _GUARD_NOS_NULL_r02 1035 +#define _GUARD_NOS_NULL_r12 1036 +#define _GUARD_NOS_NULL_r22 1037 +#define _GUARD_NOS_NULL_r33 1038 +#define _GUARD_NOS_OVERFLOWED_r02 1039 +#define _GUARD_NOS_OVERFLOWED_r12 1040 +#define _GUARD_NOS_OVERFLOWED_r22 1041 +#define _GUARD_NOS_OVERFLOWED_r33 1042 +#define _GUARD_NOS_TUPLE_r02 1043 +#define _GUARD_NOS_TUPLE_r12 1044 +#define _GUARD_NOS_TUPLE_r22 1045 +#define _GUARD_NOS_TUPLE_r33 1046 +#define _GUARD_NOS_UNICODE_r02 1047 +#define _GUARD_NOS_UNICODE_r12 1048 +#define _GUARD_NOS_UNICODE_r22 1049 +#define _GUARD_NOS_UNICODE_r33 1050 +#define _GUARD_NOT_EXHAUSTED_LIST_r02 1051 +#define _GUARD_NOT_EXHAUSTED_LIST_r12 1052 +#define _GUARD_NOT_EXHAUSTED_LIST_r22 1053 +#define _GUARD_NOT_EXHAUSTED_LIST_r33 1054 +#define _GUARD_NOT_EXHAUSTED_RANGE_r02 1055 +#define _GUARD_NOT_EXHAUSTED_RANGE_r12 1056 +#define _GUARD_NOT_EXHAUSTED_RANGE_r22 1057 +#define _GUARD_NOT_EXHAUSTED_RANGE_r33 1058 +#define _GUARD_NOT_EXHAUSTED_TUPLE_r02 1059 +#define _GUARD_NOT_EXHAUSTED_TUPLE_r12 1060 +#define _GUARD_NOT_EXHAUSTED_TUPLE_r22 1061 +#define _GUARD_NOT_EXHAUSTED_TUPLE_r33 1062 +#define _GUARD_THIRD_NULL_r03 1063 +#define _GUARD_THIRD_NULL_r13 1064 +#define _GUARD_THIRD_NULL_r23 1065 +#define _GUARD_THIRD_NULL_r33 1066 +#define _GUARD_TOS_ANY_DICT_r01 1067 +#define _GUARD_TOS_ANY_DICT_r11 1068 +#define _GUARD_TOS_ANY_DICT_r22 1069 +#define _GUARD_TOS_ANY_DICT_r33 1070 +#define _GUARD_TOS_ANY_SET_r01 1071 +#define _GUARD_TOS_ANY_SET_r11 1072 +#define _GUARD_TOS_ANY_SET_r22 1073 +#define _GUARD_TOS_ANY_SET_r33 1074 +#define _GUARD_TOS_DICT_r01 1075 +#define _GUARD_TOS_DICT_r11 1076 +#define _GUARD_TOS_DICT_r22 1077 +#define _GUARD_TOS_DICT_r33 1078 +#define _GUARD_TOS_FLOAT_r01 1079 +#define _GUARD_TOS_FLOAT_r11 1080 +#define _GUARD_TOS_FLOAT_r22 1081 +#define _GUARD_TOS_FLOAT_r33 1082 +#define _GUARD_TOS_FROZENDICT_r01 1083 +#define _GUARD_TOS_FROZENDICT_r11 1084 +#define _GUARD_TOS_FROZENDICT_r22 1085 +#define _GUARD_TOS_FROZENDICT_r33 1086 +#define _GUARD_TOS_FROZENSET_r01 1087 +#define _GUARD_TOS_FROZENSET_r11 1088 +#define _GUARD_TOS_FROZENSET_r22 1089 +#define _GUARD_TOS_FROZENSET_r33 1090 +#define _GUARD_TOS_INT_r01 1091 +#define _GUARD_TOS_INT_r11 1092 +#define _GUARD_TOS_INT_r22 1093 +#define _GUARD_TOS_INT_r33 1094 +#define _GUARD_TOS_LIST_r01 1095 +#define _GUARD_TOS_LIST_r11 1096 +#define _GUARD_TOS_LIST_r22 1097 +#define _GUARD_TOS_LIST_r33 1098 +#define _GUARD_TOS_OVERFLOWED_r01 1099 +#define _GUARD_TOS_OVERFLOWED_r11 1100 +#define _GUARD_TOS_OVERFLOWED_r22 1101 +#define _GUARD_TOS_OVERFLOWED_r33 1102 +#define _GUARD_TOS_SET_r01 1103 +#define _GUARD_TOS_SET_r11 1104 +#define _GUARD_TOS_SET_r22 1105 +#define _GUARD_TOS_SET_r33 1106 +#define _GUARD_TOS_SLICE_r01 1107 +#define _GUARD_TOS_SLICE_r11 1108 +#define _GUARD_TOS_SLICE_r22 1109 +#define _GUARD_TOS_SLICE_r33 1110 +#define _GUARD_TOS_TUPLE_r01 1111 +#define _GUARD_TOS_TUPLE_r11 1112 +#define _GUARD_TOS_TUPLE_r22 1113 +#define _GUARD_TOS_TUPLE_r33 1114 +#define _GUARD_TOS_UNICODE_r01 1115 +#define _GUARD_TOS_UNICODE_r11 1116 +#define _GUARD_TOS_UNICODE_r22 1117 +#define _GUARD_TOS_UNICODE_r33 1118 +#define _GUARD_TYPE_VERSION_r01 1119 +#define _GUARD_TYPE_VERSION_r11 1120 +#define _GUARD_TYPE_VERSION_r22 1121 +#define _GUARD_TYPE_VERSION_r33 1122 +#define _GUARD_TYPE_VERSION_LOCKED_r01 1123 +#define _GUARD_TYPE_VERSION_LOCKED_r11 1124 +#define _GUARD_TYPE_VERSION_LOCKED_r22 1125 +#define _GUARD_TYPE_VERSION_LOCKED_r33 1126 +#define _HANDLE_PENDING_AND_DEOPT_r00 1127 +#define _HANDLE_PENDING_AND_DEOPT_r10 1128 +#define _HANDLE_PENDING_AND_DEOPT_r20 1129 +#define _HANDLE_PENDING_AND_DEOPT_r30 1130 +#define _IMPORT_FROM_r12 1131 +#define _IMPORT_NAME_r21 1132 +#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS_r00 1133 +#define _INIT_CALL_PY_EXACT_ARGS_r01 1134 +#define _INIT_CALL_PY_EXACT_ARGS_0_r01 1135 +#define _INIT_CALL_PY_EXACT_ARGS_1_r01 1136 +#define _INIT_CALL_PY_EXACT_ARGS_2_r01 1137 +#define _INIT_CALL_PY_EXACT_ARGS_3_r01 1138 +#define _INIT_CALL_PY_EXACT_ARGS_4_r01 1139 +#define _INSERT_1_LOAD_CONST_INLINE_r02 1140 +#define _INSERT_1_LOAD_CONST_INLINE_r12 1141 +#define _INSERT_1_LOAD_CONST_INLINE_r23 1142 +#define _INSERT_1_LOAD_CONST_INLINE_BORROW_r02 1143 +#define _INSERT_1_LOAD_CONST_INLINE_BORROW_r12 1144 +#define _INSERT_1_LOAD_CONST_INLINE_BORROW_r23 1145 +#define _INSERT_2_LOAD_CONST_INLINE_BORROW_r03 1146 +#define _INSERT_2_LOAD_CONST_INLINE_BORROW_r13 1147 +#define _INSERT_2_LOAD_CONST_INLINE_BORROW_r23 1148 +#define _INSERT_NULL_r10 1149 +#define _INSTRUMENTED_FOR_ITER_r23 1150 +#define _INSTRUMENTED_INSTRUCTION_r00 1151 +#define _INSTRUMENTED_JUMP_FORWARD_r00 1152 +#define _INSTRUMENTED_JUMP_FORWARD_r11 1153 +#define _INSTRUMENTED_JUMP_FORWARD_r22 1154 +#define _INSTRUMENTED_JUMP_FORWARD_r33 1155 +#define _INSTRUMENTED_LINE_r00 1156 +#define _INSTRUMENTED_NOT_TAKEN_r00 1157 +#define _INSTRUMENTED_NOT_TAKEN_r11 1158 +#define _INSTRUMENTED_NOT_TAKEN_r22 1159 +#define _INSTRUMENTED_NOT_TAKEN_r33 1160 +#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r00 1161 +#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r10 1162 +#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r21 1163 +#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r32 1164 +#define _INSTRUMENTED_POP_JUMP_IF_NONE_r10 1165 +#define _INSTRUMENTED_POP_JUMP_IF_NOT_NONE_r10 1166 +#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r00 1167 +#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r10 1168 +#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r21 1169 +#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r32 1170 +#define _IS_NONE_r11 1171 +#define _IS_OP_r03 1172 +#define _IS_OP_r13 1173 +#define _IS_OP_r23 1174 +#define _ITER_CHECK_LIST_r02 1175 +#define _ITER_CHECK_LIST_r12 1176 +#define _ITER_CHECK_LIST_r22 1177 +#define _ITER_CHECK_LIST_r33 1178 +#define _ITER_CHECK_RANGE_r02 1179 +#define _ITER_CHECK_RANGE_r12 1180 +#define _ITER_CHECK_RANGE_r22 1181 +#define _ITER_CHECK_RANGE_r33 1182 +#define _ITER_CHECK_TUPLE_r02 1183 +#define _ITER_CHECK_TUPLE_r12 1184 +#define _ITER_CHECK_TUPLE_r22 1185 +#define _ITER_CHECK_TUPLE_r33 1186 +#define _ITER_JUMP_LIST_r02 1187 +#define _ITER_JUMP_LIST_r12 1188 +#define _ITER_JUMP_LIST_r22 1189 +#define _ITER_JUMP_LIST_r33 1190 +#define _ITER_JUMP_RANGE_r02 1191 +#define _ITER_JUMP_RANGE_r12 1192 +#define _ITER_JUMP_RANGE_r22 1193 +#define _ITER_JUMP_RANGE_r33 1194 +#define _ITER_JUMP_TUPLE_r02 1195 +#define _ITER_JUMP_TUPLE_r12 1196 +#define _ITER_JUMP_TUPLE_r22 1197 +#define _ITER_JUMP_TUPLE_r33 1198 +#define _ITER_NEXT_LIST_r23 1199 +#define _ITER_NEXT_LIST_TIER_TWO_r23 1200 +#define _ITER_NEXT_RANGE_r03 1201 +#define _ITER_NEXT_RANGE_r13 1202 +#define _ITER_NEXT_RANGE_r23 1203 +#define _ITER_NEXT_TUPLE_r03 1204 +#define _ITER_NEXT_TUPLE_r13 1205 +#define _ITER_NEXT_TUPLE_r23 1206 +#define _JUMP_BACKWARD_NO_INTERRUPT_r00 1207 +#define _JUMP_BACKWARD_NO_INTERRUPT_r11 1208 +#define _JUMP_BACKWARD_NO_INTERRUPT_r22 1209 +#define _JUMP_BACKWARD_NO_INTERRUPT_r33 1210 +#define _JUMP_TO_TOP_r00 1211 +#define _LIST_APPEND_r10 1212 +#define _LIST_EXTEND_r11 1213 +#define _LOAD_ATTR_r10 1214 +#define _LOAD_ATTR_CLASS_r11 1215 +#define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN_r11 1216 +#define _LOAD_ATTR_INSTANCE_VALUE_r02 1217 +#define _LOAD_ATTR_INSTANCE_VALUE_r12 1218 +#define _LOAD_ATTR_INSTANCE_VALUE_r23 1219 +#define _LOAD_ATTR_METHOD_LAZY_DICT_r02 1220 +#define _LOAD_ATTR_METHOD_LAZY_DICT_r12 1221 +#define _LOAD_ATTR_METHOD_LAZY_DICT_r23 1222 +#define _LOAD_ATTR_METHOD_NO_DICT_r02 1223 +#define _LOAD_ATTR_METHOD_NO_DICT_r12 1224 +#define _LOAD_ATTR_METHOD_NO_DICT_r23 1225 +#define _LOAD_ATTR_METHOD_WITH_VALUES_r02 1226 +#define _LOAD_ATTR_METHOD_WITH_VALUES_r12 1227 +#define _LOAD_ATTR_METHOD_WITH_VALUES_r23 1228 +#define _LOAD_ATTR_MODULE_r12 1229 +#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT_r11 1230 +#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES_r11 1231 +#define _LOAD_ATTR_PROPERTY_FRAME_r11 1232 +#define _LOAD_ATTR_SLOT_r02 1233 +#define _LOAD_ATTR_SLOT_r12 1234 +#define _LOAD_ATTR_SLOT_r23 1235 +#define _LOAD_ATTR_WITH_HINT_r12 1236 +#define _LOAD_BUILD_CLASS_r01 1237 +#define _LOAD_BYTECODE_r00 1238 +#define _LOAD_COMMON_CONSTANT_r01 1239 +#define _LOAD_COMMON_CONSTANT_r12 1240 +#define _LOAD_COMMON_CONSTANT_r23 1241 +#define _LOAD_CONST_r01 1242 +#define _LOAD_CONST_r12 1243 +#define _LOAD_CONST_r23 1244 +#define _LOAD_CONST_INLINE_r01 1245 +#define _LOAD_CONST_INLINE_r12 1246 +#define _LOAD_CONST_INLINE_r23 1247 +#define _LOAD_CONST_INLINE_BORROW_r01 1248 +#define _LOAD_CONST_INLINE_BORROW_r12 1249 +#define _LOAD_CONST_INLINE_BORROW_r23 1250 +#define _LOAD_CONST_UNDER_INLINE_r02 1251 +#define _LOAD_CONST_UNDER_INLINE_r12 1252 +#define _LOAD_CONST_UNDER_INLINE_r23 1253 +#define _LOAD_CONST_UNDER_INLINE_BORROW_r02 1254 +#define _LOAD_CONST_UNDER_INLINE_BORROW_r12 1255 +#define _LOAD_CONST_UNDER_INLINE_BORROW_r23 1256 +#define _LOAD_DEREF_r01 1257 +#define _LOAD_FAST_r01 1258 +#define _LOAD_FAST_r12 1259 +#define _LOAD_FAST_r23 1260 +#define _LOAD_FAST_0_r01 1261 +#define _LOAD_FAST_0_r12 1262 +#define _LOAD_FAST_0_r23 1263 +#define _LOAD_FAST_1_r01 1264 +#define _LOAD_FAST_1_r12 1265 +#define _LOAD_FAST_1_r23 1266 +#define _LOAD_FAST_2_r01 1267 +#define _LOAD_FAST_2_r12 1268 +#define _LOAD_FAST_2_r23 1269 +#define _LOAD_FAST_3_r01 1270 +#define _LOAD_FAST_3_r12 1271 +#define _LOAD_FAST_3_r23 1272 +#define _LOAD_FAST_4_r01 1273 +#define _LOAD_FAST_4_r12 1274 +#define _LOAD_FAST_4_r23 1275 +#define _LOAD_FAST_5_r01 1276 +#define _LOAD_FAST_5_r12 1277 +#define _LOAD_FAST_5_r23 1278 +#define _LOAD_FAST_6_r01 1279 +#define _LOAD_FAST_6_r12 1280 +#define _LOAD_FAST_6_r23 1281 +#define _LOAD_FAST_7_r01 1282 +#define _LOAD_FAST_7_r12 1283 +#define _LOAD_FAST_7_r23 1284 +#define _LOAD_FAST_AND_CLEAR_r01 1285 +#define _LOAD_FAST_AND_CLEAR_r12 1286 +#define _LOAD_FAST_AND_CLEAR_r23 1287 +#define _LOAD_FAST_BORROW_r01 1288 +#define _LOAD_FAST_BORROW_r12 1289 +#define _LOAD_FAST_BORROW_r23 1290 +#define _LOAD_FAST_BORROW_0_r01 1291 +#define _LOAD_FAST_BORROW_0_r12 1292 +#define _LOAD_FAST_BORROW_0_r23 1293 +#define _LOAD_FAST_BORROW_1_r01 1294 +#define _LOAD_FAST_BORROW_1_r12 1295 +#define _LOAD_FAST_BORROW_1_r23 1296 +#define _LOAD_FAST_BORROW_2_r01 1297 +#define _LOAD_FAST_BORROW_2_r12 1298 +#define _LOAD_FAST_BORROW_2_r23 1299 +#define _LOAD_FAST_BORROW_3_r01 1300 +#define _LOAD_FAST_BORROW_3_r12 1301 +#define _LOAD_FAST_BORROW_3_r23 1302 +#define _LOAD_FAST_BORROW_4_r01 1303 +#define _LOAD_FAST_BORROW_4_r12 1304 +#define _LOAD_FAST_BORROW_4_r23 1305 +#define _LOAD_FAST_BORROW_5_r01 1306 +#define _LOAD_FAST_BORROW_5_r12 1307 +#define _LOAD_FAST_BORROW_5_r23 1308 +#define _LOAD_FAST_BORROW_6_r01 1309 +#define _LOAD_FAST_BORROW_6_r12 1310 +#define _LOAD_FAST_BORROW_6_r23 1311 +#define _LOAD_FAST_BORROW_7_r01 1312 +#define _LOAD_FAST_BORROW_7_r12 1313 +#define _LOAD_FAST_BORROW_7_r23 1314 +#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r02 1315 +#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r13 1316 +#define _LOAD_FAST_CHECK_r01 1317 +#define _LOAD_FAST_CHECK_r12 1318 +#define _LOAD_FAST_CHECK_r23 1319 +#define _LOAD_FAST_LOAD_FAST_r02 1320 +#define _LOAD_FAST_LOAD_FAST_r13 1321 +#define _LOAD_FROM_DICT_OR_DEREF_r11 1322 +#define _LOAD_FROM_DICT_OR_GLOBALS_r11 1323 +#define _LOAD_GLOBAL_r00 1324 +#define _LOAD_GLOBAL_BUILTINS_r01 1325 +#define _LOAD_GLOBAL_MODULE_r01 1326 +#define _LOAD_LOCALS_r01 1327 +#define _LOAD_LOCALS_r12 1328 +#define _LOAD_LOCALS_r23 1329 +#define _LOAD_NAME_r01 1330 +#define _LOAD_SMALL_INT_r01 1331 +#define _LOAD_SMALL_INT_r12 1332 +#define _LOAD_SMALL_INT_r23 1333 +#define _LOAD_SMALL_INT_0_r01 1334 +#define _LOAD_SMALL_INT_0_r12 1335 +#define _LOAD_SMALL_INT_0_r23 1336 +#define _LOAD_SMALL_INT_1_r01 1337 +#define _LOAD_SMALL_INT_1_r12 1338 +#define _LOAD_SMALL_INT_1_r23 1339 +#define _LOAD_SMALL_INT_2_r01 1340 +#define _LOAD_SMALL_INT_2_r12 1341 +#define _LOAD_SMALL_INT_2_r23 1342 +#define _LOAD_SMALL_INT_3_r01 1343 +#define _LOAD_SMALL_INT_3_r12 1344 +#define _LOAD_SMALL_INT_3_r23 1345 +#define _LOAD_SPECIAL_r00 1346 +#define _LOAD_SUPER_ATTR_ATTR_r31 1347 +#define _LOAD_SUPER_ATTR_METHOD_r32 1348 +#define _LOCK_OBJECT_r01 1349 +#define _LOCK_OBJECT_r11 1350 +#define _LOCK_OBJECT_r22 1351 +#define _LOCK_OBJECT_r33 1352 +#define _MAKE_CALLARGS_A_TUPLE_r33 1353 +#define _MAKE_CELL_r00 1354 +#define _MAKE_FUNCTION_r11 1355 +#define _MAKE_HEAP_SAFE_r01 1356 +#define _MAKE_HEAP_SAFE_r11 1357 +#define _MAKE_HEAP_SAFE_r22 1358 +#define _MAKE_HEAP_SAFE_r33 1359 +#define _MAKE_WARM_r00 1360 +#define _MAKE_WARM_r11 1361 +#define _MAKE_WARM_r22 1362 +#define _MAKE_WARM_r33 1363 +#define _MAP_ADD_r20 1364 +#define _MATCH_CLASS_r33 1365 +#define _MATCH_KEYS_r23 1366 +#define _MATCH_MAPPING_r02 1367 +#define _MATCH_MAPPING_r12 1368 +#define _MATCH_MAPPING_r23 1369 +#define _MATCH_SEQUENCE_r02 1370 +#define _MATCH_SEQUENCE_r12 1371 +#define _MATCH_SEQUENCE_r23 1372 +#define _MAYBE_EXPAND_METHOD_r00 1373 +#define _MAYBE_EXPAND_METHOD_KW_r11 1374 +#define _MONITOR_CALL_r00 1375 +#define _MONITOR_CALL_KW_r11 1376 +#define _MONITOR_JUMP_BACKWARD_r00 1377 +#define _MONITOR_JUMP_BACKWARD_r11 1378 +#define _MONITOR_JUMP_BACKWARD_r22 1379 +#define _MONITOR_JUMP_BACKWARD_r33 1380 +#define _MONITOR_RESUME_r00 1381 +#define _NOP_r00 1382 +#define _NOP_r11 1383 +#define _NOP_r22 1384 +#define _NOP_r33 1385 +#define _POP_CALL_r20 1386 +#define _POP_CALL_LOAD_CONST_INLINE_BORROW_r21 1387 +#define _POP_CALL_ONE_r30 1388 +#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW_r31 1389 +#define _POP_CALL_TWO_r30 1390 +#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW_r31 1391 +#define _POP_EXCEPT_r10 1392 +#define _POP_ITER_r20 1393 +#define _POP_JUMP_IF_FALSE_r00 1394 +#define _POP_JUMP_IF_FALSE_r10 1395 +#define _POP_JUMP_IF_FALSE_r21 1396 +#define _POP_JUMP_IF_FALSE_r32 1397 +#define _POP_JUMP_IF_TRUE_r00 1398 +#define _POP_JUMP_IF_TRUE_r10 1399 +#define _POP_JUMP_IF_TRUE_r21 1400 +#define _POP_JUMP_IF_TRUE_r32 1401 +#define _POP_TOP_r10 1402 +#define _POP_TOP_FLOAT_r00 1403 +#define _POP_TOP_FLOAT_r10 1404 +#define _POP_TOP_FLOAT_r21 1405 +#define _POP_TOP_FLOAT_r32 1406 +#define _POP_TOP_INT_r00 1407 +#define _POP_TOP_INT_r10 1408 +#define _POP_TOP_INT_r21 1409 +#define _POP_TOP_INT_r32 1410 +#define _POP_TOP_LOAD_CONST_INLINE_r11 1411 +#define _POP_TOP_LOAD_CONST_INLINE_BORROW_r11 1412 +#define _POP_TOP_NOP_r00 1413 +#define _POP_TOP_NOP_r10 1414 +#define _POP_TOP_NOP_r21 1415 +#define _POP_TOP_NOP_r32 1416 +#define _POP_TOP_UNICODE_r00 1417 +#define _POP_TOP_UNICODE_r10 1418 +#define _POP_TOP_UNICODE_r21 1419 +#define _POP_TOP_UNICODE_r32 1420 +#define _POP_TWO_r20 1421 +#define _POP_TWO_LOAD_CONST_INLINE_BORROW_r21 1422 +#define _PUSH_EXC_INFO_r02 1423 +#define _PUSH_EXC_INFO_r12 1424 +#define _PUSH_EXC_INFO_r23 1425 +#define _PUSH_FRAME_r10 1426 +#define _PUSH_NULL_r01 1427 +#define _PUSH_NULL_r12 1428 +#define _PUSH_NULL_r23 1429 +#define _PUSH_NULL_CONDITIONAL_r00 1430 +#define _PY_FRAME_EX_r31 1431 +#define _PY_FRAME_GENERAL_r01 1432 +#define _PY_FRAME_KW_r11 1433 +#define _REPLACE_WITH_TRUE_r02 1434 +#define _REPLACE_WITH_TRUE_r12 1435 +#define _REPLACE_WITH_TRUE_r23 1436 +#define _RESUME_CHECK_r00 1437 +#define _RESUME_CHECK_r11 1438 +#define _RESUME_CHECK_r22 1439 +#define _RESUME_CHECK_r33 1440 +#define _RETURN_GENERATOR_r01 1441 +#define _RETURN_VALUE_r11 1442 +#define _SAVE_RETURN_OFFSET_r00 1443 +#define _SAVE_RETURN_OFFSET_r11 1444 +#define _SAVE_RETURN_OFFSET_r22 1445 +#define _SAVE_RETURN_OFFSET_r33 1446 +#define _SEND_r33 1447 +#define _SEND_GEN_FRAME_r33 1448 +#define _SETUP_ANNOTATIONS_r00 1449 +#define _SET_ADD_r10 1450 +#define _SET_FUNCTION_ATTRIBUTE_r01 1451 +#define _SET_FUNCTION_ATTRIBUTE_r11 1452 +#define _SET_FUNCTION_ATTRIBUTE_r21 1453 +#define _SET_FUNCTION_ATTRIBUTE_r32 1454 +#define _SET_IP_r00 1455 +#define _SET_IP_r11 1456 +#define _SET_IP_r22 1457 +#define _SET_IP_r33 1458 +#define _SET_UPDATE_r11 1459 +#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r02 1460 +#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r12 1461 +#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r22 1462 +#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r32 1463 +#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r03 1464 +#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r13 1465 +#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r23 1466 +#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r33 1467 +#define _SPILL_OR_RELOAD_r01 1468 +#define _SPILL_OR_RELOAD_r02 1469 +#define _SPILL_OR_RELOAD_r03 1470 +#define _SPILL_OR_RELOAD_r10 1471 +#define _SPILL_OR_RELOAD_r12 1472 +#define _SPILL_OR_RELOAD_r13 1473 +#define _SPILL_OR_RELOAD_r20 1474 +#define _SPILL_OR_RELOAD_r21 1475 +#define _SPILL_OR_RELOAD_r23 1476 +#define _SPILL_OR_RELOAD_r30 1477 +#define _SPILL_OR_RELOAD_r31 1478 +#define _SPILL_OR_RELOAD_r32 1479 +#define _START_EXECUTOR_r00 1480 +#define _STORE_ATTR_r20 1481 +#define _STORE_ATTR_INSTANCE_VALUE_r21 1482 +#define _STORE_ATTR_SLOT_r21 1483 +#define _STORE_ATTR_WITH_HINT_r21 1484 +#define _STORE_DEREF_r10 1485 +#define _STORE_FAST_LOAD_FAST_r11 1486 +#define _STORE_FAST_STORE_FAST_r20 1487 +#define _STORE_GLOBAL_r10 1488 +#define _STORE_NAME_r10 1489 +#define _STORE_SLICE_r30 1490 +#define _STORE_SUBSCR_r30 1491 +#define _STORE_SUBSCR_DICT_r31 1492 +#define _STORE_SUBSCR_DICT_KNOWN_HASH_r31 1493 +#define _STORE_SUBSCR_LIST_INT_r32 1494 +#define _SWAP_r11 1495 +#define _SWAP_2_r02 1496 +#define _SWAP_2_r12 1497 +#define _SWAP_2_r22 1498 +#define _SWAP_2_r33 1499 +#define _SWAP_3_r03 1500 +#define _SWAP_3_r13 1501 +#define _SWAP_3_r23 1502 +#define _SWAP_3_r33 1503 +#define _SWAP_FAST_r01 1504 +#define _SWAP_FAST_r11 1505 +#define _SWAP_FAST_r22 1506 +#define _SWAP_FAST_r33 1507 +#define _SWAP_FAST_0_r01 1508 +#define _SWAP_FAST_0_r11 1509 +#define _SWAP_FAST_0_r22 1510 +#define _SWAP_FAST_0_r33 1511 +#define _SWAP_FAST_1_r01 1512 +#define _SWAP_FAST_1_r11 1513 +#define _SWAP_FAST_1_r22 1514 +#define _SWAP_FAST_1_r33 1515 +#define _SWAP_FAST_2_r01 1516 +#define _SWAP_FAST_2_r11 1517 +#define _SWAP_FAST_2_r22 1518 +#define _SWAP_FAST_2_r33 1519 +#define _SWAP_FAST_3_r01 1520 +#define _SWAP_FAST_3_r11 1521 +#define _SWAP_FAST_3_r22 1522 +#define _SWAP_FAST_3_r33 1523 +#define _SWAP_FAST_4_r01 1524 +#define _SWAP_FAST_4_r11 1525 +#define _SWAP_FAST_4_r22 1526 +#define _SWAP_FAST_4_r33 1527 +#define _SWAP_FAST_5_r01 1528 +#define _SWAP_FAST_5_r11 1529 +#define _SWAP_FAST_5_r22 1530 +#define _SWAP_FAST_5_r33 1531 +#define _SWAP_FAST_6_r01 1532 +#define _SWAP_FAST_6_r11 1533 +#define _SWAP_FAST_6_r22 1534 +#define _SWAP_FAST_6_r33 1535 +#define _SWAP_FAST_7_r01 1536 +#define _SWAP_FAST_7_r11 1537 +#define _SWAP_FAST_7_r22 1538 +#define _SWAP_FAST_7_r33 1539 +#define _TIER2_RESUME_CHECK_r00 1540 +#define _TIER2_RESUME_CHECK_r11 1541 +#define _TIER2_RESUME_CHECK_r22 1542 +#define _TIER2_RESUME_CHECK_r33 1543 +#define _TO_BOOL_r11 1544 +#define _TO_BOOL_BOOL_r01 1545 +#define _TO_BOOL_BOOL_r11 1546 +#define _TO_BOOL_BOOL_r22 1547 +#define _TO_BOOL_BOOL_r33 1548 +#define _TO_BOOL_INT_r02 1549 +#define _TO_BOOL_INT_r12 1550 +#define _TO_BOOL_INT_r23 1551 +#define _TO_BOOL_LIST_r02 1552 +#define _TO_BOOL_LIST_r12 1553 +#define _TO_BOOL_LIST_r23 1554 +#define _TO_BOOL_NONE_r01 1555 +#define _TO_BOOL_NONE_r11 1556 +#define _TO_BOOL_NONE_r22 1557 +#define _TO_BOOL_NONE_r33 1558 +#define _TO_BOOL_STR_r02 1559 +#define _TO_BOOL_STR_r12 1560 +#define _TO_BOOL_STR_r23 1561 +#define _TRACE_RECORD_r00 1562 +#define _UNARY_INVERT_r12 1563 +#define _UNARY_NEGATIVE_r12 1564 +#define _UNARY_NEGATIVE_FLOAT_INPLACE_r02 1565 +#define _UNARY_NEGATIVE_FLOAT_INPLACE_r12 1566 +#define _UNARY_NEGATIVE_FLOAT_INPLACE_r23 1567 +#define _UNARY_NOT_r01 1568 +#define _UNARY_NOT_r11 1569 +#define _UNARY_NOT_r22 1570 +#define _UNARY_NOT_r33 1571 +#define _UNPACK_EX_r10 1572 +#define _UNPACK_SEQUENCE_r10 1573 +#define _UNPACK_SEQUENCE_LIST_r10 1574 +#define _UNPACK_SEQUENCE_TUPLE_r10 1575 +#define _UNPACK_SEQUENCE_TWO_TUPLE_r12 1576 +#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r03 1577 +#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r13 1578 +#define _UNPACK_SEQUENCE_UNIQUE_TUPLE_r10 1579 +#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r02 1580 +#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r12 1581 +#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r23 1582 +#define _WITH_EXCEPT_START_r33 1583 +#define _YIELD_VALUE_r11 1584 +#define MAX_UOP_REGS_ID 1584 #ifdef __cplusplus } diff --git a/Lib/test/test_capi/test_opt.py b/Lib/test/test_capi/test_opt.py index 9663b393e545e2..8d3da8b5a22968 100644 --- a/Lib/test/test_capi/test_opt.py +++ b/Lib/test/test_capi/test_opt.py @@ -3443,17 +3443,19 @@ def testfunc(args): self.assertNotIn("_BINARY_OP_ADD_INT_INPLACE", uops) def test_int_add_inplace_small_int_result(self): - # When the result is a small int, fallback path is taken - # but the trace should still work correctly (no deopt) + # When the result is a small int, the inplace path falls back + # to _PyCompactLong_Add. Verify correctness (no singleton corruption). def testfunc(args): a, b, n = args total = 0 for _ in range(n): - total += a * b + 0 # a*b=6, +0=6, small int + total += a * b + 1 # a*b=6, +1=7, small int return total res, ex = self._run_with_optimizer(testfunc, (2, 3, TIER2_THRESHOLD)) - self.assertEqual(res, TIER2_THRESHOLD * 6) + self.assertEqual(res, TIER2_THRESHOLD * 7) + # Verify small int singletons are not corrupted + self.assertEqual(7, 3 + 4) def test_int_subtract_inplace_unique_lhs(self): # a * b produces a unique compact int; subtracting c reuses it diff --git a/Python/ceval_macros.h b/Python/ceval_macros.h index db9e394de1c887..cc5d146e089d69 100644 --- a/Python/ceval_macros.h +++ b/Python/ceval_macros.h @@ -569,10 +569,10 @@ gen_try_set_executing(PyGenObject *gen) // cached small int singleton. We check _Py_IsImmortal on TARGET // to decide whether inplace mutation is safe. // -// _int_inplace_ok after macro: -// 1 = mutated TARGET in place (caller should set res = TARGET) -// 0 = TARGET was immortal (small int); caller should use the -// standard _PyCompactLong_* function instead +// After the macro, exactly one of: +// _int_inplace_ok = 1: mutated TARGET in place (res = TARGET) +// _int_inplace_ok = 0: did not mutate; caller should call +// _PyCompactLong_* as fallback #define INT_INPLACE_OP(left, right, TARGET, OP) \ int _int_inplace_ok = 0; \ do { \ @@ -580,24 +580,15 @@ gen_try_set_executing(PyGenObject *gen) if (_Py_IsImmortal(_target_o)) { \ break; \ } \ - PyObject *_left_o = PyStackRef_AsPyObjectBorrow(left); \ - PyObject *_right_o = PyStackRef_AsPyObjectBorrow(right); \ - assert(PyLong_CheckExact(_left_o)); \ - assert(PyLong_CheckExact(_right_o)); \ - assert(_PyLong_BothAreCompact((PyLongObject *)_left_o, \ - (PyLongObject *)_right_o)); \ assert(_PyObject_IsUniquelyReferenced(_target_o)); \ - STAT_INC(BINARY_OP, hit); \ Py_ssize_t _left_val = _PyLong_CompactValue( \ - (PyLongObject *)_left_o); \ + (PyLongObject *)PyStackRef_AsPyObjectBorrow(left)); \ Py_ssize_t _right_val = _PyLong_CompactValue( \ - (PyLongObject *)_right_o); \ + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); \ Py_ssize_t _result = _left_val OP _right_val; \ - /* Result must fit in a single digit and not be a small int */ \ - if (((twodigits)((stwodigits)_result) + PyLong_MASK \ - < (twodigits)PyLong_MASK + PyLong_BASE) \ - && (_result < -_PY_NSMALLNEGINTS \ - || _result >= _PY_NSMALLPOSINTS)) \ + if (!_PY_IS_SMALL_INT(_result) \ + && ((twodigits)((stwodigits)_result) + PyLong_MASK \ + < (twodigits)PyLong_MASK + PyLong_BASE)) \ { \ PyLongObject *_target = (PyLongObject *)_target_o; \ Py_ssize_t _sign = _result < 0 ? -1 : 1; \ @@ -607,6 +598,5 @@ gen_try_set_executing(PyGenObject *gen) _target->long_value.ob_digit[0] = _abs; \ _int_inplace_ok = 1; \ } \ - /* else: result is small int or overflow — fall back */ \ } while (0) From 654ae93b1029536f3574ee8474aade0099461cb9 Mon Sep 17 00:00:00 2001 From: Pieter Eendebak Date: Mon, 30 Mar 2026 20:20:07 +0200 Subject: [PATCH 04/11] fix tag assignment --- Python/ceval_macros.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Python/ceval_macros.h b/Python/ceval_macros.h index cc5d146e089d69..f89d5ec05c15a1 100644 --- a/Python/ceval_macros.h +++ b/Python/ceval_macros.h @@ -563,7 +563,6 @@ gen_try_set_executing(PyGenObject *gen) ->ob_fval = _dres; \ } while (0) -// Inplace compact int operation. Computes left OP right and attempts to // Inplace compact int operation. TARGET is expected to be uniquely // referenced at the optimizer level, but at runtime it may be a // cached small int singleton. We check _Py_IsImmortal on TARGET @@ -591,10 +590,10 @@ gen_try_set_executing(PyGenObject *gen) < (twodigits)PyLong_MASK + PyLong_BASE)) \ { \ PyLongObject *_target = (PyLongObject *)_target_o; \ - Py_ssize_t _sign = _result < 0 ? -1 : 1; \ + int _sign = _result < 0 ? -1 : 1; \ digit _abs = (digit)(_result < 0 ? -_result : _result); \ _target->long_value.lv_tag = \ - (Py_ssize_t)_sign << _PyLong_NON_SIZE_BITS; \ + TAG_FROM_SIGN_AND_SIZE(_sign, 1); \ _target->long_value.ob_digit[0] = _abs; \ _int_inplace_ok = 1; \ } \ From af5b4c9eb62316ab5bd2486eec50ca5b8b45e529 Mon Sep 17 00:00:00 2001 From: Pieter Eendebak Date: Mon, 30 Mar 2026 23:37:33 +0200 Subject: [PATCH 05/11] fix result refs --- Python/bytecodes.c | 38 +++++++-------- Python/ceval_macros.h | 10 ++-- Python/executor_cases.c.h | 90 +++++++++++++++--------------------- Python/optimizer_bytecodes.c | 12 ++--- Python/optimizer_cases.c.h | 12 ++--- 5 files changed, 69 insertions(+), 93 deletions(-) diff --git a/Python/bytecodes.c b/Python/bytecodes.c index ad315a24afa273..a87ec066ac1b8d 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -708,21 +708,22 @@ dummy_func( macro(BINARY_OP_SUBTRACT_INT) = _GUARD_TOS_INT + _GUARD_NOS_INT + unused/5 + _BINARY_OP_SUBTRACT_INT + _POP_TOP_INT + _POP_TOP_INT; - // Inplace compact int ops: try to mutate the uniquely-referenced - // operand. If TARGET is immortal (small int at runtime) or the - // result doesn't fit, fall back to _PyCompactLong_*. Tier 2 only. + // Inplace compact int ops: mutate the uniquely-referenced operand + // when possible. If TARGET is immortal (small int) or the result + // is a small int or overflows, fall back to _PyCompactLong_*. + // On mutation success, DUP the target so POP_TOP_INT can safely + // decref the original. Tier 2 only. tier2 op(_BINARY_OP_ADD_INT_INPLACE, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, left, +); if (_int_inplace_ok) { - res = left; - l = PyStackRef_NULL; + res = PyStackRef_DUP(left); } else { res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); EXIT_IF(PyStackRef_IsNull(res)); - l = left; } + l = left; r = right; INPUTS_DEAD(); } @@ -730,15 +731,14 @@ dummy_func( tier2 op(_BINARY_OP_SUBTRACT_INT_INPLACE, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, left, -); if (_int_inplace_ok) { - res = left; - l = PyStackRef_NULL; + res = PyStackRef_DUP(left); } else { res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); EXIT_IF(PyStackRef_IsNull(res)); - l = left; } + l = left; r = right; INPUTS_DEAD(); } @@ -746,15 +746,14 @@ dummy_func( tier2 op(_BINARY_OP_MULTIPLY_INT_INPLACE, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, left, *); if (_int_inplace_ok) { - res = left; - l = PyStackRef_NULL; + res = PyStackRef_DUP(left); } else { res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); EXIT_IF(PyStackRef_IsNull(res)); - l = left; } + l = left; r = right; INPUTS_DEAD(); } @@ -762,48 +761,45 @@ dummy_func( tier2 op(_BINARY_OP_ADD_INT_INPLACE_RIGHT, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, right, +); if (_int_inplace_ok) { - res = right; - r = PyStackRef_NULL; + res = PyStackRef_DUP(right); } else { res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); EXIT_IF(PyStackRef_IsNull(res)); - r = right; } l = left; + r = right; INPUTS_DEAD(); } tier2 op(_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, right, -); if (_int_inplace_ok) { - res = right; - r = PyStackRef_NULL; + res = PyStackRef_DUP(right); } else { res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); EXIT_IF(PyStackRef_IsNull(res)); - r = right; } l = left; + r = right; INPUTS_DEAD(); } tier2 op(_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, right, *); if (_int_inplace_ok) { - res = right; - r = PyStackRef_NULL; + res = PyStackRef_DUP(right); } else { res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); EXIT_IF(PyStackRef_IsNull(res)); - r = right; } l = left; + r = right; INPUTS_DEAD(); } diff --git a/Python/ceval_macros.h b/Python/ceval_macros.h index f89d5ec05c15a1..57a95da6593808 100644 --- a/Python/ceval_macros.h +++ b/Python/ceval_macros.h @@ -589,12 +589,10 @@ gen_try_set_executing(PyGenObject *gen) && ((twodigits)((stwodigits)_result) + PyLong_MASK \ < (twodigits)PyLong_MASK + PyLong_BASE)) \ { \ - PyLongObject *_target = (PyLongObject *)_target_o; \ - int _sign = _result < 0 ? -1 : 1; \ - digit _abs = (digit)(_result < 0 ? -_result : _result); \ - _target->long_value.lv_tag = \ - TAG_FROM_SIGN_AND_SIZE(_sign, 1); \ - _target->long_value.ob_digit[0] = _abs; \ + _PyLong_SetSignAndDigitCount( \ + (PyLongObject *)_target_o, _result < 0 ? -1 : 1, 1); \ + ((PyLongObject *)_target_o)->long_value.ob_digit[0] = \ + (digit)(_result < 0 ? -_result : _result); \ _int_inplace_ok = 1; \ } \ } while (0) diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h index 6c4d02d283663c..cedab8d54bdd5a 100644 --- a/Python/executor_cases.c.h +++ b/Python/executor_cases.c.h @@ -4516,8 +4516,7 @@ left = stack_pointer[-2]; INT_INPLACE_OP(left, right, left, +); if (_int_inplace_ok) { - res = left; - l = PyStackRef_NULL; + res = PyStackRef_DUP(left); } else { res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), @@ -4527,8 +4526,8 @@ SET_CURRENT_CACHED_VALUES(0); JUMP_TO_JUMP_TARGET(); } - l = left; } + l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4553,8 +4552,7 @@ left = stack_pointer[-1]; INT_INPLACE_OP(left, right, left, +); if (_int_inplace_ok) { - res = left; - l = PyStackRef_NULL; + res = PyStackRef_DUP(left); } else { res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), @@ -4565,8 +4563,8 @@ SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } - l = left; } + l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4592,8 +4590,7 @@ left = _stack_item_0; INT_INPLACE_OP(left, right, left, +); if (_int_inplace_ok) { - res = left; - l = PyStackRef_NULL; + res = PyStackRef_DUP(left); } else { res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), @@ -4605,8 +4602,8 @@ SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } - l = left; } + l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4628,8 +4625,7 @@ left = stack_pointer[-2]; INT_INPLACE_OP(left, right, left, -); if (_int_inplace_ok) { - res = left; - l = PyStackRef_NULL; + res = PyStackRef_DUP(left); } else { res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), @@ -4639,8 +4635,8 @@ SET_CURRENT_CACHED_VALUES(0); JUMP_TO_JUMP_TARGET(); } - l = left; } + l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4665,8 +4661,7 @@ left = stack_pointer[-1]; INT_INPLACE_OP(left, right, left, -); if (_int_inplace_ok) { - res = left; - l = PyStackRef_NULL; + res = PyStackRef_DUP(left); } else { res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), @@ -4677,8 +4672,8 @@ SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } - l = left; } + l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4704,8 +4699,7 @@ left = _stack_item_0; INT_INPLACE_OP(left, right, left, -); if (_int_inplace_ok) { - res = left; - l = PyStackRef_NULL; + res = PyStackRef_DUP(left); } else { res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), @@ -4717,8 +4711,8 @@ SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } - l = left; } + l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4740,8 +4734,7 @@ left = stack_pointer[-2]; INT_INPLACE_OP(left, right, left, *); if (_int_inplace_ok) { - res = left; - l = PyStackRef_NULL; + res = PyStackRef_DUP(left); } else { res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), @@ -4751,8 +4744,8 @@ SET_CURRENT_CACHED_VALUES(0); JUMP_TO_JUMP_TARGET(); } - l = left; } + l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4777,8 +4770,7 @@ left = stack_pointer[-1]; INT_INPLACE_OP(left, right, left, *); if (_int_inplace_ok) { - res = left; - l = PyStackRef_NULL; + res = PyStackRef_DUP(left); } else { res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), @@ -4789,8 +4781,8 @@ SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } - l = left; } + l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4816,8 +4808,7 @@ left = _stack_item_0; INT_INPLACE_OP(left, right, left, *); if (_int_inplace_ok) { - res = left; - l = PyStackRef_NULL; + res = PyStackRef_DUP(left); } else { res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), @@ -4829,8 +4820,8 @@ SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } - l = left; } + l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4852,8 +4843,7 @@ left = stack_pointer[-2]; INT_INPLACE_OP(left, right, right, +); if (_int_inplace_ok) { - res = right; - r = PyStackRef_NULL; + res = PyStackRef_DUP(right); } else { res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), @@ -4863,9 +4853,9 @@ SET_CURRENT_CACHED_VALUES(0); JUMP_TO_JUMP_TARGET(); } - r = right; } l = left; + r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4889,8 +4879,7 @@ left = stack_pointer[-1]; INT_INPLACE_OP(left, right, right, +); if (_int_inplace_ok) { - res = right; - r = PyStackRef_NULL; + res = PyStackRef_DUP(right); } else { res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), @@ -4901,9 +4890,9 @@ SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } - r = right; } l = left; + r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4928,8 +4917,7 @@ left = _stack_item_0; INT_INPLACE_OP(left, right, right, +); if (_int_inplace_ok) { - res = right; - r = PyStackRef_NULL; + res = PyStackRef_DUP(right); } else { res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), @@ -4941,9 +4929,9 @@ SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } - r = right; } l = left; + r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4964,8 +4952,7 @@ left = stack_pointer[-2]; INT_INPLACE_OP(left, right, right, -); if (_int_inplace_ok) { - res = right; - r = PyStackRef_NULL; + res = PyStackRef_DUP(right); } else { res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), @@ -4975,9 +4962,9 @@ SET_CURRENT_CACHED_VALUES(0); JUMP_TO_JUMP_TARGET(); } - r = right; } l = left; + r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -5001,8 +4988,7 @@ left = stack_pointer[-1]; INT_INPLACE_OP(left, right, right, -); if (_int_inplace_ok) { - res = right; - r = PyStackRef_NULL; + res = PyStackRef_DUP(right); } else { res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), @@ -5013,9 +4999,9 @@ SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } - r = right; } l = left; + r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -5040,8 +5026,7 @@ left = _stack_item_0; INT_INPLACE_OP(left, right, right, -); if (_int_inplace_ok) { - res = right; - r = PyStackRef_NULL; + res = PyStackRef_DUP(right); } else { res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), @@ -5053,9 +5038,9 @@ SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } - r = right; } l = left; + r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -5076,8 +5061,7 @@ left = stack_pointer[-2]; INT_INPLACE_OP(left, right, right, *); if (_int_inplace_ok) { - res = right; - r = PyStackRef_NULL; + res = PyStackRef_DUP(right); } else { res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), @@ -5087,9 +5071,9 @@ SET_CURRENT_CACHED_VALUES(0); JUMP_TO_JUMP_TARGET(); } - r = right; } l = left; + r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -5113,8 +5097,7 @@ left = stack_pointer[-1]; INT_INPLACE_OP(left, right, right, *); if (_int_inplace_ok) { - res = right; - r = PyStackRef_NULL; + res = PyStackRef_DUP(right); } else { res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), @@ -5125,9 +5108,9 @@ SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } - r = right; } l = left; + r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -5152,8 +5135,7 @@ left = _stack_item_0; INT_INPLACE_OP(left, right, right, *); if (_int_inplace_ok) { - res = right; - r = PyStackRef_NULL; + res = PyStackRef_DUP(right); } else { res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), @@ -5165,9 +5147,9 @@ SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } - r = right; } l = left; + r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; diff --git a/Python/optimizer_bytecodes.c b/Python/optimizer_bytecodes.c index 4eea38a22426db..2fd235a2dda149 100644 --- a/Python/optimizer_bytecodes.c +++ b/Python/optimizer_bytecodes.c @@ -310,10 +310,10 @@ dummy_func(void) { op(_BINARY_OP_ADD_INT, (left, right -- res, l, r)) { if (PyJitRef_IsUnique(left)) { - ADD_OP(_BINARY_OP_ADD_INT_INPLACE, 0, 0); + REPLACE_OP(this_instr, _BINARY_OP_ADD_INT_INPLACE, 0, 0); } else if (PyJitRef_IsUnique(right)) { - ADD_OP(_BINARY_OP_ADD_INT_INPLACE_RIGHT, 0, 0); + REPLACE_OP(this_instr, _BINARY_OP_ADD_INT_INPLACE_RIGHT, 0, 0); } // Result may be a unique compact int or a cached small int // at runtime. Mark as unique; inplace ops verify at runtime. @@ -325,10 +325,10 @@ dummy_func(void) { op(_BINARY_OP_SUBTRACT_INT, (left, right -- res, l, r)) { if (PyJitRef_IsUnique(left)) { - ADD_OP(_BINARY_OP_SUBTRACT_INT_INPLACE, 0, 0); + REPLACE_OP(this_instr, _BINARY_OP_SUBTRACT_INT_INPLACE, 0, 0); } else if (PyJitRef_IsUnique(right)) { - ADD_OP(_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT, 0, 0); + REPLACE_OP(this_instr, _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT, 0, 0); } res = PyJitRef_MakeUnique(sym_new_compact_int(ctx)); l = left; @@ -338,10 +338,10 @@ dummy_func(void) { op(_BINARY_OP_MULTIPLY_INT, (left, right -- res, l, r)) { if (PyJitRef_IsUnique(left)) { - ADD_OP(_BINARY_OP_MULTIPLY_INT_INPLACE, 0, 0); + REPLACE_OP(this_instr, _BINARY_OP_MULTIPLY_INT_INPLACE, 0, 0); } else if (PyJitRef_IsUnique(right)) { - ADD_OP(_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT, 0, 0); + REPLACE_OP(this_instr, _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT, 0, 0); } res = PyJitRef_MakeUnique(sym_new_compact_int(ctx)); l = left; diff --git a/Python/optimizer_cases.c.h b/Python/optimizer_cases.c.h index 8fc3e759ff3f17..8634189c707510 100644 --- a/Python/optimizer_cases.c.h +++ b/Python/optimizer_cases.c.h @@ -597,10 +597,10 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; if (PyJitRef_IsUnique(left)) { - ADD_OP(_BINARY_OP_MULTIPLY_INT_INPLACE, 0, 0); + REPLACE_OP(this_instr, _BINARY_OP_MULTIPLY_INT_INPLACE, 0, 0); } else if (PyJitRef_IsUnique(right)) { - ADD_OP(_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT, 0, 0); + REPLACE_OP(this_instr, _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT, 0, 0); } res = PyJitRef_MakeUnique(sym_new_compact_int(ctx)); l = left; @@ -667,10 +667,10 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; if (PyJitRef_IsUnique(left)) { - ADD_OP(_BINARY_OP_ADD_INT_INPLACE, 0, 0); + REPLACE_OP(this_instr, _BINARY_OP_ADD_INT_INPLACE, 0, 0); } else if (PyJitRef_IsUnique(right)) { - ADD_OP(_BINARY_OP_ADD_INT_INPLACE_RIGHT, 0, 0); + REPLACE_OP(this_instr, _BINARY_OP_ADD_INT_INPLACE_RIGHT, 0, 0); } res = PyJitRef_MakeUnique(sym_new_compact_int(ctx)); l = left; @@ -737,10 +737,10 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; if (PyJitRef_IsUnique(left)) { - ADD_OP(_BINARY_OP_SUBTRACT_INT_INPLACE, 0, 0); + REPLACE_OP(this_instr, _BINARY_OP_SUBTRACT_INT_INPLACE, 0, 0); } else if (PyJitRef_IsUnique(right)) { - ADD_OP(_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT, 0, 0); + REPLACE_OP(this_instr, _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT, 0, 0); } res = PyJitRef_MakeUnique(sym_new_compact_int(ctx)); l = left; From 9d13a232f91bb94306e17a149336da79e1610ec3 Mon Sep 17 00:00:00 2001 From: Pieter Eendebak Date: Tue, 31 Mar 2026 21:40:13 +0200 Subject: [PATCH 06/11] review comments --- Python/bytecodes.c | 78 +++++---- Python/ceval_macros.h | 19 ++- Python/executor_cases.c.h | 342 ++++++++++++++++++-------------------- 3 files changed, 213 insertions(+), 226 deletions(-) diff --git a/Python/bytecodes.c b/Python/bytecodes.c index a87ec066ac1b8d..8ea1b5009aae00 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -709,98 +709,96 @@ dummy_func( _GUARD_TOS_INT + _GUARD_NOS_INT + unused/5 + _BINARY_OP_SUBTRACT_INT + _POP_TOP_INT + _POP_TOP_INT; // Inplace compact int ops: mutate the uniquely-referenced operand - // when possible. If TARGET is immortal (small int) or the result - // is a small int or overflows, fall back to _PyCompactLong_*. - // On mutation success, DUP the target so POP_TOP_INT can safely - // decref the original. Tier 2 only. + // when possible. The op handles decref of TARGET internally so + // the following _POP_TOP_INT becomes _POP_TOP_NOP. Tier 2 only. tier2 op(_BINARY_OP_ADD_INT_INPLACE, (left, right -- res, l, r)) { - INT_INPLACE_OP(left, right, left, +); + INT_INPLACE_OP(left, right, left, +, _PyCompactLong_Add); + r = right; + DEAD(right); + EXIT_IF(!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)); if (_int_inplace_ok) { res = PyStackRef_DUP(left); } else { - res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - EXIT_IF(PyStackRef_IsNull(res)); + res = _int_inplace_res; } l = left; - r = right; - INPUTS_DEAD(); + DEAD(left); } tier2 op(_BINARY_OP_SUBTRACT_INT_INPLACE, (left, right -- res, l, r)) { - INT_INPLACE_OP(left, right, left, -); + INT_INPLACE_OP(left, right, left, -, _PyCompactLong_Subtract); + r = right; + DEAD(right); + EXIT_IF(!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)); if (_int_inplace_ok) { res = PyStackRef_DUP(left); } else { - res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - EXIT_IF(PyStackRef_IsNull(res)); + res = _int_inplace_res; } l = left; - r = right; - INPUTS_DEAD(); + DEAD(left); } tier2 op(_BINARY_OP_MULTIPLY_INT_INPLACE, (left, right -- res, l, r)) { - INT_INPLACE_OP(left, right, left, *); + INT_INPLACE_OP(left, right, left, *, _PyCompactLong_Multiply); + r = right; + DEAD(right); + EXIT_IF(!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)); if (_int_inplace_ok) { res = PyStackRef_DUP(left); } else { - res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - EXIT_IF(PyStackRef_IsNull(res)); + res = _int_inplace_res; } l = left; - r = right; - INPUTS_DEAD(); + DEAD(left); } tier2 op(_BINARY_OP_ADD_INT_INPLACE_RIGHT, (left, right -- res, l, r)) { - INT_INPLACE_OP(left, right, right, +); + INT_INPLACE_OP(left, right, right, +, _PyCompactLong_Add); + l = left; + DEAD(left); + EXIT_IF(!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)); if (_int_inplace_ok) { res = PyStackRef_DUP(right); } else { - res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - EXIT_IF(PyStackRef_IsNull(res)); + res = _int_inplace_res; } - l = left; r = right; - INPUTS_DEAD(); + DEAD(right); } tier2 op(_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT, (left, right -- res, l, r)) { - INT_INPLACE_OP(left, right, right, -); + INT_INPLACE_OP(left, right, right, -, _PyCompactLong_Subtract); + l = left; + DEAD(left); + EXIT_IF(!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)); if (_int_inplace_ok) { res = PyStackRef_DUP(right); } else { - res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - EXIT_IF(PyStackRef_IsNull(res)); + res = _int_inplace_res; } - l = left; r = right; - INPUTS_DEAD(); + DEAD(right); } tier2 op(_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT, (left, right -- res, l, r)) { - INT_INPLACE_OP(left, right, right, *); + INT_INPLACE_OP(left, right, right, *, _PyCompactLong_Multiply); + l = left; + DEAD(left); + EXIT_IF(!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)); if (_int_inplace_ok) { res = PyStackRef_DUP(right); } else { - res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - EXIT_IF(PyStackRef_IsNull(res)); + res = _int_inplace_res; } - l = left; r = right; - INPUTS_DEAD(); + DEAD(right); } op(_GUARD_NOS_FLOAT, (left, unused -- left, unused)) { diff --git a/Python/ceval_macros.h b/Python/ceval_macros.h index 57a95da6593808..b0dd4b56152008 100644 --- a/Python/ceval_macros.h +++ b/Python/ceval_macros.h @@ -568,12 +568,14 @@ gen_try_set_executing(PyGenObject *gen) // cached small int singleton. We check _Py_IsImmortal on TARGET // to decide whether inplace mutation is safe. // -// After the macro, exactly one of: -// _int_inplace_ok = 1: mutated TARGET in place (res = TARGET) -// _int_inplace_ok = 0: did not mutate; caller should call -// _PyCompactLong_* as fallback -#define INT_INPLACE_OP(left, right, TARGET, OP) \ +// After the macro: +// _int_inplace_ok = 1: mutated TARGET in place (caller uses TARGET as res) +// _int_inplace_ok = 0: _int_inplace_res holds the fallback result +// (may be NULL on allocation failure) +// FUNC is the fallback function (_PyCompactLong_Add etc.) +#define INT_INPLACE_OP(left, right, TARGET, OP, FUNC) \ int _int_inplace_ok = 0; \ + _PyStackRef _int_inplace_res = PyStackRef_NULL; \ do { \ PyObject *_target_o = PyStackRef_AsPyObjectBorrow(TARGET); \ if (_Py_IsImmortal(_target_o)) { \ @@ -595,5 +597,10 @@ gen_try_set_executing(PyGenObject *gen) (digit)(_result < 0 ? -_result : _result); \ _int_inplace_ok = 1; \ } \ - } while (0) + } while (0); \ + if (!_int_inplace_ok) { \ + _int_inplace_res = FUNC( \ + (PyLongObject *)PyStackRef_AsPyObjectBorrow(left), \ + (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); \ + } diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h index cedab8d54bdd5a..32a49bd8acd125 100644 --- a/Python/executor_cases.c.h +++ b/Python/executor_cases.c.h @@ -4514,21 +4514,20 @@ _PyStackRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; - INT_INPLACE_OP(left, right, left, +); + INT_INPLACE_OP(left, right, left, +, _PyCompactLong_Add); + r = right; + if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + UOP_STAT_INC(uopcode, miss); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_JUMP_TARGET(); + } if (_int_inplace_ok) { res = PyStackRef_DUP(left); } else { - res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_JUMP_TARGET(); - } + res = _int_inplace_res; } l = left; - r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4550,22 +4549,21 @@ _PyStackRef _stack_item_0 = _tos_cache0; right = _stack_item_0; left = stack_pointer[-1]; - INT_INPLACE_OP(left, right, left, +); + INT_INPLACE_OP(left, right, left, +, _PyCompactLong_Add); + r = right; + if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache0 = stack_pointer[0]; + SET_CURRENT_CACHED_VALUES(1); + JUMP_TO_JUMP_TARGET(); + } if (_int_inplace_ok) { res = PyStackRef_DUP(left); } else { - res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - _tos_cache0 = right; - SET_CURRENT_CACHED_VALUES(1); - JUMP_TO_JUMP_TARGET(); - } + res = _int_inplace_res; } l = left; - r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4588,23 +4586,22 @@ _PyStackRef _stack_item_1 = _tos_cache1; right = _stack_item_1; left = _stack_item_0; - INT_INPLACE_OP(left, right, left, +); + INT_INPLACE_OP(left, right, left, +, _PyCompactLong_Add); + r = right; + if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache1 = stack_pointer[1]; + _tos_cache0 = left; + SET_CURRENT_CACHED_VALUES(2); + JUMP_TO_JUMP_TARGET(); + } if (_int_inplace_ok) { res = PyStackRef_DUP(left); } else { - res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - _tos_cache1 = right; - _tos_cache0 = left; - SET_CURRENT_CACHED_VALUES(2); - JUMP_TO_JUMP_TARGET(); - } + res = _int_inplace_res; } l = left; - r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4623,21 +4620,20 @@ _PyStackRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; - INT_INPLACE_OP(left, right, left, -); + INT_INPLACE_OP(left, right, left, -, _PyCompactLong_Subtract); + r = right; + if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + UOP_STAT_INC(uopcode, miss); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_JUMP_TARGET(); + } if (_int_inplace_ok) { res = PyStackRef_DUP(left); } else { - res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_JUMP_TARGET(); - } + res = _int_inplace_res; } l = left; - r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4659,22 +4655,21 @@ _PyStackRef _stack_item_0 = _tos_cache0; right = _stack_item_0; left = stack_pointer[-1]; - INT_INPLACE_OP(left, right, left, -); + INT_INPLACE_OP(left, right, left, -, _PyCompactLong_Subtract); + r = right; + if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache0 = stack_pointer[0]; + SET_CURRENT_CACHED_VALUES(1); + JUMP_TO_JUMP_TARGET(); + } if (_int_inplace_ok) { res = PyStackRef_DUP(left); } else { - res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - _tos_cache0 = right; - SET_CURRENT_CACHED_VALUES(1); - JUMP_TO_JUMP_TARGET(); - } + res = _int_inplace_res; } l = left; - r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4697,23 +4692,22 @@ _PyStackRef _stack_item_1 = _tos_cache1; right = _stack_item_1; left = _stack_item_0; - INT_INPLACE_OP(left, right, left, -); + INT_INPLACE_OP(left, right, left, -, _PyCompactLong_Subtract); + r = right; + if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache1 = stack_pointer[1]; + _tos_cache0 = left; + SET_CURRENT_CACHED_VALUES(2); + JUMP_TO_JUMP_TARGET(); + } if (_int_inplace_ok) { res = PyStackRef_DUP(left); } else { - res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - _tos_cache1 = right; - _tos_cache0 = left; - SET_CURRENT_CACHED_VALUES(2); - JUMP_TO_JUMP_TARGET(); - } + res = _int_inplace_res; } l = left; - r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4732,21 +4726,20 @@ _PyStackRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; - INT_INPLACE_OP(left, right, left, *); + INT_INPLACE_OP(left, right, left, *, _PyCompactLong_Multiply); + r = right; + if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + UOP_STAT_INC(uopcode, miss); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_JUMP_TARGET(); + } if (_int_inplace_ok) { res = PyStackRef_DUP(left); } else { - res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_JUMP_TARGET(); - } + res = _int_inplace_res; } l = left; - r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4768,22 +4761,21 @@ _PyStackRef _stack_item_0 = _tos_cache0; right = _stack_item_0; left = stack_pointer[-1]; - INT_INPLACE_OP(left, right, left, *); + INT_INPLACE_OP(left, right, left, *, _PyCompactLong_Multiply); + r = right; + if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache0 = stack_pointer[0]; + SET_CURRENT_CACHED_VALUES(1); + JUMP_TO_JUMP_TARGET(); + } if (_int_inplace_ok) { res = PyStackRef_DUP(left); } else { - res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - _tos_cache0 = right; - SET_CURRENT_CACHED_VALUES(1); - JUMP_TO_JUMP_TARGET(); - } + res = _int_inplace_res; } l = left; - r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4806,23 +4798,22 @@ _PyStackRef _stack_item_1 = _tos_cache1; right = _stack_item_1; left = _stack_item_0; - INT_INPLACE_OP(left, right, left, *); + INT_INPLACE_OP(left, right, left, *, _PyCompactLong_Multiply); + r = right; + if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache1 = stack_pointer[1]; + _tos_cache0 = left; + SET_CURRENT_CACHED_VALUES(2); + JUMP_TO_JUMP_TARGET(); + } if (_int_inplace_ok) { res = PyStackRef_DUP(left); } else { - res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - _tos_cache1 = right; - _tos_cache0 = left; - SET_CURRENT_CACHED_VALUES(2); - JUMP_TO_JUMP_TARGET(); - } + res = _int_inplace_res; } l = left; - r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4841,20 +4832,19 @@ _PyStackRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; - INT_INPLACE_OP(left, right, right, +); + INT_INPLACE_OP(left, right, right, +, _PyCompactLong_Add); + l = left; + if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + UOP_STAT_INC(uopcode, miss); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_JUMP_TARGET(); + } if (_int_inplace_ok) { res = PyStackRef_DUP(right); } else { - res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_JUMP_TARGET(); - } + res = _int_inplace_res; } - l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4877,21 +4867,20 @@ _PyStackRef _stack_item_0 = _tos_cache0; right = _stack_item_0; left = stack_pointer[-1]; - INT_INPLACE_OP(left, right, right, +); + INT_INPLACE_OP(left, right, right, +, _PyCompactLong_Add); + l = left; + if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache0 = right; + SET_CURRENT_CACHED_VALUES(1); + JUMP_TO_JUMP_TARGET(); + } if (_int_inplace_ok) { res = PyStackRef_DUP(right); } else { - res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - _tos_cache0 = right; - SET_CURRENT_CACHED_VALUES(1); - JUMP_TO_JUMP_TARGET(); - } + res = _int_inplace_res; } - l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4915,22 +4904,21 @@ _PyStackRef _stack_item_1 = _tos_cache1; right = _stack_item_1; left = _stack_item_0; - INT_INPLACE_OP(left, right, right, +); + INT_INPLACE_OP(left, right, right, +, _PyCompactLong_Add); + l = left; + if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache1 = right; + _tos_cache0 = stack_pointer[0]; + SET_CURRENT_CACHED_VALUES(2); + JUMP_TO_JUMP_TARGET(); + } if (_int_inplace_ok) { res = PyStackRef_DUP(right); } else { - res = _PyCompactLong_Add((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - _tos_cache1 = right; - _tos_cache0 = left; - SET_CURRENT_CACHED_VALUES(2); - JUMP_TO_JUMP_TARGET(); - } + res = _int_inplace_res; } - l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4950,20 +4938,19 @@ _PyStackRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; - INT_INPLACE_OP(left, right, right, -); + INT_INPLACE_OP(left, right, right, -, _PyCompactLong_Subtract); + l = left; + if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + UOP_STAT_INC(uopcode, miss); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_JUMP_TARGET(); + } if (_int_inplace_ok) { res = PyStackRef_DUP(right); } else { - res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_JUMP_TARGET(); - } + res = _int_inplace_res; } - l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4986,21 +4973,20 @@ _PyStackRef _stack_item_0 = _tos_cache0; right = _stack_item_0; left = stack_pointer[-1]; - INT_INPLACE_OP(left, right, right, -); + INT_INPLACE_OP(left, right, right, -, _PyCompactLong_Subtract); + l = left; + if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache0 = right; + SET_CURRENT_CACHED_VALUES(1); + JUMP_TO_JUMP_TARGET(); + } if (_int_inplace_ok) { res = PyStackRef_DUP(right); } else { - res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - _tos_cache0 = right; - SET_CURRENT_CACHED_VALUES(1); - JUMP_TO_JUMP_TARGET(); - } + res = _int_inplace_res; } - l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -5024,22 +5010,21 @@ _PyStackRef _stack_item_1 = _tos_cache1; right = _stack_item_1; left = _stack_item_0; - INT_INPLACE_OP(left, right, right, -); + INT_INPLACE_OP(left, right, right, -, _PyCompactLong_Subtract); + l = left; + if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache1 = right; + _tos_cache0 = stack_pointer[0]; + SET_CURRENT_CACHED_VALUES(2); + JUMP_TO_JUMP_TARGET(); + } if (_int_inplace_ok) { res = PyStackRef_DUP(right); } else { - res = _PyCompactLong_Subtract((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - _tos_cache1 = right; - _tos_cache0 = left; - SET_CURRENT_CACHED_VALUES(2); - JUMP_TO_JUMP_TARGET(); - } + res = _int_inplace_res; } - l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -5059,20 +5044,19 @@ _PyStackRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; - INT_INPLACE_OP(left, right, right, *); + INT_INPLACE_OP(left, right, right, *, _PyCompactLong_Multiply); + l = left; + if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + UOP_STAT_INC(uopcode, miss); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_JUMP_TARGET(); + } if (_int_inplace_ok) { res = PyStackRef_DUP(right); } else { - res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_JUMP_TARGET(); - } + res = _int_inplace_res; } - l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -5095,21 +5079,20 @@ _PyStackRef _stack_item_0 = _tos_cache0; right = _stack_item_0; left = stack_pointer[-1]; - INT_INPLACE_OP(left, right, right, *); + INT_INPLACE_OP(left, right, right, *, _PyCompactLong_Multiply); + l = left; + if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache0 = right; + SET_CURRENT_CACHED_VALUES(1); + JUMP_TO_JUMP_TARGET(); + } if (_int_inplace_ok) { res = PyStackRef_DUP(right); } else { - res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - _tos_cache0 = right; - SET_CURRENT_CACHED_VALUES(1); - JUMP_TO_JUMP_TARGET(); - } + res = _int_inplace_res; } - l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -5133,22 +5116,21 @@ _PyStackRef _stack_item_1 = _tos_cache1; right = _stack_item_1; left = _stack_item_0; - INT_INPLACE_OP(left, right, right, *); + INT_INPLACE_OP(left, right, right, *, _PyCompactLong_Multiply); + l = left; + if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + UOP_STAT_INC(uopcode, miss); + _tos_cache1 = right; + _tos_cache0 = stack_pointer[0]; + SET_CURRENT_CACHED_VALUES(2); + JUMP_TO_JUMP_TARGET(); + } if (_int_inplace_ok) { res = PyStackRef_DUP(right); } else { - res = _PyCompactLong_Multiply((PyLongObject *)PyStackRef_AsPyObjectBorrow(left), - (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - _tos_cache1 = right; - _tos_cache0 = left; - SET_CURRENT_CACHED_VALUES(2); - JUMP_TO_JUMP_TARGET(); - } + res = _int_inplace_res; } - l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; From 46b6ccabb8e6fa526abeb1c9373e3becf4f06b8d Mon Sep 17 00:00:00 2001 From: Pieter Eendebak Date: Tue, 31 Mar 2026 21:42:31 +0200 Subject: [PATCH 07/11] news entry --- .../2026-03-30-20-00-00.gh-issue-146306.C45609.rst | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2026-03-30-20-00-00.gh-issue-146306.C45609.rst diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-03-30-20-00-00.gh-issue-146306.C45609.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-03-30-20-00-00.gh-issue-146306.C45609.rst new file mode 100644 index 00000000000000..fdbdb6a285faff --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-03-30-20-00-00.gh-issue-146306.C45609.rst @@ -0,0 +1,3 @@ +Optimize compact integer arithmetic in the JIT by mutating +uniquely-referenced operands in place, avoiding allocation of a new int +object. Speeds up the pyperformance ``spectral_norm`` benchmark by ~10%. From 63c1317c6b8f2c6f1c0c0e00a171fdb2223fe5b2 Mon Sep 17 00:00:00 2001 From: Pieter Eendebak Date: Tue, 31 Mar 2026 22:33:12 +0200 Subject: [PATCH 08/11] fix --- Python/bytecodes.c | 30 +++++++++------------- Python/executor_cases.c.h | 54 +++++++++++++++++++-------------------- 2 files changed, 39 insertions(+), 45 deletions(-) diff --git a/Python/bytecodes.c b/Python/bytecodes.c index 8ea1b5009aae00..d60304b6258f55 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -713,8 +713,6 @@ dummy_func( // the following _POP_TOP_INT becomes _POP_TOP_NOP. Tier 2 only. tier2 op(_BINARY_OP_ADD_INT_INPLACE, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, left, +, _PyCompactLong_Add); - r = right; - DEAD(right); EXIT_IF(!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)); if (_int_inplace_ok) { res = PyStackRef_DUP(left); @@ -723,13 +721,12 @@ dummy_func( res = _int_inplace_res; } l = left; - DEAD(left); + r = right; + INPUTS_DEAD(); } tier2 op(_BINARY_OP_SUBTRACT_INT_INPLACE, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, left, -, _PyCompactLong_Subtract); - r = right; - DEAD(right); EXIT_IF(!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)); if (_int_inplace_ok) { res = PyStackRef_DUP(left); @@ -738,13 +735,12 @@ dummy_func( res = _int_inplace_res; } l = left; - DEAD(left); + r = right; + INPUTS_DEAD(); } tier2 op(_BINARY_OP_MULTIPLY_INT_INPLACE, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, left, *, _PyCompactLong_Multiply); - r = right; - DEAD(right); EXIT_IF(!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)); if (_int_inplace_ok) { res = PyStackRef_DUP(left); @@ -753,13 +749,12 @@ dummy_func( res = _int_inplace_res; } l = left; - DEAD(left); + r = right; + INPUTS_DEAD(); } tier2 op(_BINARY_OP_ADD_INT_INPLACE_RIGHT, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, right, +, _PyCompactLong_Add); - l = left; - DEAD(left); EXIT_IF(!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)); if (_int_inplace_ok) { res = PyStackRef_DUP(right); @@ -767,14 +762,13 @@ dummy_func( else { res = _int_inplace_res; } + l = left; r = right; - DEAD(right); + INPUTS_DEAD(); } tier2 op(_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, right, -, _PyCompactLong_Subtract); - l = left; - DEAD(left); EXIT_IF(!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)); if (_int_inplace_ok) { res = PyStackRef_DUP(right); @@ -782,14 +776,13 @@ dummy_func( else { res = _int_inplace_res; } + l = left; r = right; - DEAD(right); + INPUTS_DEAD(); } tier2 op(_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, right, *, _PyCompactLong_Multiply); - l = left; - DEAD(left); EXIT_IF(!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)); if (_int_inplace_ok) { res = PyStackRef_DUP(right); @@ -797,8 +790,9 @@ dummy_func( else { res = _int_inplace_res; } + l = left; r = right; - DEAD(right); + INPUTS_DEAD(); } op(_GUARD_NOS_FLOAT, (left, unused -- left, unused)) { diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h index 32a49bd8acd125..9de0999e191810 100644 --- a/Python/executor_cases.c.h +++ b/Python/executor_cases.c.h @@ -4515,7 +4515,6 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; INT_INPLACE_OP(left, right, left, +, _PyCompactLong_Add); - r = right; if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); SET_CURRENT_CACHED_VALUES(0); @@ -4528,6 +4527,7 @@ res = _int_inplace_res; } l = left; + r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4550,10 +4550,9 @@ right = _stack_item_0; left = stack_pointer[-1]; INT_INPLACE_OP(left, right, left, +, _PyCompactLong_Add); - r = right; if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); - _tos_cache0 = stack_pointer[0]; + _tos_cache0 = right; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -4564,6 +4563,7 @@ res = _int_inplace_res; } l = left; + r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4587,10 +4587,9 @@ right = _stack_item_1; left = _stack_item_0; INT_INPLACE_OP(left, right, left, +, _PyCompactLong_Add); - r = right; if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); - _tos_cache1 = stack_pointer[1]; + _tos_cache1 = right; _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); @@ -4602,6 +4601,7 @@ res = _int_inplace_res; } l = left; + r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4621,7 +4621,6 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; INT_INPLACE_OP(left, right, left, -, _PyCompactLong_Subtract); - r = right; if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); SET_CURRENT_CACHED_VALUES(0); @@ -4634,6 +4633,7 @@ res = _int_inplace_res; } l = left; + r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4656,10 +4656,9 @@ right = _stack_item_0; left = stack_pointer[-1]; INT_INPLACE_OP(left, right, left, -, _PyCompactLong_Subtract); - r = right; if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); - _tos_cache0 = stack_pointer[0]; + _tos_cache0 = right; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -4670,6 +4669,7 @@ res = _int_inplace_res; } l = left; + r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4693,10 +4693,9 @@ right = _stack_item_1; left = _stack_item_0; INT_INPLACE_OP(left, right, left, -, _PyCompactLong_Subtract); - r = right; if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); - _tos_cache1 = stack_pointer[1]; + _tos_cache1 = right; _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); @@ -4708,6 +4707,7 @@ res = _int_inplace_res; } l = left; + r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4727,7 +4727,6 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; INT_INPLACE_OP(left, right, left, *, _PyCompactLong_Multiply); - r = right; if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); SET_CURRENT_CACHED_VALUES(0); @@ -4740,6 +4739,7 @@ res = _int_inplace_res; } l = left; + r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4762,10 +4762,9 @@ right = _stack_item_0; left = stack_pointer[-1]; INT_INPLACE_OP(left, right, left, *, _PyCompactLong_Multiply); - r = right; if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); - _tos_cache0 = stack_pointer[0]; + _tos_cache0 = right; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -4776,6 +4775,7 @@ res = _int_inplace_res; } l = left; + r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4799,10 +4799,9 @@ right = _stack_item_1; left = _stack_item_0; INT_INPLACE_OP(left, right, left, *, _PyCompactLong_Multiply); - r = right; if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); - _tos_cache1 = stack_pointer[1]; + _tos_cache1 = right; _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); @@ -4814,6 +4813,7 @@ res = _int_inplace_res; } l = left; + r = right; _tos_cache2 = r; _tos_cache1 = l; _tos_cache0 = res; @@ -4833,7 +4833,6 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; INT_INPLACE_OP(left, right, right, +, _PyCompactLong_Add); - l = left; if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); SET_CURRENT_CACHED_VALUES(0); @@ -4845,6 +4844,7 @@ else { res = _int_inplace_res; } + l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4868,7 +4868,6 @@ right = _stack_item_0; left = stack_pointer[-1]; INT_INPLACE_OP(left, right, right, +, _PyCompactLong_Add); - l = left; if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); _tos_cache0 = right; @@ -4881,6 +4880,7 @@ else { res = _int_inplace_res; } + l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4905,11 +4905,10 @@ right = _stack_item_1; left = _stack_item_0; INT_INPLACE_OP(left, right, right, +, _PyCompactLong_Add); - l = left; if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); _tos_cache1 = right; - _tos_cache0 = stack_pointer[0]; + _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -4919,6 +4918,7 @@ else { res = _int_inplace_res; } + l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4939,7 +4939,6 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; INT_INPLACE_OP(left, right, right, -, _PyCompactLong_Subtract); - l = left; if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); SET_CURRENT_CACHED_VALUES(0); @@ -4951,6 +4950,7 @@ else { res = _int_inplace_res; } + l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -4974,7 +4974,6 @@ right = _stack_item_0; left = stack_pointer[-1]; INT_INPLACE_OP(left, right, right, -, _PyCompactLong_Subtract); - l = left; if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); _tos_cache0 = right; @@ -4987,6 +4986,7 @@ else { res = _int_inplace_res; } + l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -5011,11 +5011,10 @@ right = _stack_item_1; left = _stack_item_0; INT_INPLACE_OP(left, right, right, -, _PyCompactLong_Subtract); - l = left; if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); _tos_cache1 = right; - _tos_cache0 = stack_pointer[0]; + _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -5025,6 +5024,7 @@ else { res = _int_inplace_res; } + l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -5045,7 +5045,6 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; INT_INPLACE_OP(left, right, right, *, _PyCompactLong_Multiply); - l = left; if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); SET_CURRENT_CACHED_VALUES(0); @@ -5057,6 +5056,7 @@ else { res = _int_inplace_res; } + l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -5080,7 +5080,6 @@ right = _stack_item_0; left = stack_pointer[-1]; INT_INPLACE_OP(left, right, right, *, _PyCompactLong_Multiply); - l = left; if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); _tos_cache0 = right; @@ -5093,6 +5092,7 @@ else { res = _int_inplace_res; } + l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; @@ -5117,11 +5117,10 @@ right = _stack_item_1; left = _stack_item_0; INT_INPLACE_OP(left, right, right, *, _PyCompactLong_Multiply); - l = left; if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); _tos_cache1 = right; - _tos_cache0 = stack_pointer[0]; + _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -5131,6 +5130,7 @@ else { res = _int_inplace_res; } + l = left; r = right; _tos_cache2 = r; _tos_cache1 = l; From 4d6288bf489abafe7f9239d9ef7443779c21d0b0 Mon Sep 17 00:00:00 2001 From: Pieter Eendebak Date: Tue, 31 Mar 2026 22:55:20 +0200 Subject: [PATCH 09/11] move dup into macro --- Lib/collections/__init__.py | 1 + Lib/copy.py | 9 ++ Python/bytecodes.c | 54 +++--------- Python/ceval_macros.h | 15 ++-- Python/executor_cases.c.h | 162 ++++++++---------------------------- 5 files changed, 66 insertions(+), 175 deletions(-) diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py index 2eee4c70955513..b96763177ac093 100644 --- a/Lib/collections/__init__.py +++ b/Lib/collections/__init__.py @@ -452,6 +452,7 @@ def namedtuple(typename, field_names, *, rename=False, defaults=None, module=Non @classmethod def _make(cls, iterable): + #print(f'_make: {cls=} {iterable}') result = tuple_new(cls, iterable) if _len(result) != num_fields: raise TypeError(f'Expected {num_fields} arguments, got {len(result)}') diff --git a/Lib/copy.py b/Lib/copy.py index 6149301ad1389e..a34538d1e682eb 100644 --- a/Lib/copy.py +++ b/Lib/copy.py @@ -107,6 +107,10 @@ def copy(x): weakref.ref, super}) _copy_builtin_containers = frozenset({list, dict, set, bytearray}) +import _testcapi +_testcapi.pyobject_enable_deferred_refcount(_copy_atomic_types) +_testcapi.pyobject_enable_deferred_refcount(_copy_builtin_containers) + def deepcopy(x, memo=None): """Deep copy operation on arbitrary Python objects. @@ -168,6 +172,11 @@ def deepcopy(x, memo=None): _deepcopy_dispatch = d = {} +#import _testcapi +#_testcapi.pyobject_enable_deferred_refcount(_atomic_types) +#_testcapi.pyobject_enable_deferred_refcount(_deepcopy_dispatch) + + def _deepcopy_list(x, memo, deepcopy=deepcopy): y = [] diff --git a/Python/bytecodes.c b/Python/bytecodes.c index d60304b6258f55..92f5b5d530cbff 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -713,13 +713,8 @@ dummy_func( // the following _POP_TOP_INT becomes _POP_TOP_NOP. Tier 2 only. tier2 op(_BINARY_OP_ADD_INT_INPLACE, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, left, +, _PyCompactLong_Add); - EXIT_IF(!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)); - if (_int_inplace_ok) { - res = PyStackRef_DUP(left); - } - else { - res = _int_inplace_res; - } + EXIT_IF(PyStackRef_IsNull(_int_inplace_res)); + res = _int_inplace_res; l = left; r = right; INPUTS_DEAD(); @@ -727,13 +722,8 @@ dummy_func( tier2 op(_BINARY_OP_SUBTRACT_INT_INPLACE, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, left, -, _PyCompactLong_Subtract); - EXIT_IF(!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)); - if (_int_inplace_ok) { - res = PyStackRef_DUP(left); - } - else { - res = _int_inplace_res; - } + EXIT_IF(PyStackRef_IsNull(_int_inplace_res)); + res = _int_inplace_res; l = left; r = right; INPUTS_DEAD(); @@ -741,13 +731,8 @@ dummy_func( tier2 op(_BINARY_OP_MULTIPLY_INT_INPLACE, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, left, *, _PyCompactLong_Multiply); - EXIT_IF(!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)); - if (_int_inplace_ok) { - res = PyStackRef_DUP(left); - } - else { - res = _int_inplace_res; - } + EXIT_IF(PyStackRef_IsNull(_int_inplace_res)); + res = _int_inplace_res; l = left; r = right; INPUTS_DEAD(); @@ -755,13 +740,8 @@ dummy_func( tier2 op(_BINARY_OP_ADD_INT_INPLACE_RIGHT, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, right, +, _PyCompactLong_Add); - EXIT_IF(!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)); - if (_int_inplace_ok) { - res = PyStackRef_DUP(right); - } - else { - res = _int_inplace_res; - } + EXIT_IF(PyStackRef_IsNull(_int_inplace_res)); + res = _int_inplace_res; l = left; r = right; INPUTS_DEAD(); @@ -769,13 +749,8 @@ dummy_func( tier2 op(_BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, right, -, _PyCompactLong_Subtract); - EXIT_IF(!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)); - if (_int_inplace_ok) { - res = PyStackRef_DUP(right); - } - else { - res = _int_inplace_res; - } + EXIT_IF(PyStackRef_IsNull(_int_inplace_res)); + res = _int_inplace_res; l = left; r = right; INPUTS_DEAD(); @@ -783,13 +758,8 @@ dummy_func( tier2 op(_BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT, (left, right -- res, l, r)) { INT_INPLACE_OP(left, right, right, *, _PyCompactLong_Multiply); - EXIT_IF(!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)); - if (_int_inplace_ok) { - res = PyStackRef_DUP(right); - } - else { - res = _int_inplace_res; - } + EXIT_IF(PyStackRef_IsNull(_int_inplace_res)); + res = _int_inplace_res; l = left; r = right; INPUTS_DEAD(); diff --git a/Python/ceval_macros.h b/Python/ceval_macros.h index b0dd4b56152008..6b1292d87ee640 100644 --- a/Python/ceval_macros.h +++ b/Python/ceval_macros.h @@ -568,13 +568,13 @@ gen_try_set_executing(PyGenObject *gen) // cached small int singleton. We check _Py_IsImmortal on TARGET // to decide whether inplace mutation is safe. // -// After the macro: -// _int_inplace_ok = 1: mutated TARGET in place (caller uses TARGET as res) -// _int_inplace_ok = 0: _int_inplace_res holds the fallback result -// (may be NULL on allocation failure) +// After the macro, _int_inplace_res holds the result (may be NULL +// on allocation failure). On success, TARGET was mutated in place +// and _int_inplace_res is a DUP'd reference to it. On fallback +// (small int target, small int result, or overflow), _int_inplace_res +// is from FUNC (_PyCompactLong_Add etc.). // FUNC is the fallback function (_PyCompactLong_Add etc.) #define INT_INPLACE_OP(left, right, TARGET, OP, FUNC) \ - int _int_inplace_ok = 0; \ _PyStackRef _int_inplace_res = PyStackRef_NULL; \ do { \ PyObject *_target_o = PyStackRef_AsPyObjectBorrow(TARGET); \ @@ -595,10 +595,11 @@ gen_try_set_executing(PyGenObject *gen) (PyLongObject *)_target_o, _result < 0 ? -1 : 1, 1); \ ((PyLongObject *)_target_o)->long_value.ob_digit[0] = \ (digit)(_result < 0 ? -_result : _result); \ - _int_inplace_ok = 1; \ + _int_inplace_res = PyStackRef_DUP(TARGET); \ + break; \ } \ } while (0); \ - if (!_int_inplace_ok) { \ + if (PyStackRef_IsNull(_int_inplace_res)) { \ _int_inplace_res = FUNC( \ (PyLongObject *)PyStackRef_AsPyObjectBorrow(left), \ (PyLongObject *)PyStackRef_AsPyObjectBorrow(right)); \ diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h index 9de0999e191810..36353b77f1b07f 100644 --- a/Python/executor_cases.c.h +++ b/Python/executor_cases.c.h @@ -4515,17 +4515,12 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; INT_INPLACE_OP(left, right, left, +, _PyCompactLong_Add); - if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + if (PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); SET_CURRENT_CACHED_VALUES(0); JUMP_TO_JUMP_TARGET(); } - if (_int_inplace_ok) { - res = PyStackRef_DUP(left); - } - else { - res = _int_inplace_res; - } + res = _int_inplace_res; l = left; r = right; _tos_cache2 = r; @@ -4550,18 +4545,13 @@ right = _stack_item_0; left = stack_pointer[-1]; INT_INPLACE_OP(left, right, left, +, _PyCompactLong_Add); - if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + if (PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); _tos_cache0 = right; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } - if (_int_inplace_ok) { - res = PyStackRef_DUP(left); - } - else { - res = _int_inplace_res; - } + res = _int_inplace_res; l = left; r = right; _tos_cache2 = r; @@ -4587,19 +4577,14 @@ right = _stack_item_1; left = _stack_item_0; INT_INPLACE_OP(left, right, left, +, _PyCompactLong_Add); - if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + if (PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); _tos_cache1 = right; _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } - if (_int_inplace_ok) { - res = PyStackRef_DUP(left); - } - else { - res = _int_inplace_res; - } + res = _int_inplace_res; l = left; r = right; _tos_cache2 = r; @@ -4621,17 +4606,12 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; INT_INPLACE_OP(left, right, left, -, _PyCompactLong_Subtract); - if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + if (PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); SET_CURRENT_CACHED_VALUES(0); JUMP_TO_JUMP_TARGET(); } - if (_int_inplace_ok) { - res = PyStackRef_DUP(left); - } - else { - res = _int_inplace_res; - } + res = _int_inplace_res; l = left; r = right; _tos_cache2 = r; @@ -4656,18 +4636,13 @@ right = _stack_item_0; left = stack_pointer[-1]; INT_INPLACE_OP(left, right, left, -, _PyCompactLong_Subtract); - if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + if (PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); _tos_cache0 = right; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } - if (_int_inplace_ok) { - res = PyStackRef_DUP(left); - } - else { - res = _int_inplace_res; - } + res = _int_inplace_res; l = left; r = right; _tos_cache2 = r; @@ -4693,19 +4668,14 @@ right = _stack_item_1; left = _stack_item_0; INT_INPLACE_OP(left, right, left, -, _PyCompactLong_Subtract); - if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + if (PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); _tos_cache1 = right; _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } - if (_int_inplace_ok) { - res = PyStackRef_DUP(left); - } - else { - res = _int_inplace_res; - } + res = _int_inplace_res; l = left; r = right; _tos_cache2 = r; @@ -4727,17 +4697,12 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; INT_INPLACE_OP(left, right, left, *, _PyCompactLong_Multiply); - if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + if (PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); SET_CURRENT_CACHED_VALUES(0); JUMP_TO_JUMP_TARGET(); } - if (_int_inplace_ok) { - res = PyStackRef_DUP(left); - } - else { - res = _int_inplace_res; - } + res = _int_inplace_res; l = left; r = right; _tos_cache2 = r; @@ -4762,18 +4727,13 @@ right = _stack_item_0; left = stack_pointer[-1]; INT_INPLACE_OP(left, right, left, *, _PyCompactLong_Multiply); - if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + if (PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); _tos_cache0 = right; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } - if (_int_inplace_ok) { - res = PyStackRef_DUP(left); - } - else { - res = _int_inplace_res; - } + res = _int_inplace_res; l = left; r = right; _tos_cache2 = r; @@ -4799,19 +4759,14 @@ right = _stack_item_1; left = _stack_item_0; INT_INPLACE_OP(left, right, left, *, _PyCompactLong_Multiply); - if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + if (PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); _tos_cache1 = right; _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } - if (_int_inplace_ok) { - res = PyStackRef_DUP(left); - } - else { - res = _int_inplace_res; - } + res = _int_inplace_res; l = left; r = right; _tos_cache2 = r; @@ -4833,17 +4788,12 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; INT_INPLACE_OP(left, right, right, +, _PyCompactLong_Add); - if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + if (PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); SET_CURRENT_CACHED_VALUES(0); JUMP_TO_JUMP_TARGET(); } - if (_int_inplace_ok) { - res = PyStackRef_DUP(right); - } - else { - res = _int_inplace_res; - } + res = _int_inplace_res; l = left; r = right; _tos_cache2 = r; @@ -4868,18 +4818,13 @@ right = _stack_item_0; left = stack_pointer[-1]; INT_INPLACE_OP(left, right, right, +, _PyCompactLong_Add); - if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + if (PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); _tos_cache0 = right; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } - if (_int_inplace_ok) { - res = PyStackRef_DUP(right); - } - else { - res = _int_inplace_res; - } + res = _int_inplace_res; l = left; r = right; _tos_cache2 = r; @@ -4905,19 +4850,14 @@ right = _stack_item_1; left = _stack_item_0; INT_INPLACE_OP(left, right, right, +, _PyCompactLong_Add); - if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + if (PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); _tos_cache1 = right; _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } - if (_int_inplace_ok) { - res = PyStackRef_DUP(right); - } - else { - res = _int_inplace_res; - } + res = _int_inplace_res; l = left; r = right; _tos_cache2 = r; @@ -4939,17 +4879,12 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; INT_INPLACE_OP(left, right, right, -, _PyCompactLong_Subtract); - if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + if (PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); SET_CURRENT_CACHED_VALUES(0); JUMP_TO_JUMP_TARGET(); } - if (_int_inplace_ok) { - res = PyStackRef_DUP(right); - } - else { - res = _int_inplace_res; - } + res = _int_inplace_res; l = left; r = right; _tos_cache2 = r; @@ -4974,18 +4909,13 @@ right = _stack_item_0; left = stack_pointer[-1]; INT_INPLACE_OP(left, right, right, -, _PyCompactLong_Subtract); - if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + if (PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); _tos_cache0 = right; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } - if (_int_inplace_ok) { - res = PyStackRef_DUP(right); - } - else { - res = _int_inplace_res; - } + res = _int_inplace_res; l = left; r = right; _tos_cache2 = r; @@ -5011,19 +4941,14 @@ right = _stack_item_1; left = _stack_item_0; INT_INPLACE_OP(left, right, right, -, _PyCompactLong_Subtract); - if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + if (PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); _tos_cache1 = right; _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } - if (_int_inplace_ok) { - res = PyStackRef_DUP(right); - } - else { - res = _int_inplace_res; - } + res = _int_inplace_res; l = left; r = right; _tos_cache2 = r; @@ -5045,17 +4970,12 @@ right = stack_pointer[-1]; left = stack_pointer[-2]; INT_INPLACE_OP(left, right, right, *, _PyCompactLong_Multiply); - if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + if (PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); SET_CURRENT_CACHED_VALUES(0); JUMP_TO_JUMP_TARGET(); } - if (_int_inplace_ok) { - res = PyStackRef_DUP(right); - } - else { - res = _int_inplace_res; - } + res = _int_inplace_res; l = left; r = right; _tos_cache2 = r; @@ -5080,18 +5000,13 @@ right = _stack_item_0; left = stack_pointer[-1]; INT_INPLACE_OP(left, right, right, *, _PyCompactLong_Multiply); - if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + if (PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); _tos_cache0 = right; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } - if (_int_inplace_ok) { - res = PyStackRef_DUP(right); - } - else { - res = _int_inplace_res; - } + res = _int_inplace_res; l = left; r = right; _tos_cache2 = r; @@ -5117,19 +5032,14 @@ right = _stack_item_1; left = _stack_item_0; INT_INPLACE_OP(left, right, right, *, _PyCompactLong_Multiply); - if (!_int_inplace_ok && PyStackRef_IsNull(_int_inplace_res)) { + if (PyStackRef_IsNull(_int_inplace_res)) { UOP_STAT_INC(uopcode, miss); _tos_cache1 = right; _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } - if (_int_inplace_ok) { - res = PyStackRef_DUP(right); - } - else { - res = _int_inplace_res; - } + res = _int_inplace_res; l = left; r = right; _tos_cache2 = r; From 3fb1e6cbbc311efb268b59b3e3e1a052b95995d8 Mon Sep 17 00:00:00 2001 From: Pieter Eendebak Date: Tue, 31 Mar 2026 22:56:44 +0200 Subject: [PATCH 10/11] Apply suggestion from @eendebakpt --- Lib/collections/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py index 6f88cbe2752131..febab521629228 100644 --- a/Lib/collections/__init__.py +++ b/Lib/collections/__init__.py @@ -452,7 +452,6 @@ def namedtuple(typename, field_names, *, rename=False, defaults=None, module=Non @classmethod def _make(cls, iterable): - #print(f'_make: {cls=} {iterable}') result = tuple_new(cls, iterable) if _len(result) != num_fields: raise TypeError(f'Expected {num_fields} arguments, got {len(result)}') From 7710226e82c354bdef504ccca7937a408a493937 Mon Sep 17 00:00:00 2001 From: Pieter Eendebak Date: Tue, 31 Mar 2026 22:59:32 +0200 Subject: [PATCH 11/11] revert --- Lib/copy.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/Lib/copy.py b/Lib/copy.py index a34538d1e682eb..6149301ad1389e 100644 --- a/Lib/copy.py +++ b/Lib/copy.py @@ -107,10 +107,6 @@ def copy(x): weakref.ref, super}) _copy_builtin_containers = frozenset({list, dict, set, bytearray}) -import _testcapi -_testcapi.pyobject_enable_deferred_refcount(_copy_atomic_types) -_testcapi.pyobject_enable_deferred_refcount(_copy_builtin_containers) - def deepcopy(x, memo=None): """Deep copy operation on arbitrary Python objects. @@ -172,11 +168,6 @@ def deepcopy(x, memo=None): _deepcopy_dispatch = d = {} -#import _testcapi -#_testcapi.pyobject_enable_deferred_refcount(_atomic_types) -#_testcapi.pyobject_enable_deferred_refcount(_deepcopy_dispatch) - - def _deepcopy_list(x, memo, deepcopy=deepcopy): y = []