destructor tp_finalize;
vectorcallfunc tp_vectorcall;
+ /* Below here all fields are internal to the VM */
+
/* bitset of which type-watchers care about this type */
unsigned char tp_watched;
* Otherwise, limited to MAX_VERSIONS_PER_CLASS (defined elsewhere).
*/
uint16_t tp_versions_used;
+ _Py_iteritemfunc _tp_iteritem; /* Virtual iterator next function */
};
#define _Py_ATTR_CACHE_UNUSED (30000) // (see tp_versions_used)
#define INLINE_CACHE_ENTRIES_FOR_ITER CACHE_ENTRIES(_PyForIterCache)
+typedef struct {
+ _Py_BackoffCounter counter;
+} _PyGetIterCache;
+
+#define INLINE_CACHE_ENTRIES_GET_ITER CACHE_ENTRIES(_PyGetIterCache)
+
typedef struct {
_Py_BackoffCounter counter;
} _PySendCache;
PyAPI_FUNC(void) _Py_GatherStats_GetIter(_PyStackRef iterable);
PyAPI_FUNC(void) _Py_Specialize_CallFunctionEx(_PyStackRef func_st, _Py_CODEUNIT *instr);
PyAPI_FUNC(void) _Py_Specialize_Resume(_Py_CODEUNIT *instr, PyThreadState *tstate, _PyInterpreterFrame *frame);
+PyAPI_FUNC(void) _Py_Specialize_GetIter(_PyStackRef iterable, _Py_CODEUNIT *instr);
// Utility functions for reading/writing 32/64-bit values in the inline caches.
// Great care should be taken to ensure that these functions remain correct and
Python 3.15a8 3662 (Add counter to RESUME)
Python 3.15a8 3663 (Merge GET_ITER and GET_YIELD_FROM_ITER. Modify SEND to make it a bit more like FOR_ITER)
Python 3.15a8 3664 (Fix __qualname__ for __annotate__ functions)
+ Python 3.15a8 3665 (Add FOR_ITER_VIRTUAL and GET_ITER specializations)
Python 3.16 will start with 3700
*/
-#define PYC_MAGIC_NUMBER 3664
+#define PYC_MAGIC_NUMBER 3665
/* This is equivalent to converting PYC_MAGIC_NUMBER to 2 bytes
(little-endian) and then appending b'\r\n'. */
#define PYC_MAGIC_NUMBER_TOKEN \
return 2;
case FOR_ITER_TUPLE:
return 2;
+ case FOR_ITER_VIRTUAL:
+ return 2;
case GET_AITER:
return 1;
case GET_ANEXT:
return 1;
case GET_ITER:
return 1;
+ case GET_ITER_SELF:
+ return 1;
+ case GET_ITER_VIRTUAL:
+ return 1;
case GET_LEN:
return 1;
case IMPORT_FROM:
return 3;
case FOR_ITER_TUPLE:
return 3;
+ case FOR_ITER_VIRTUAL:
+ return 3;
case GET_AITER:
return 1;
case GET_ANEXT:
return 1;
case GET_ITER:
return 2;
+ case GET_ITER_SELF:
+ return 2;
+ case GET_ITER_VIRTUAL:
+ return 2;
case GET_LEN:
return 2;
case IMPORT_FROM:
[FOR_ITER_LIST] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG | HAS_UNPREDICTABLE_JUMP_FLAG },
[FOR_ITER_RANGE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_UNPREDICTABLE_JUMP_FLAG },
[FOR_ITER_TUPLE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_EXIT_FLAG | HAS_UNPREDICTABLE_JUMP_FLAG },
+ [FOR_ITER_VIRTUAL] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG | HAS_UNPREDICTABLE_JUMP_FLAG },
[GET_AITER] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[GET_ANEXT] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
[GET_AWAITABLE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
- [GET_ITER] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
+ [GET_ITER] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG | HAS_RECORDS_VALUE_FLAG },
+ [GET_ITER_SELF] = { true, INSTR_FMT_IXC, HAS_EXIT_FLAG | HAS_RECORDS_VALUE_FLAG },
+ [GET_ITER_VIRTUAL] = { true, INSTR_FMT_IXC, HAS_EXIT_FLAG | HAS_RECORDS_VALUE_FLAG },
[GET_LEN] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[IMPORT_FROM] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[IMPORT_NAME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[FOR_ITER_LIST] = { .nuops = 3, .uops = { { _ITER_CHECK_LIST, OPARG_SIMPLE, 1 }, { _ITER_JUMP_LIST, OPARG_REPLACED, 1 }, { _ITER_NEXT_LIST, OPARG_REPLACED, 1 } } },
[FOR_ITER_RANGE] = { .nuops = 3, .uops = { { _ITER_CHECK_RANGE, OPARG_SIMPLE, 1 }, { _ITER_JUMP_RANGE, OPARG_REPLACED, 1 }, { _ITER_NEXT_RANGE, OPARG_SIMPLE, 1 } } },
[FOR_ITER_TUPLE] = { .nuops = 3, .uops = { { _ITER_CHECK_TUPLE, OPARG_SIMPLE, 1 }, { _ITER_JUMP_TUPLE, OPARG_REPLACED, 1 }, { _ITER_NEXT_TUPLE, OPARG_SIMPLE, 1 } } },
+ [FOR_ITER_VIRTUAL] = { .nuops = 2, .uops = { { _GUARD_NOS_ITER_VIRTUAL, OPARG_SIMPLE, 1 }, { _FOR_ITER_VIRTUAL, OPARG_REPLACED, 1 } } },
[GET_AITER] = { .nuops = 1, .uops = { { _GET_AITER, OPARG_SIMPLE, 0 } } },
[GET_ANEXT] = { .nuops = 1, .uops = { { _GET_ANEXT, OPARG_SIMPLE, 0 } } },
[GET_AWAITABLE] = { .nuops = 1, .uops = { { _GET_AWAITABLE, OPARG_SIMPLE, 0 } } },
- [GET_ITER] = { .nuops = 1, .uops = { { _GET_ITER, OPARG_SIMPLE, 0 } } },
+ [GET_ITER] = { .nuops = 2, .uops = { { _RECORD_TOS_TYPE, OPARG_SIMPLE, 0 }, { _GET_ITER, OPARG_SIMPLE, 0 } } },
+ [GET_ITER_SELF] = { .nuops = 3, .uops = { { _RECORD_TOS_TYPE, OPARG_SIMPLE, 0 }, { _GUARD_ITERATOR, OPARG_SIMPLE, 1 }, { _PUSH_NULL, OPARG_SIMPLE, 1 } } },
+ [GET_ITER_VIRTUAL] = { .nuops = 3, .uops = { { _RECORD_TOS_TYPE, OPARG_SIMPLE, 0 }, { _GUARD_ITER_VIRTUAL, OPARG_SIMPLE, 1 }, { _PUSH_TAGGED_ZERO, OPARG_SIMPLE, 1 } } },
[GET_LEN] = { .nuops = 1, .uops = { { _GET_LEN, OPARG_SIMPLE, 0 } } },
[IMPORT_FROM] = { .nuops = 1, .uops = { { _IMPORT_FROM, OPARG_SIMPLE, 0 } } },
[IMPORT_NAME] = { .nuops = 1, .uops = { { _IMPORT_NAME, OPARG_SIMPLE, 0 } } },
[FOR_ITER_LIST] = "FOR_ITER_LIST",
[FOR_ITER_RANGE] = "FOR_ITER_RANGE",
[FOR_ITER_TUPLE] = "FOR_ITER_TUPLE",
+ [FOR_ITER_VIRTUAL] = "FOR_ITER_VIRTUAL",
[GET_AITER] = "GET_AITER",
[GET_ANEXT] = "GET_ANEXT",
[GET_AWAITABLE] = "GET_AWAITABLE",
[GET_ITER] = "GET_ITER",
+ [GET_ITER_SELF] = "GET_ITER_SELF",
+ [GET_ITER_VIRTUAL] = "GET_ITER_VIRTUAL",
[GET_LEN] = "GET_LEN",
[IMPORT_FROM] = "IMPORT_FROM",
[IMPORT_NAME] = "IMPORT_NAME",
[POP_JUMP_IF_FALSE] = 1,
[POP_JUMP_IF_NONE] = 1,
[POP_JUMP_IF_NOT_NONE] = 1,
+ [GET_ITER] = 1,
[FOR_ITER] = 1,
[CALL] = 3,
[CALL_KW] = 3,
[125] = 125,
[126] = 126,
[127] = 127,
- [214] = 214,
- [215] = 215,
- [216] = 216,
[217] = 217,
[218] = 218,
[219] = 219,
[FOR_ITER_LIST] = FOR_ITER,
[FOR_ITER_RANGE] = FOR_ITER,
[FOR_ITER_TUPLE] = FOR_ITER,
+ [FOR_ITER_VIRTUAL] = FOR_ITER,
[GET_AITER] = GET_AITER,
[GET_ANEXT] = GET_ANEXT,
[GET_AWAITABLE] = GET_AWAITABLE,
[GET_ITER] = GET_ITER,
+ [GET_ITER_SELF] = GET_ITER,
+ [GET_ITER_VIRTUAL] = GET_ITER,
[GET_LEN] = GET_LEN,
[IMPORT_FROM] = IMPORT_FROM,
[IMPORT_NAME] = IMPORT_NAME,
case 125: \
case 126: \
case 127: \
- case 214: \
- case 215: \
- case 216: \
case 217: \
case 218: \
case 219: \
#define RESUME_AFTER_YIELD 1
#define RESUME_AFTER_YIELD_FROM 2
#define RESUME_AFTER_AWAIT 3
+#define RESUME_AT_GEN_EXPR_START 4
-#define RESUME_OPARG_LOCATION_MASK 0x3
-#define RESUME_OPARG_DEPTH1_MASK 0x4
+#define RESUME_OPARG_LOCATION_MASK 0x7
+#define RESUME_OPARG_DEPTH1_MASK 0x8
#define GET_ITER_YIELD_FROM 1
#define GET_ITER_YIELD_FROM_NO_CHECK 2
#define _FOR_ITER 410
#define _FOR_ITER_GEN_FRAME 411
#define _FOR_ITER_TIER_TWO 412
+#define _FOR_ITER_VIRTUAL 413
+#define _FOR_ITER_VIRTUAL_TIER_TWO 414
#define _GET_AITER GET_AITER
#define _GET_ANEXT GET_ANEXT
#define _GET_AWAITABLE GET_AWAITABLE
-#define _GET_ITER GET_ITER
+#define _GET_ITER 415
+#define _GET_ITER_TRAD 416
#define _GET_LEN GET_LEN
-#define _GUARD_BINARY_OP_EXTEND 413
-#define _GUARD_BINARY_OP_EXTEND_LHS 414
-#define _GUARD_BINARY_OP_EXTEND_RHS 415
-#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS 416
-#define _GUARD_BIT_IS_SET_POP 417
-#define _GUARD_BIT_IS_SET_POP_4 418
-#define _GUARD_BIT_IS_SET_POP_5 419
-#define _GUARD_BIT_IS_SET_POP_6 420
-#define _GUARD_BIT_IS_SET_POP_7 421
-#define _GUARD_BIT_IS_UNSET_POP 422
-#define _GUARD_BIT_IS_UNSET_POP_4 423
-#define _GUARD_BIT_IS_UNSET_POP_5 424
-#define _GUARD_BIT_IS_UNSET_POP_6 425
-#define _GUARD_BIT_IS_UNSET_POP_7 426
-#define _GUARD_CALLABLE_BUILTIN_CLASS 427
-#define _GUARD_CALLABLE_BUILTIN_FAST 428
-#define _GUARD_CALLABLE_BUILTIN_FAST_WITH_KEYWORDS 429
-#define _GUARD_CALLABLE_BUILTIN_O 430
-#define _GUARD_CALLABLE_ISINSTANCE 431
-#define _GUARD_CALLABLE_LEN 432
-#define _GUARD_CALLABLE_LIST_APPEND 433
-#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST 434
-#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 435
-#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_NOARGS 436
-#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_O 437
-#define _GUARD_CALLABLE_STR_1 438
-#define _GUARD_CALLABLE_TUPLE_1 439
-#define _GUARD_CALLABLE_TYPE_1 440
-#define _GUARD_CODE_VERSION_RETURN_GENERATOR 441
-#define _GUARD_CODE_VERSION_RETURN_VALUE 442
-#define _GUARD_CODE_VERSION_YIELD_VALUE 443
-#define _GUARD_CODE_VERSION__PUSH_FRAME 444
-#define _GUARD_DORV_NO_DICT 445
-#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 446
-#define _GUARD_GLOBALS_VERSION 447
-#define _GUARD_IP_RETURN_GENERATOR 448
-#define _GUARD_IP_RETURN_VALUE 449
-#define _GUARD_IP_YIELD_VALUE 450
-#define _GUARD_IP__PUSH_FRAME 451
-#define _GUARD_IS_FALSE_POP 452
-#define _GUARD_IS_NONE_POP 453
-#define _GUARD_IS_NOT_NONE_POP 454
-#define _GUARD_IS_TRUE_POP 455
-#define _GUARD_KEYS_VERSION 456
-#define _GUARD_LOAD_SUPER_ATTR_METHOD 457
-#define _GUARD_NOS_ANY_DICT 458
-#define _GUARD_NOS_COMPACT_ASCII 459
-#define _GUARD_NOS_DICT 460
-#define _GUARD_NOS_FLOAT 461
-#define _GUARD_NOS_INT 462
-#define _GUARD_NOS_LIST 463
-#define _GUARD_NOS_NOT_NULL 464
-#define _GUARD_NOS_NULL 465
-#define _GUARD_NOS_OVERFLOWED 466
-#define _GUARD_NOS_TUPLE 467
-#define _GUARD_NOS_TYPE_VERSION 468
-#define _GUARD_NOS_UNICODE 469
-#define _GUARD_NOT_EXHAUSTED_LIST 470
-#define _GUARD_NOT_EXHAUSTED_RANGE 471
-#define _GUARD_NOT_EXHAUSTED_TUPLE 472
-#define _GUARD_THIRD_NULL 473
-#define _GUARD_TOS_ANY_DICT 474
-#define _GUARD_TOS_ANY_SET 475
-#define _GUARD_TOS_DICT 476
-#define _GUARD_TOS_FLOAT 477
-#define _GUARD_TOS_FROZENDICT 478
-#define _GUARD_TOS_FROZENSET 479
-#define _GUARD_TOS_INT 480
-#define _GUARD_TOS_LIST 481
-#define _GUARD_TOS_OVERFLOWED 482
-#define _GUARD_TOS_SET 483
-#define _GUARD_TOS_SLICE 484
-#define _GUARD_TOS_TUPLE 485
-#define _GUARD_TOS_UNICODE 486
-#define _GUARD_TYPE_VERSION 487
-#define _GUARD_TYPE_VERSION_LOCKED 488
-#define _HANDLE_PENDING_AND_DEOPT 489
+#define _GUARD_BINARY_OP_EXTEND 417
+#define _GUARD_BINARY_OP_EXTEND_LHS 418
+#define _GUARD_BINARY_OP_EXTEND_RHS 419
+#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS 420
+#define _GUARD_BIT_IS_SET_POP 421
+#define _GUARD_BIT_IS_SET_POP_4 422
+#define _GUARD_BIT_IS_SET_POP_5 423
+#define _GUARD_BIT_IS_SET_POP_6 424
+#define _GUARD_BIT_IS_SET_POP_7 425
+#define _GUARD_BIT_IS_UNSET_POP 426
+#define _GUARD_BIT_IS_UNSET_POP_4 427
+#define _GUARD_BIT_IS_UNSET_POP_5 428
+#define _GUARD_BIT_IS_UNSET_POP_6 429
+#define _GUARD_BIT_IS_UNSET_POP_7 430
+#define _GUARD_CALLABLE_BUILTIN_CLASS 431
+#define _GUARD_CALLABLE_BUILTIN_FAST 432
+#define _GUARD_CALLABLE_BUILTIN_FAST_WITH_KEYWORDS 433
+#define _GUARD_CALLABLE_BUILTIN_O 434
+#define _GUARD_CALLABLE_ISINSTANCE 435
+#define _GUARD_CALLABLE_LEN 436
+#define _GUARD_CALLABLE_LIST_APPEND 437
+#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST 438
+#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 439
+#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_NOARGS 440
+#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_O 441
+#define _GUARD_CALLABLE_STR_1 442
+#define _GUARD_CALLABLE_TUPLE_1 443
+#define _GUARD_CALLABLE_TYPE_1 444
+#define _GUARD_CODE_VERSION_RETURN_GENERATOR 445
+#define _GUARD_CODE_VERSION_RETURN_VALUE 446
+#define _GUARD_CODE_VERSION_YIELD_VALUE 447
+#define _GUARD_CODE_VERSION__PUSH_FRAME 448
+#define _GUARD_DORV_NO_DICT 449
+#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 450
+#define _GUARD_GLOBALS_VERSION 451
+#define _GUARD_IP_RETURN_GENERATOR 452
+#define _GUARD_IP_RETURN_VALUE 453
+#define _GUARD_IP_YIELD_VALUE 454
+#define _GUARD_IP__PUSH_FRAME 455
+#define _GUARD_IS_FALSE_POP 456
+#define _GUARD_IS_NONE_POP 457
+#define _GUARD_IS_NOT_NONE_POP 458
+#define _GUARD_IS_TRUE_POP 459
+#define _GUARD_ITERATOR 460
+#define _GUARD_ITER_VIRTUAL 461
+#define _GUARD_KEYS_VERSION 462
+#define _GUARD_LOAD_SUPER_ATTR_METHOD 463
+#define _GUARD_NOS_ANY_DICT 464
+#define _GUARD_NOS_COMPACT_ASCII 465
+#define _GUARD_NOS_DICT 466
+#define _GUARD_NOS_FLOAT 467
+#define _GUARD_NOS_INT 468
+#define _GUARD_NOS_ITER_VIRTUAL 469
+#define _GUARD_NOS_LIST 470
+#define _GUARD_NOS_NOT_NULL 471
+#define _GUARD_NOS_NULL 472
+#define _GUARD_NOS_OVERFLOWED 473
+#define _GUARD_NOS_TUPLE 474
+#define _GUARD_NOS_TYPE_VERSION 475
+#define _GUARD_NOS_UNICODE 476
+#define _GUARD_NOT_EXHAUSTED_LIST 477
+#define _GUARD_NOT_EXHAUSTED_RANGE 478
+#define _GUARD_NOT_EXHAUSTED_TUPLE 479
+#define _GUARD_THIRD_NULL 480
+#define _GUARD_TOS_ANY_DICT 481
+#define _GUARD_TOS_ANY_SET 482
+#define _GUARD_TOS_DICT 483
+#define _GUARD_TOS_FLOAT 484
+#define _GUARD_TOS_FROZENDICT 485
+#define _GUARD_TOS_FROZENSET 486
+#define _GUARD_TOS_INT 487
+#define _GUARD_TOS_LIST 488
+#define _GUARD_TOS_OVERFLOWED 489
+#define _GUARD_TOS_SET 490
+#define _GUARD_TOS_SLICE 491
+#define _GUARD_TOS_TUPLE 492
+#define _GUARD_TOS_UNICODE 493
+#define _GUARD_TYPE 494
+#define _GUARD_TYPE_VERSION 495
+#define _GUARD_TYPE_VERSION_LOCKED 496
+#define _HANDLE_PENDING_AND_DEOPT 497
#define _IMPORT_FROM IMPORT_FROM
#define _IMPORT_NAME IMPORT_NAME
-#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS 490
-#define _INIT_CALL_PY_EXACT_ARGS 491
-#define _INIT_CALL_PY_EXACT_ARGS_0 492
-#define _INIT_CALL_PY_EXACT_ARGS_1 493
-#define _INIT_CALL_PY_EXACT_ARGS_2 494
-#define _INIT_CALL_PY_EXACT_ARGS_3 495
-#define _INIT_CALL_PY_EXACT_ARGS_4 496
-#define _INSERT_NULL 497
+#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS 498
+#define _INIT_CALL_PY_EXACT_ARGS 499
+#define _INIT_CALL_PY_EXACT_ARGS_0 500
+#define _INIT_CALL_PY_EXACT_ARGS_1 501
+#define _INIT_CALL_PY_EXACT_ARGS_2 502
+#define _INIT_CALL_PY_EXACT_ARGS_3 503
+#define _INIT_CALL_PY_EXACT_ARGS_4 504
+#define _INSERT_NULL 505
#define _INSTRUMENTED_FOR_ITER INSTRUMENTED_FOR_ITER
#define _INSTRUMENTED_INSTRUCTION INSTRUMENTED_INSTRUCTION
#define _INSTRUMENTED_JUMP_FORWARD INSTRUMENTED_JUMP_FORWARD
#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 498
-#define _IS_OP 499
-#define _ITER_CHECK_LIST 500
-#define _ITER_CHECK_RANGE 501
-#define _ITER_CHECK_TUPLE 502
-#define _ITER_JUMP_LIST 503
-#define _ITER_JUMP_RANGE 504
-#define _ITER_JUMP_TUPLE 505
-#define _ITER_NEXT_LIST 506
-#define _ITER_NEXT_LIST_TIER_TWO 507
-#define _ITER_NEXT_RANGE 508
-#define _ITER_NEXT_TUPLE 509
+#define _IS_NONE 506
+#define _IS_OP 507
+#define _ITER_CHECK_LIST 508
+#define _ITER_CHECK_RANGE 509
+#define _ITER_CHECK_TUPLE 510
+#define _ITER_JUMP_LIST 511
+#define _ITER_JUMP_RANGE 512
+#define _ITER_JUMP_TUPLE 513
+#define _ITER_NEXT_LIST 514
+#define _ITER_NEXT_LIST_TIER_TWO 515
+#define _ITER_NEXT_RANGE 516
+#define _ITER_NEXT_TUPLE 517
#define _JUMP_BACKWARD_NO_INTERRUPT JUMP_BACKWARD_NO_INTERRUPT
-#define _JUMP_TO_TOP 510
+#define _JUMP_TO_TOP 518
#define _LIST_APPEND LIST_APPEND
-#define _LIST_EXTEND 511
-#define _LOAD_ATTR 512
-#define _LOAD_ATTR_CLASS 513
-#define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN_FRAME 514
-#define _LOAD_ATTR_INSTANCE_VALUE 515
-#define _LOAD_ATTR_METHOD_LAZY_DICT 516
-#define _LOAD_ATTR_METHOD_NO_DICT 517
-#define _LOAD_ATTR_METHOD_WITH_VALUES 518
-#define _LOAD_ATTR_MODULE 519
-#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 520
-#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 521
-#define _LOAD_ATTR_PROPERTY_FRAME 522
-#define _LOAD_ATTR_SLOT 523
-#define _LOAD_ATTR_WITH_HINT 524
+#define _LIST_EXTEND 519
+#define _LOAD_ATTR 520
+#define _LOAD_ATTR_CLASS 521
+#define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN_FRAME 522
+#define _LOAD_ATTR_INSTANCE_VALUE 523
+#define _LOAD_ATTR_METHOD_LAZY_DICT 524
+#define _LOAD_ATTR_METHOD_NO_DICT 525
+#define _LOAD_ATTR_METHOD_WITH_VALUES 526
+#define _LOAD_ATTR_MODULE 527
+#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 528
+#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 529
+#define _LOAD_ATTR_PROPERTY_FRAME 530
+#define _LOAD_ATTR_SLOT 531
+#define _LOAD_ATTR_WITH_HINT 532
#define _LOAD_BUILD_CLASS LOAD_BUILD_CLASS
-#define _LOAD_BYTECODE 525
+#define _LOAD_BYTECODE 533
#define _LOAD_COMMON_CONSTANT LOAD_COMMON_CONSTANT
#define _LOAD_CONST LOAD_CONST
-#define _LOAD_CONST_INLINE 526
-#define _LOAD_CONST_INLINE_BORROW 527
+#define _LOAD_CONST_INLINE 534
+#define _LOAD_CONST_INLINE_BORROW 535
#define _LOAD_DEREF LOAD_DEREF
-#define _LOAD_FAST 528
-#define _LOAD_FAST_0 529
-#define _LOAD_FAST_1 530
-#define _LOAD_FAST_2 531
-#define _LOAD_FAST_3 532
-#define _LOAD_FAST_4 533
-#define _LOAD_FAST_5 534
-#define _LOAD_FAST_6 535
-#define _LOAD_FAST_7 536
+#define _LOAD_FAST 536
+#define _LOAD_FAST_0 537
+#define _LOAD_FAST_1 538
+#define _LOAD_FAST_2 539
+#define _LOAD_FAST_3 540
+#define _LOAD_FAST_4 541
+#define _LOAD_FAST_5 542
+#define _LOAD_FAST_6 543
+#define _LOAD_FAST_7 544
#define _LOAD_FAST_AND_CLEAR LOAD_FAST_AND_CLEAR
-#define _LOAD_FAST_BORROW 537
-#define _LOAD_FAST_BORROW_0 538
-#define _LOAD_FAST_BORROW_1 539
-#define _LOAD_FAST_BORROW_2 540
-#define _LOAD_FAST_BORROW_3 541
-#define _LOAD_FAST_BORROW_4 542
-#define _LOAD_FAST_BORROW_5 543
-#define _LOAD_FAST_BORROW_6 544
-#define _LOAD_FAST_BORROW_7 545
+#define _LOAD_FAST_BORROW 545
+#define _LOAD_FAST_BORROW_0 546
+#define _LOAD_FAST_BORROW_1 547
+#define _LOAD_FAST_BORROW_2 548
+#define _LOAD_FAST_BORROW_3 549
+#define _LOAD_FAST_BORROW_4 550
+#define _LOAD_FAST_BORROW_5 551
+#define _LOAD_FAST_BORROW_6 552
+#define _LOAD_FAST_BORROW_7 553
#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 546
-#define _LOAD_GLOBAL_BUILTINS 547
-#define _LOAD_GLOBAL_MODULE 548
+#define _LOAD_GLOBAL 554
+#define _LOAD_GLOBAL_BUILTINS 555
+#define _LOAD_GLOBAL_MODULE 556
#define _LOAD_LOCALS LOAD_LOCALS
#define _LOAD_NAME LOAD_NAME
-#define _LOAD_SMALL_INT 549
-#define _LOAD_SMALL_INT_0 550
-#define _LOAD_SMALL_INT_1 551
-#define _LOAD_SMALL_INT_2 552
-#define _LOAD_SMALL_INT_3 553
-#define _LOAD_SPECIAL 554
+#define _LOAD_SMALL_INT 557
+#define _LOAD_SMALL_INT_0 558
+#define _LOAD_SMALL_INT_1 559
+#define _LOAD_SMALL_INT_2 560
+#define _LOAD_SMALL_INT_3 561
+#define _LOAD_SPECIAL 562
#define _LOAD_SUPER_ATTR_ATTR LOAD_SUPER_ATTR_ATTR
-#define _LOAD_SUPER_ATTR_METHOD 555
-#define _LOCK_OBJECT 556
-#define _MAKE_CALLARGS_A_TUPLE 557
+#define _LOAD_SUPER_ATTR_METHOD 563
+#define _LOCK_OBJECT 564
+#define _MAKE_CALLARGS_A_TUPLE 565
#define _MAKE_CELL MAKE_CELL
-#define _MAKE_FUNCTION 558
-#define _MAKE_HEAP_SAFE 559
-#define _MAKE_WARM 560
+#define _MAKE_FUNCTION 566
+#define _MAKE_HEAP_SAFE 567
+#define _MAKE_WARM 568
#define _MAP_ADD MAP_ADD
-#define _MATCH_CLASS 561
+#define _MATCH_CLASS 569
#define _MATCH_KEYS MATCH_KEYS
#define _MATCH_MAPPING MATCH_MAPPING
#define _MATCH_SEQUENCE MATCH_SEQUENCE
-#define _MAYBE_EXPAND_METHOD 562
-#define _MAYBE_EXPAND_METHOD_KW 563
-#define _MONITOR_CALL 564
-#define _MONITOR_CALL_KW 565
-#define _MONITOR_JUMP_BACKWARD 566
-#define _MONITOR_RESUME 567
+#define _MAYBE_EXPAND_METHOD 570
+#define _MAYBE_EXPAND_METHOD_KW 571
+#define _MONITOR_CALL 572
+#define _MONITOR_CALL_KW 573
+#define _MONITOR_JUMP_BACKWARD 574
+#define _MONITOR_RESUME 575
#define _NOP NOP
#define _POP_EXCEPT POP_EXCEPT
#define _POP_ITER POP_ITER
-#define _POP_JUMP_IF_FALSE 568
-#define _POP_JUMP_IF_TRUE 569
+#define _POP_JUMP_IF_FALSE 576
+#define _POP_JUMP_IF_TRUE 577
#define _POP_TOP POP_TOP
-#define _POP_TOP_FLOAT 570
-#define _POP_TOP_INT 571
-#define _POP_TOP_NOP 572
-#define _POP_TOP_OPARG 573
-#define _POP_TOP_UNICODE 574
+#define _POP_TOP_FLOAT 578
+#define _POP_TOP_INT 579
+#define _POP_TOP_NOP 580
+#define _POP_TOP_OPARG 581
+#define _POP_TOP_UNICODE 582
#define _PUSH_EXC_INFO PUSH_EXC_INFO
-#define _PUSH_FRAME 575
+#define _PUSH_FRAME 583
#define _PUSH_NULL PUSH_NULL
-#define _PUSH_NULL_CONDITIONAL 576
-#define _PY_FRAME_EX 577
-#define _PY_FRAME_GENERAL 578
-#define _PY_FRAME_KW 579
-#define _RECORD_3OS_GEN_FUNC 580
-#define _RECORD_4OS 581
-#define _RECORD_BOUND_METHOD 582
-#define _RECORD_CALLABLE 583
-#define _RECORD_CALLABLE_KW 584
-#define _RECORD_CODE 585
-#define _RECORD_NOS 586
-#define _RECORD_NOS_GEN_FUNC 587
-#define _RECORD_NOS_TYPE 588
-#define _RECORD_TOS 589
-#define _RECORD_TOS_TYPE 590
-#define _REPLACE_WITH_TRUE 591
-#define _RESUME_CHECK 592
+#define _PUSH_NULL_CONDITIONAL 584
+#define _PUSH_TAGGED_ZERO 585
+#define _PY_FRAME_EX 586
+#define _PY_FRAME_GENERAL 587
+#define _PY_FRAME_KW 588
+#define _RECORD_3OS_GEN_FUNC 589
+#define _RECORD_4OS 590
+#define _RECORD_BOUND_METHOD 591
+#define _RECORD_CALLABLE 592
+#define _RECORD_CALLABLE_KW 593
+#define _RECORD_CODE 594
+#define _RECORD_NOS 595
+#define _RECORD_NOS_GEN_FUNC 596
+#define _RECORD_NOS_TYPE 597
+#define _RECORD_TOS 598
+#define _RECORD_TOS_TYPE 599
+#define _REPLACE_WITH_TRUE 600
+#define _RESUME_CHECK 601
#define _RETURN_GENERATOR RETURN_GENERATOR
-#define _RETURN_VALUE 593
-#define _SAVE_RETURN_OFFSET 594
-#define _SEND 595
-#define _SEND_GEN_FRAME 596
+#define _RETURN_VALUE 602
+#define _SAVE_RETURN_OFFSET 603
+#define _SEND 604
+#define _SEND_GEN_FRAME 605
#define _SETUP_ANNOTATIONS SETUP_ANNOTATIONS
#define _SET_ADD SET_ADD
#define _SET_FUNCTION_ATTRIBUTE SET_FUNCTION_ATTRIBUTE
-#define _SET_UPDATE 597
-#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW 598
-#define _SPILL_OR_RELOAD 599
-#define _START_EXECUTOR 600
-#define _STORE_ATTR 601
-#define _STORE_ATTR_INSTANCE_VALUE 602
-#define _STORE_ATTR_SLOT 603
-#define _STORE_ATTR_WITH_HINT 604
+#define _SET_UPDATE 606
+#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW 607
+#define _SPILL_OR_RELOAD 608
+#define _START_EXECUTOR 609
+#define _STORE_ATTR 610
+#define _STORE_ATTR_INSTANCE_VALUE 611
+#define _STORE_ATTR_SLOT 612
+#define _STORE_ATTR_WITH_HINT 613
#define _STORE_DEREF STORE_DEREF
#define _STORE_GLOBAL STORE_GLOBAL
#define _STORE_NAME STORE_NAME
-#define _STORE_SLICE 605
-#define _STORE_SUBSCR 606
-#define _STORE_SUBSCR_DICT 607
-#define _STORE_SUBSCR_DICT_KNOWN_HASH 608
-#define _STORE_SUBSCR_LIST_INT 609
-#define _SWAP 610
-#define _SWAP_2 611
-#define _SWAP_3 612
-#define _SWAP_FAST 613
-#define _SWAP_FAST_0 614
-#define _SWAP_FAST_1 615
-#define _SWAP_FAST_2 616
-#define _SWAP_FAST_3 617
-#define _SWAP_FAST_4 618
-#define _SWAP_FAST_5 619
-#define _SWAP_FAST_6 620
-#define _SWAP_FAST_7 621
-#define _TIER2_RESUME_CHECK 622
-#define _TO_BOOL 623
+#define _STORE_SLICE 614
+#define _STORE_SUBSCR 615
+#define _STORE_SUBSCR_DICT 616
+#define _STORE_SUBSCR_DICT_KNOWN_HASH 617
+#define _STORE_SUBSCR_LIST_INT 618
+#define _SWAP 619
+#define _SWAP_2 620
+#define _SWAP_3 621
+#define _SWAP_FAST 622
+#define _SWAP_FAST_0 623
+#define _SWAP_FAST_1 624
+#define _SWAP_FAST_2 625
+#define _SWAP_FAST_3 626
+#define _SWAP_FAST_4 627
+#define _SWAP_FAST_5 628
+#define _SWAP_FAST_6 629
+#define _SWAP_FAST_7 630
+#define _TIER2_RESUME_CHECK 631
+#define _TO_BOOL 632
#define _TO_BOOL_BOOL TO_BOOL_BOOL
-#define _TO_BOOL_INT 624
-#define _TO_BOOL_LIST 625
+#define _TO_BOOL_INT 633
+#define _TO_BOOL_LIST 634
#define _TO_BOOL_NONE TO_BOOL_NONE
-#define _TO_BOOL_STR 626
+#define _TO_BOOL_STR 635
#define _TRACE_RECORD TRACE_RECORD
-#define _UNARY_INVERT 627
-#define _UNARY_NEGATIVE 628
-#define _UNARY_NEGATIVE_FLOAT_INPLACE 629
+#define _UNARY_INVERT 636
+#define _UNARY_NEGATIVE 637
+#define _UNARY_NEGATIVE_FLOAT_INPLACE 638
#define _UNARY_NOT UNARY_NOT
#define _UNPACK_EX UNPACK_EX
-#define _UNPACK_SEQUENCE 630
-#define _UNPACK_SEQUENCE_LIST 631
-#define _UNPACK_SEQUENCE_TUPLE 632
-#define _UNPACK_SEQUENCE_TWO_TUPLE 633
-#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE 634
-#define _UNPACK_SEQUENCE_UNIQUE_TUPLE 635
-#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE 636
+#define _UNPACK_SEQUENCE 639
+#define _UNPACK_SEQUENCE_LIST 640
+#define _UNPACK_SEQUENCE_TUPLE 641
+#define _UNPACK_SEQUENCE_TWO_TUPLE 642
+#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE 643
+#define _UNPACK_SEQUENCE_UNIQUE_TUPLE 644
+#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE 645
#define _WITH_EXCEPT_START WITH_EXCEPT_START
-#define _YIELD_VALUE 637
-#define MAX_UOP_ID 637
-#define _ALLOCATE_OBJECT_r00 638
-#define _BINARY_OP_r23 639
-#define _BINARY_OP_ADD_FLOAT_r03 640
-#define _BINARY_OP_ADD_FLOAT_r13 641
-#define _BINARY_OP_ADD_FLOAT_r23 642
-#define _BINARY_OP_ADD_FLOAT_INPLACE_r03 643
-#define _BINARY_OP_ADD_FLOAT_INPLACE_r13 644
-#define _BINARY_OP_ADD_FLOAT_INPLACE_r23 645
-#define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT_r03 646
-#define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT_r13 647
-#define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT_r23 648
-#define _BINARY_OP_ADD_INT_r03 649
-#define _BINARY_OP_ADD_INT_r13 650
-#define _BINARY_OP_ADD_INT_r23 651
-#define _BINARY_OP_ADD_INT_INPLACE_r03 652
-#define _BINARY_OP_ADD_INT_INPLACE_r13 653
-#define _BINARY_OP_ADD_INT_INPLACE_r23 654
-#define _BINARY_OP_ADD_INT_INPLACE_RIGHT_r03 655
-#define _BINARY_OP_ADD_INT_INPLACE_RIGHT_r13 656
-#define _BINARY_OP_ADD_INT_INPLACE_RIGHT_r23 657
-#define _BINARY_OP_ADD_UNICODE_r03 658
-#define _BINARY_OP_ADD_UNICODE_r13 659
-#define _BINARY_OP_ADD_UNICODE_r23 660
-#define _BINARY_OP_EXTEND_r23 661
-#define _BINARY_OP_INPLACE_ADD_UNICODE_r21 662
-#define _BINARY_OP_MULTIPLY_FLOAT_r03 663
-#define _BINARY_OP_MULTIPLY_FLOAT_r13 664
-#define _BINARY_OP_MULTIPLY_FLOAT_r23 665
-#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_r03 666
-#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_r13 667
-#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_r23 668
-#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT_r03 669
-#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT_r13 670
-#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT_r23 671
-#define _BINARY_OP_MULTIPLY_INT_r03 672
-#define _BINARY_OP_MULTIPLY_INT_r13 673
-#define _BINARY_OP_MULTIPLY_INT_r23 674
-#define _BINARY_OP_MULTIPLY_INT_INPLACE_r03 675
-#define _BINARY_OP_MULTIPLY_INT_INPLACE_r13 676
-#define _BINARY_OP_MULTIPLY_INT_INPLACE_r23 677
-#define _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r03 678
-#define _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r13 679
-#define _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r23 680
-#define _BINARY_OP_SUBSCR_CHECK_FUNC_r23 681
-#define _BINARY_OP_SUBSCR_DICT_r23 682
-#define _BINARY_OP_SUBSCR_DICT_KNOWN_HASH_r23 683
-#define _BINARY_OP_SUBSCR_INIT_CALL_r01 684
-#define _BINARY_OP_SUBSCR_INIT_CALL_r11 685
-#define _BINARY_OP_SUBSCR_INIT_CALL_r21 686
-#define _BINARY_OP_SUBSCR_INIT_CALL_r31 687
-#define _BINARY_OP_SUBSCR_LIST_INT_r23 688
-#define _BINARY_OP_SUBSCR_LIST_SLICE_r23 689
-#define _BINARY_OP_SUBSCR_STR_INT_r23 690
-#define _BINARY_OP_SUBSCR_TUPLE_INT_r03 691
-#define _BINARY_OP_SUBSCR_TUPLE_INT_r13 692
-#define _BINARY_OP_SUBSCR_TUPLE_INT_r23 693
-#define _BINARY_OP_SUBSCR_USTR_INT_r23 694
-#define _BINARY_OP_SUBTRACT_FLOAT_r03 695
-#define _BINARY_OP_SUBTRACT_FLOAT_r13 696
-#define _BINARY_OP_SUBTRACT_FLOAT_r23 697
-#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_r03 698
-#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_r13 699
-#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_r23 700
-#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT_r03 701
-#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT_r13 702
-#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT_r23 703
-#define _BINARY_OP_SUBTRACT_INT_r03 704
-#define _BINARY_OP_SUBTRACT_INT_r13 705
-#define _BINARY_OP_SUBTRACT_INT_r23 706
-#define _BINARY_OP_SUBTRACT_INT_INPLACE_r03 707
-#define _BINARY_OP_SUBTRACT_INT_INPLACE_r13 708
-#define _BINARY_OP_SUBTRACT_INT_INPLACE_r23 709
-#define _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r03 710
-#define _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r13 711
-#define _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r23 712
-#define _BINARY_OP_TRUEDIV_FLOAT_r23 713
-#define _BINARY_OP_TRUEDIV_FLOAT_INPLACE_r03 714
-#define _BINARY_OP_TRUEDIV_FLOAT_INPLACE_r13 715
-#define _BINARY_OP_TRUEDIV_FLOAT_INPLACE_r23 716
-#define _BINARY_OP_TRUEDIV_FLOAT_INPLACE_RIGHT_r03 717
-#define _BINARY_OP_TRUEDIV_FLOAT_INPLACE_RIGHT_r13 718
-#define _BINARY_OP_TRUEDIV_FLOAT_INPLACE_RIGHT_r23 719
-#define _BINARY_SLICE_r31 720
-#define _BUILD_INTERPOLATION_r01 721
-#define _BUILD_LIST_r01 722
-#define _BUILD_MAP_r01 723
-#define _BUILD_SET_r01 724
-#define _BUILD_SLICE_r01 725
-#define _BUILD_STRING_r01 726
-#define _BUILD_TEMPLATE_r21 727
-#define _BUILD_TUPLE_r01 728
-#define _CALL_BUILTIN_CLASS_r00 729
-#define _CALL_BUILTIN_FAST_r00 730
-#define _CALL_BUILTIN_FAST_WITH_KEYWORDS_r00 731
-#define _CALL_BUILTIN_O_r03 732
-#define _CALL_FUNCTION_EX_NON_PY_GENERAL_r31 733
-#define _CALL_INTRINSIC_1_r12 734
-#define _CALL_INTRINSIC_2_r23 735
-#define _CALL_ISINSTANCE_r31 736
-#define _CALL_KW_NON_PY_r11 737
-#define _CALL_LEN_r33 738
-#define _CALL_LIST_APPEND_r03 739
-#define _CALL_LIST_APPEND_r13 740
-#define _CALL_LIST_APPEND_r23 741
-#define _CALL_LIST_APPEND_r33 742
-#define _CALL_METHOD_DESCRIPTOR_FAST_r00 743
-#define _CALL_METHOD_DESCRIPTOR_FAST_INLINE_r00 744
-#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_r00 745
-#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_INLINE_r00 746
-#define _CALL_METHOD_DESCRIPTOR_NOARGS_r03 747
-#define _CALL_METHOD_DESCRIPTOR_NOARGS_INLINE_r03 748
-#define _CALL_METHOD_DESCRIPTOR_O_r03 749
-#define _CALL_METHOD_DESCRIPTOR_O_INLINE_r03 750
-#define _CALL_NON_PY_GENERAL_r01 751
-#define _CALL_STR_1_r32 752
-#define _CALL_TUPLE_1_r32 753
-#define _CALL_TYPE_1_r02 754
-#define _CALL_TYPE_1_r12 755
-#define _CALL_TYPE_1_r22 756
-#define _CALL_TYPE_1_r32 757
-#define _CHECK_ATTR_CLASS_r01 758
-#define _CHECK_ATTR_CLASS_r11 759
-#define _CHECK_ATTR_CLASS_r22 760
-#define _CHECK_ATTR_CLASS_r33 761
-#define _CHECK_ATTR_METHOD_LAZY_DICT_r01 762
-#define _CHECK_ATTR_METHOD_LAZY_DICT_r11 763
-#define _CHECK_ATTR_METHOD_LAZY_DICT_r22 764
-#define _CHECK_ATTR_METHOD_LAZY_DICT_r33 765
-#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS_r00 766
-#define _CHECK_EG_MATCH_r22 767
-#define _CHECK_EXC_MATCH_r22 768
-#define _CHECK_FUNCTION_EXACT_ARGS_r00 769
-#define _CHECK_FUNCTION_VERSION_r00 770
-#define _CHECK_FUNCTION_VERSION_INLINE_r00 771
-#define _CHECK_FUNCTION_VERSION_INLINE_r11 772
-#define _CHECK_FUNCTION_VERSION_INLINE_r22 773
-#define _CHECK_FUNCTION_VERSION_INLINE_r33 774
-#define _CHECK_FUNCTION_VERSION_KW_r11 775
-#define _CHECK_IS_NOT_PY_CALLABLE_r00 776
-#define _CHECK_IS_NOT_PY_CALLABLE_EX_r03 777
-#define _CHECK_IS_NOT_PY_CALLABLE_EX_r13 778
-#define _CHECK_IS_NOT_PY_CALLABLE_EX_r23 779
-#define _CHECK_IS_NOT_PY_CALLABLE_EX_r33 780
-#define _CHECK_IS_NOT_PY_CALLABLE_KW_r11 781
-#define _CHECK_IS_PY_CALLABLE_EX_r03 782
-#define _CHECK_IS_PY_CALLABLE_EX_r13 783
-#define _CHECK_IS_PY_CALLABLE_EX_r23 784
-#define _CHECK_IS_PY_CALLABLE_EX_r33 785
-#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r01 786
-#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r11 787
-#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r22 788
-#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r33 789
-#define _CHECK_METHOD_VERSION_r00 790
-#define _CHECK_METHOD_VERSION_KW_r11 791
-#define _CHECK_OBJECT_r00 792
-#define _CHECK_PEP_523_r00 793
-#define _CHECK_PEP_523_r11 794
-#define _CHECK_PEP_523_r22 795
-#define _CHECK_PEP_523_r33 796
-#define _CHECK_PERIODIC_r00 797
-#define _CHECK_PERIODIC_AT_END_r00 798
-#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM_r00 799
-#define _CHECK_RECURSION_LIMIT_r00 800
-#define _CHECK_RECURSION_LIMIT_r11 801
-#define _CHECK_RECURSION_LIMIT_r22 802
-#define _CHECK_RECURSION_LIMIT_r33 803
-#define _CHECK_RECURSION_REMAINING_r00 804
-#define _CHECK_RECURSION_REMAINING_r11 805
-#define _CHECK_RECURSION_REMAINING_r22 806
-#define _CHECK_RECURSION_REMAINING_r33 807
-#define _CHECK_STACK_SPACE_r00 808
-#define _CHECK_STACK_SPACE_OPERAND_r00 809
-#define _CHECK_STACK_SPACE_OPERAND_r11 810
-#define _CHECK_STACK_SPACE_OPERAND_r22 811
-#define _CHECK_STACK_SPACE_OPERAND_r33 812
-#define _CHECK_VALIDITY_r00 813
-#define _CHECK_VALIDITY_r11 814
-#define _CHECK_VALIDITY_r22 815
-#define _CHECK_VALIDITY_r33 816
-#define _COLD_DYNAMIC_EXIT_r00 817
-#define _COLD_EXIT_r00 818
-#define _COMPARE_OP_r21 819
-#define _COMPARE_OP_FLOAT_r03 820
-#define _COMPARE_OP_FLOAT_r13 821
-#define _COMPARE_OP_FLOAT_r23 822
-#define _COMPARE_OP_INT_r23 823
-#define _COMPARE_OP_STR_r23 824
-#define _CONTAINS_OP_r23 825
-#define _CONTAINS_OP_DICT_r23 826
-#define _CONTAINS_OP_SET_r23 827
-#define _CONVERT_VALUE_r11 828
-#define _COPY_r01 829
-#define _COPY_1_r02 830
-#define _COPY_1_r12 831
-#define _COPY_1_r23 832
-#define _COPY_2_r03 833
-#define _COPY_2_r13 834
-#define _COPY_2_r23 835
-#define _COPY_3_r03 836
-#define _COPY_3_r13 837
-#define _COPY_3_r23 838
-#define _COPY_3_r33 839
-#define _COPY_FREE_VARS_r00 840
-#define _COPY_FREE_VARS_r11 841
-#define _COPY_FREE_VARS_r22 842
-#define _COPY_FREE_VARS_r33 843
-#define _CREATE_INIT_FRAME_r01 844
-#define _DELETE_ATTR_r10 845
-#define _DELETE_DEREF_r00 846
-#define _DELETE_FAST_r00 847
-#define _DELETE_GLOBAL_r00 848
-#define _DELETE_NAME_r00 849
-#define _DELETE_SUBSCR_r20 850
-#define _DEOPT_r00 851
-#define _DEOPT_r10 852
-#define _DEOPT_r20 853
-#define _DEOPT_r30 854
-#define _DICT_MERGE_r11 855
-#define _DICT_UPDATE_r11 856
-#define _DO_CALL_r01 857
-#define _DO_CALL_FUNCTION_EX_r31 858
-#define _DO_CALL_KW_r11 859
-#define _DYNAMIC_EXIT_r00 860
-#define _DYNAMIC_EXIT_r10 861
-#define _DYNAMIC_EXIT_r20 862
-#define _DYNAMIC_EXIT_r30 863
-#define _END_FOR_r10 864
-#define _END_SEND_r31 865
-#define _ERROR_POP_N_r00 866
-#define _EXIT_INIT_CHECK_r10 867
-#define _EXIT_TRACE_r00 868
-#define _EXIT_TRACE_r10 869
-#define _EXIT_TRACE_r20 870
-#define _EXIT_TRACE_r30 871
-#define _EXPAND_METHOD_r00 872
-#define _EXPAND_METHOD_KW_r11 873
-#define _FATAL_ERROR_r00 874
-#define _FATAL_ERROR_r11 875
-#define _FATAL_ERROR_r22 876
-#define _FATAL_ERROR_r33 877
-#define _FORMAT_SIMPLE_r11 878
-#define _FORMAT_WITH_SPEC_r21 879
-#define _FOR_ITER_r23 880
-#define _FOR_ITER_GEN_FRAME_r03 881
-#define _FOR_ITER_GEN_FRAME_r13 882
-#define _FOR_ITER_GEN_FRAME_r23 883
-#define _FOR_ITER_TIER_TWO_r23 884
-#define _GET_AITER_r11 885
-#define _GET_ANEXT_r12 886
-#define _GET_AWAITABLE_r11 887
-#define _GET_ITER_r12 888
-#define _GET_LEN_r12 889
-#define _GUARD_BINARY_OP_EXTEND_r22 890
-#define _GUARD_BINARY_OP_EXTEND_LHS_r02 891
-#define _GUARD_BINARY_OP_EXTEND_LHS_r12 892
-#define _GUARD_BINARY_OP_EXTEND_LHS_r22 893
-#define _GUARD_BINARY_OP_EXTEND_LHS_r33 894
-#define _GUARD_BINARY_OP_EXTEND_RHS_r02 895
-#define _GUARD_BINARY_OP_EXTEND_RHS_r12 896
-#define _GUARD_BINARY_OP_EXTEND_RHS_r22 897
-#define _GUARD_BINARY_OP_EXTEND_RHS_r33 898
-#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r02 899
-#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r12 900
-#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r22 901
-#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r33 902
-#define _GUARD_BIT_IS_SET_POP_r00 903
-#define _GUARD_BIT_IS_SET_POP_r10 904
-#define _GUARD_BIT_IS_SET_POP_r21 905
-#define _GUARD_BIT_IS_SET_POP_r32 906
-#define _GUARD_BIT_IS_SET_POP_4_r00 907
-#define _GUARD_BIT_IS_SET_POP_4_r10 908
-#define _GUARD_BIT_IS_SET_POP_4_r21 909
-#define _GUARD_BIT_IS_SET_POP_4_r32 910
-#define _GUARD_BIT_IS_SET_POP_5_r00 911
-#define _GUARD_BIT_IS_SET_POP_5_r10 912
-#define _GUARD_BIT_IS_SET_POP_5_r21 913
-#define _GUARD_BIT_IS_SET_POP_5_r32 914
-#define _GUARD_BIT_IS_SET_POP_6_r00 915
-#define _GUARD_BIT_IS_SET_POP_6_r10 916
-#define _GUARD_BIT_IS_SET_POP_6_r21 917
-#define _GUARD_BIT_IS_SET_POP_6_r32 918
-#define _GUARD_BIT_IS_SET_POP_7_r00 919
-#define _GUARD_BIT_IS_SET_POP_7_r10 920
-#define _GUARD_BIT_IS_SET_POP_7_r21 921
-#define _GUARD_BIT_IS_SET_POP_7_r32 922
-#define _GUARD_BIT_IS_UNSET_POP_r00 923
-#define _GUARD_BIT_IS_UNSET_POP_r10 924
-#define _GUARD_BIT_IS_UNSET_POP_r21 925
-#define _GUARD_BIT_IS_UNSET_POP_r32 926
-#define _GUARD_BIT_IS_UNSET_POP_4_r00 927
-#define _GUARD_BIT_IS_UNSET_POP_4_r10 928
-#define _GUARD_BIT_IS_UNSET_POP_4_r21 929
-#define _GUARD_BIT_IS_UNSET_POP_4_r32 930
-#define _GUARD_BIT_IS_UNSET_POP_5_r00 931
-#define _GUARD_BIT_IS_UNSET_POP_5_r10 932
-#define _GUARD_BIT_IS_UNSET_POP_5_r21 933
-#define _GUARD_BIT_IS_UNSET_POP_5_r32 934
-#define _GUARD_BIT_IS_UNSET_POP_6_r00 935
-#define _GUARD_BIT_IS_UNSET_POP_6_r10 936
-#define _GUARD_BIT_IS_UNSET_POP_6_r21 937
-#define _GUARD_BIT_IS_UNSET_POP_6_r32 938
-#define _GUARD_BIT_IS_UNSET_POP_7_r00 939
-#define _GUARD_BIT_IS_UNSET_POP_7_r10 940
-#define _GUARD_BIT_IS_UNSET_POP_7_r21 941
-#define _GUARD_BIT_IS_UNSET_POP_7_r32 942
-#define _GUARD_CALLABLE_BUILTIN_CLASS_r00 943
-#define _GUARD_CALLABLE_BUILTIN_FAST_r00 944
-#define _GUARD_CALLABLE_BUILTIN_FAST_WITH_KEYWORDS_r00 945
-#define _GUARD_CALLABLE_BUILTIN_O_r00 946
-#define _GUARD_CALLABLE_ISINSTANCE_r03 947
-#define _GUARD_CALLABLE_ISINSTANCE_r13 948
-#define _GUARD_CALLABLE_ISINSTANCE_r23 949
-#define _GUARD_CALLABLE_ISINSTANCE_r33 950
-#define _GUARD_CALLABLE_LEN_r03 951
-#define _GUARD_CALLABLE_LEN_r13 952
-#define _GUARD_CALLABLE_LEN_r23 953
-#define _GUARD_CALLABLE_LEN_r33 954
-#define _GUARD_CALLABLE_LIST_APPEND_r03 955
-#define _GUARD_CALLABLE_LIST_APPEND_r13 956
-#define _GUARD_CALLABLE_LIST_APPEND_r23 957
-#define _GUARD_CALLABLE_LIST_APPEND_r33 958
-#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_r00 959
-#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_r00 960
-#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_NOARGS_r00 961
-#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_O_r00 962
-#define _GUARD_CALLABLE_STR_1_r03 963
-#define _GUARD_CALLABLE_STR_1_r13 964
-#define _GUARD_CALLABLE_STR_1_r23 965
-#define _GUARD_CALLABLE_STR_1_r33 966
-#define _GUARD_CALLABLE_TUPLE_1_r03 967
-#define _GUARD_CALLABLE_TUPLE_1_r13 968
-#define _GUARD_CALLABLE_TUPLE_1_r23 969
-#define _GUARD_CALLABLE_TUPLE_1_r33 970
-#define _GUARD_CALLABLE_TYPE_1_r03 971
-#define _GUARD_CALLABLE_TYPE_1_r13 972
-#define _GUARD_CALLABLE_TYPE_1_r23 973
-#define _GUARD_CALLABLE_TYPE_1_r33 974
-#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r00 975
-#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r11 976
-#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r22 977
-#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r33 978
-#define _GUARD_CODE_VERSION_RETURN_VALUE_r00 979
-#define _GUARD_CODE_VERSION_RETURN_VALUE_r11 980
-#define _GUARD_CODE_VERSION_RETURN_VALUE_r22 981
-#define _GUARD_CODE_VERSION_RETURN_VALUE_r33 982
-#define _GUARD_CODE_VERSION_YIELD_VALUE_r00 983
-#define _GUARD_CODE_VERSION_YIELD_VALUE_r11 984
-#define _GUARD_CODE_VERSION_YIELD_VALUE_r22 985
-#define _GUARD_CODE_VERSION_YIELD_VALUE_r33 986
-#define _GUARD_CODE_VERSION__PUSH_FRAME_r00 987
-#define _GUARD_CODE_VERSION__PUSH_FRAME_r11 988
-#define _GUARD_CODE_VERSION__PUSH_FRAME_r22 989
-#define _GUARD_CODE_VERSION__PUSH_FRAME_r33 990
-#define _GUARD_DORV_NO_DICT_r01 991
-#define _GUARD_DORV_NO_DICT_r11 992
-#define _GUARD_DORV_NO_DICT_r22 993
-#define _GUARD_DORV_NO_DICT_r33 994
-#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r01 995
-#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r11 996
-#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r22 997
-#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r33 998
-#define _GUARD_GLOBALS_VERSION_r00 999
-#define _GUARD_GLOBALS_VERSION_r11 1000
-#define _GUARD_GLOBALS_VERSION_r22 1001
-#define _GUARD_GLOBALS_VERSION_r33 1002
-#define _GUARD_IP_RETURN_GENERATOR_r00 1003
-#define _GUARD_IP_RETURN_GENERATOR_r11 1004
-#define _GUARD_IP_RETURN_GENERATOR_r22 1005
-#define _GUARD_IP_RETURN_GENERATOR_r33 1006
-#define _GUARD_IP_RETURN_VALUE_r00 1007
-#define _GUARD_IP_RETURN_VALUE_r11 1008
-#define _GUARD_IP_RETURN_VALUE_r22 1009
-#define _GUARD_IP_RETURN_VALUE_r33 1010
-#define _GUARD_IP_YIELD_VALUE_r00 1011
-#define _GUARD_IP_YIELD_VALUE_r11 1012
-#define _GUARD_IP_YIELD_VALUE_r22 1013
-#define _GUARD_IP_YIELD_VALUE_r33 1014
-#define _GUARD_IP__PUSH_FRAME_r00 1015
-#define _GUARD_IP__PUSH_FRAME_r11 1016
-#define _GUARD_IP__PUSH_FRAME_r22 1017
-#define _GUARD_IP__PUSH_FRAME_r33 1018
-#define _GUARD_IS_FALSE_POP_r00 1019
-#define _GUARD_IS_FALSE_POP_r10 1020
-#define _GUARD_IS_FALSE_POP_r21 1021
-#define _GUARD_IS_FALSE_POP_r32 1022
-#define _GUARD_IS_NONE_POP_r00 1023
-#define _GUARD_IS_NONE_POP_r10 1024
-#define _GUARD_IS_NONE_POP_r21 1025
-#define _GUARD_IS_NONE_POP_r32 1026
-#define _GUARD_IS_NOT_NONE_POP_r10 1027
-#define _GUARD_IS_TRUE_POP_r00 1028
-#define _GUARD_IS_TRUE_POP_r10 1029
-#define _GUARD_IS_TRUE_POP_r21 1030
-#define _GUARD_IS_TRUE_POP_r32 1031
-#define _GUARD_KEYS_VERSION_r01 1032
-#define _GUARD_KEYS_VERSION_r11 1033
-#define _GUARD_KEYS_VERSION_r22 1034
-#define _GUARD_KEYS_VERSION_r33 1035
-#define _GUARD_LOAD_SUPER_ATTR_METHOD_r03 1036
-#define _GUARD_LOAD_SUPER_ATTR_METHOD_r13 1037
-#define _GUARD_LOAD_SUPER_ATTR_METHOD_r23 1038
-#define _GUARD_LOAD_SUPER_ATTR_METHOD_r33 1039
-#define _GUARD_NOS_ANY_DICT_r02 1040
-#define _GUARD_NOS_ANY_DICT_r12 1041
-#define _GUARD_NOS_ANY_DICT_r22 1042
-#define _GUARD_NOS_ANY_DICT_r33 1043
-#define _GUARD_NOS_COMPACT_ASCII_r02 1044
-#define _GUARD_NOS_COMPACT_ASCII_r12 1045
-#define _GUARD_NOS_COMPACT_ASCII_r22 1046
-#define _GUARD_NOS_COMPACT_ASCII_r33 1047
-#define _GUARD_NOS_DICT_r02 1048
-#define _GUARD_NOS_DICT_r12 1049
-#define _GUARD_NOS_DICT_r22 1050
-#define _GUARD_NOS_DICT_r33 1051
-#define _GUARD_NOS_FLOAT_r02 1052
-#define _GUARD_NOS_FLOAT_r12 1053
-#define _GUARD_NOS_FLOAT_r22 1054
-#define _GUARD_NOS_FLOAT_r33 1055
-#define _GUARD_NOS_INT_r02 1056
-#define _GUARD_NOS_INT_r12 1057
-#define _GUARD_NOS_INT_r22 1058
-#define _GUARD_NOS_INT_r33 1059
-#define _GUARD_NOS_LIST_r02 1060
-#define _GUARD_NOS_LIST_r12 1061
-#define _GUARD_NOS_LIST_r22 1062
-#define _GUARD_NOS_LIST_r33 1063
-#define _GUARD_NOS_NOT_NULL_r02 1064
-#define _GUARD_NOS_NOT_NULL_r12 1065
-#define _GUARD_NOS_NOT_NULL_r22 1066
-#define _GUARD_NOS_NOT_NULL_r33 1067
-#define _GUARD_NOS_NULL_r02 1068
-#define _GUARD_NOS_NULL_r12 1069
-#define _GUARD_NOS_NULL_r22 1070
-#define _GUARD_NOS_NULL_r33 1071
-#define _GUARD_NOS_OVERFLOWED_r02 1072
-#define _GUARD_NOS_OVERFLOWED_r12 1073
-#define _GUARD_NOS_OVERFLOWED_r22 1074
-#define _GUARD_NOS_OVERFLOWED_r33 1075
-#define _GUARD_NOS_TUPLE_r02 1076
-#define _GUARD_NOS_TUPLE_r12 1077
-#define _GUARD_NOS_TUPLE_r22 1078
-#define _GUARD_NOS_TUPLE_r33 1079
-#define _GUARD_NOS_TYPE_VERSION_r02 1080
-#define _GUARD_NOS_TYPE_VERSION_r12 1081
-#define _GUARD_NOS_TYPE_VERSION_r22 1082
-#define _GUARD_NOS_TYPE_VERSION_r33 1083
-#define _GUARD_NOS_UNICODE_r02 1084
-#define _GUARD_NOS_UNICODE_r12 1085
-#define _GUARD_NOS_UNICODE_r22 1086
-#define _GUARD_NOS_UNICODE_r33 1087
-#define _GUARD_NOT_EXHAUSTED_LIST_r02 1088
-#define _GUARD_NOT_EXHAUSTED_LIST_r12 1089
-#define _GUARD_NOT_EXHAUSTED_LIST_r22 1090
-#define _GUARD_NOT_EXHAUSTED_LIST_r33 1091
-#define _GUARD_NOT_EXHAUSTED_RANGE_r02 1092
-#define _GUARD_NOT_EXHAUSTED_RANGE_r12 1093
-#define _GUARD_NOT_EXHAUSTED_RANGE_r22 1094
-#define _GUARD_NOT_EXHAUSTED_RANGE_r33 1095
-#define _GUARD_NOT_EXHAUSTED_TUPLE_r02 1096
-#define _GUARD_NOT_EXHAUSTED_TUPLE_r12 1097
-#define _GUARD_NOT_EXHAUSTED_TUPLE_r22 1098
-#define _GUARD_NOT_EXHAUSTED_TUPLE_r33 1099
-#define _GUARD_THIRD_NULL_r03 1100
-#define _GUARD_THIRD_NULL_r13 1101
-#define _GUARD_THIRD_NULL_r23 1102
-#define _GUARD_THIRD_NULL_r33 1103
-#define _GUARD_TOS_ANY_DICT_r01 1104
-#define _GUARD_TOS_ANY_DICT_r11 1105
-#define _GUARD_TOS_ANY_DICT_r22 1106
-#define _GUARD_TOS_ANY_DICT_r33 1107
-#define _GUARD_TOS_ANY_SET_r01 1108
-#define _GUARD_TOS_ANY_SET_r11 1109
-#define _GUARD_TOS_ANY_SET_r22 1110
-#define _GUARD_TOS_ANY_SET_r33 1111
-#define _GUARD_TOS_DICT_r01 1112
-#define _GUARD_TOS_DICT_r11 1113
-#define _GUARD_TOS_DICT_r22 1114
-#define _GUARD_TOS_DICT_r33 1115
-#define _GUARD_TOS_FLOAT_r01 1116
-#define _GUARD_TOS_FLOAT_r11 1117
-#define _GUARD_TOS_FLOAT_r22 1118
-#define _GUARD_TOS_FLOAT_r33 1119
-#define _GUARD_TOS_FROZENDICT_r01 1120
-#define _GUARD_TOS_FROZENDICT_r11 1121
-#define _GUARD_TOS_FROZENDICT_r22 1122
-#define _GUARD_TOS_FROZENDICT_r33 1123
-#define _GUARD_TOS_FROZENSET_r01 1124
-#define _GUARD_TOS_FROZENSET_r11 1125
-#define _GUARD_TOS_FROZENSET_r22 1126
-#define _GUARD_TOS_FROZENSET_r33 1127
-#define _GUARD_TOS_INT_r01 1128
-#define _GUARD_TOS_INT_r11 1129
-#define _GUARD_TOS_INT_r22 1130
-#define _GUARD_TOS_INT_r33 1131
-#define _GUARD_TOS_LIST_r01 1132
-#define _GUARD_TOS_LIST_r11 1133
-#define _GUARD_TOS_LIST_r22 1134
-#define _GUARD_TOS_LIST_r33 1135
-#define _GUARD_TOS_OVERFLOWED_r01 1136
-#define _GUARD_TOS_OVERFLOWED_r11 1137
-#define _GUARD_TOS_OVERFLOWED_r22 1138
-#define _GUARD_TOS_OVERFLOWED_r33 1139
-#define _GUARD_TOS_SET_r01 1140
-#define _GUARD_TOS_SET_r11 1141
-#define _GUARD_TOS_SET_r22 1142
-#define _GUARD_TOS_SET_r33 1143
-#define _GUARD_TOS_SLICE_r01 1144
-#define _GUARD_TOS_SLICE_r11 1145
-#define _GUARD_TOS_SLICE_r22 1146
-#define _GUARD_TOS_SLICE_r33 1147
-#define _GUARD_TOS_TUPLE_r01 1148
-#define _GUARD_TOS_TUPLE_r11 1149
-#define _GUARD_TOS_TUPLE_r22 1150
-#define _GUARD_TOS_TUPLE_r33 1151
-#define _GUARD_TOS_UNICODE_r01 1152
-#define _GUARD_TOS_UNICODE_r11 1153
-#define _GUARD_TOS_UNICODE_r22 1154
-#define _GUARD_TOS_UNICODE_r33 1155
-#define _GUARD_TYPE_VERSION_r01 1156
-#define _GUARD_TYPE_VERSION_r11 1157
-#define _GUARD_TYPE_VERSION_r22 1158
-#define _GUARD_TYPE_VERSION_r33 1159
-#define _GUARD_TYPE_VERSION_LOCKED_r01 1160
-#define _GUARD_TYPE_VERSION_LOCKED_r11 1161
-#define _GUARD_TYPE_VERSION_LOCKED_r22 1162
-#define _GUARD_TYPE_VERSION_LOCKED_r33 1163
-#define _HANDLE_PENDING_AND_DEOPT_r00 1164
-#define _HANDLE_PENDING_AND_DEOPT_r10 1165
-#define _HANDLE_PENDING_AND_DEOPT_r20 1166
-#define _HANDLE_PENDING_AND_DEOPT_r30 1167
-#define _IMPORT_FROM_r12 1168
-#define _IMPORT_NAME_r21 1169
-#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS_r00 1170
-#define _INIT_CALL_PY_EXACT_ARGS_r01 1171
-#define _INIT_CALL_PY_EXACT_ARGS_0_r01 1172
-#define _INIT_CALL_PY_EXACT_ARGS_1_r01 1173
-#define _INIT_CALL_PY_EXACT_ARGS_2_r01 1174
-#define _INIT_CALL_PY_EXACT_ARGS_3_r01 1175
-#define _INIT_CALL_PY_EXACT_ARGS_4_r01 1176
-#define _INSERT_NULL_r10 1177
-#define _INSTRUMENTED_FOR_ITER_r23 1178
-#define _INSTRUMENTED_INSTRUCTION_r00 1179
-#define _INSTRUMENTED_JUMP_FORWARD_r00 1180
-#define _INSTRUMENTED_JUMP_FORWARD_r11 1181
-#define _INSTRUMENTED_JUMP_FORWARD_r22 1182
-#define _INSTRUMENTED_JUMP_FORWARD_r33 1183
-#define _INSTRUMENTED_LINE_r00 1184
-#define _INSTRUMENTED_NOT_TAKEN_r00 1185
-#define _INSTRUMENTED_NOT_TAKEN_r11 1186
-#define _INSTRUMENTED_NOT_TAKEN_r22 1187
-#define _INSTRUMENTED_NOT_TAKEN_r33 1188
-#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r00 1189
-#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r10 1190
-#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r21 1191
-#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r32 1192
-#define _INSTRUMENTED_POP_JUMP_IF_NONE_r10 1193
-#define _INSTRUMENTED_POP_JUMP_IF_NOT_NONE_r10 1194
-#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r00 1195
-#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r10 1196
-#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r21 1197
-#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r32 1198
-#define _IS_NONE_r11 1199
-#define _IS_OP_r03 1200
-#define _IS_OP_r13 1201
-#define _IS_OP_r23 1202
-#define _ITER_CHECK_LIST_r02 1203
-#define _ITER_CHECK_LIST_r12 1204
-#define _ITER_CHECK_LIST_r22 1205
-#define _ITER_CHECK_LIST_r33 1206
-#define _ITER_CHECK_RANGE_r02 1207
-#define _ITER_CHECK_RANGE_r12 1208
-#define _ITER_CHECK_RANGE_r22 1209
-#define _ITER_CHECK_RANGE_r33 1210
-#define _ITER_CHECK_TUPLE_r02 1211
-#define _ITER_CHECK_TUPLE_r12 1212
-#define _ITER_CHECK_TUPLE_r22 1213
-#define _ITER_CHECK_TUPLE_r33 1214
-#define _ITER_JUMP_LIST_r02 1215
-#define _ITER_JUMP_LIST_r12 1216
-#define _ITER_JUMP_LIST_r22 1217
-#define _ITER_JUMP_LIST_r33 1218
-#define _ITER_JUMP_RANGE_r02 1219
-#define _ITER_JUMP_RANGE_r12 1220
-#define _ITER_JUMP_RANGE_r22 1221
-#define _ITER_JUMP_RANGE_r33 1222
-#define _ITER_JUMP_TUPLE_r02 1223
-#define _ITER_JUMP_TUPLE_r12 1224
-#define _ITER_JUMP_TUPLE_r22 1225
-#define _ITER_JUMP_TUPLE_r33 1226
-#define _ITER_NEXT_LIST_r23 1227
-#define _ITER_NEXT_LIST_TIER_TWO_r23 1228
-#define _ITER_NEXT_RANGE_r03 1229
-#define _ITER_NEXT_RANGE_r13 1230
-#define _ITER_NEXT_RANGE_r23 1231
-#define _ITER_NEXT_TUPLE_r03 1232
-#define _ITER_NEXT_TUPLE_r13 1233
-#define _ITER_NEXT_TUPLE_r23 1234
-#define _JUMP_BACKWARD_NO_INTERRUPT_r00 1235
-#define _JUMP_BACKWARD_NO_INTERRUPT_r11 1236
-#define _JUMP_BACKWARD_NO_INTERRUPT_r22 1237
-#define _JUMP_BACKWARD_NO_INTERRUPT_r33 1238
-#define _JUMP_TO_TOP_r00 1239
-#define _LIST_APPEND_r10 1240
-#define _LIST_EXTEND_r11 1241
-#define _LOAD_ATTR_r10 1242
-#define _LOAD_ATTR_CLASS_r11 1243
-#define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN_FRAME_r11 1244
-#define _LOAD_ATTR_INSTANCE_VALUE_r02 1245
-#define _LOAD_ATTR_INSTANCE_VALUE_r12 1246
-#define _LOAD_ATTR_INSTANCE_VALUE_r23 1247
-#define _LOAD_ATTR_METHOD_LAZY_DICT_r02 1248
-#define _LOAD_ATTR_METHOD_LAZY_DICT_r12 1249
-#define _LOAD_ATTR_METHOD_LAZY_DICT_r23 1250
-#define _LOAD_ATTR_METHOD_NO_DICT_r02 1251
-#define _LOAD_ATTR_METHOD_NO_DICT_r12 1252
-#define _LOAD_ATTR_METHOD_NO_DICT_r23 1253
-#define _LOAD_ATTR_METHOD_WITH_VALUES_r02 1254
-#define _LOAD_ATTR_METHOD_WITH_VALUES_r12 1255
-#define _LOAD_ATTR_METHOD_WITH_VALUES_r23 1256
-#define _LOAD_ATTR_MODULE_r12 1257
-#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT_r11 1258
-#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES_r11 1259
-#define _LOAD_ATTR_PROPERTY_FRAME_r01 1260
-#define _LOAD_ATTR_PROPERTY_FRAME_r11 1261
-#define _LOAD_ATTR_PROPERTY_FRAME_r22 1262
-#define _LOAD_ATTR_PROPERTY_FRAME_r33 1263
-#define _LOAD_ATTR_SLOT_r02 1264
-#define _LOAD_ATTR_SLOT_r12 1265
-#define _LOAD_ATTR_SLOT_r23 1266
-#define _LOAD_ATTR_WITH_HINT_r12 1267
-#define _LOAD_BUILD_CLASS_r01 1268
-#define _LOAD_BYTECODE_r00 1269
-#define _LOAD_COMMON_CONSTANT_r01 1270
-#define _LOAD_COMMON_CONSTANT_r12 1271
-#define _LOAD_COMMON_CONSTANT_r23 1272
-#define _LOAD_CONST_r01 1273
-#define _LOAD_CONST_r12 1274
-#define _LOAD_CONST_r23 1275
-#define _LOAD_CONST_INLINE_r01 1276
-#define _LOAD_CONST_INLINE_r12 1277
-#define _LOAD_CONST_INLINE_r23 1278
-#define _LOAD_CONST_INLINE_BORROW_r01 1279
-#define _LOAD_CONST_INLINE_BORROW_r12 1280
-#define _LOAD_CONST_INLINE_BORROW_r23 1281
-#define _LOAD_DEREF_r01 1282
-#define _LOAD_FAST_r01 1283
-#define _LOAD_FAST_r12 1284
-#define _LOAD_FAST_r23 1285
-#define _LOAD_FAST_0_r01 1286
-#define _LOAD_FAST_0_r12 1287
-#define _LOAD_FAST_0_r23 1288
-#define _LOAD_FAST_1_r01 1289
-#define _LOAD_FAST_1_r12 1290
-#define _LOAD_FAST_1_r23 1291
-#define _LOAD_FAST_2_r01 1292
-#define _LOAD_FAST_2_r12 1293
-#define _LOAD_FAST_2_r23 1294
-#define _LOAD_FAST_3_r01 1295
-#define _LOAD_FAST_3_r12 1296
-#define _LOAD_FAST_3_r23 1297
-#define _LOAD_FAST_4_r01 1298
-#define _LOAD_FAST_4_r12 1299
-#define _LOAD_FAST_4_r23 1300
-#define _LOAD_FAST_5_r01 1301
-#define _LOAD_FAST_5_r12 1302
-#define _LOAD_FAST_5_r23 1303
-#define _LOAD_FAST_6_r01 1304
-#define _LOAD_FAST_6_r12 1305
-#define _LOAD_FAST_6_r23 1306
-#define _LOAD_FAST_7_r01 1307
-#define _LOAD_FAST_7_r12 1308
-#define _LOAD_FAST_7_r23 1309
-#define _LOAD_FAST_AND_CLEAR_r01 1310
-#define _LOAD_FAST_AND_CLEAR_r12 1311
-#define _LOAD_FAST_AND_CLEAR_r23 1312
-#define _LOAD_FAST_BORROW_r01 1313
-#define _LOAD_FAST_BORROW_r12 1314
-#define _LOAD_FAST_BORROW_r23 1315
-#define _LOAD_FAST_BORROW_0_r01 1316
-#define _LOAD_FAST_BORROW_0_r12 1317
-#define _LOAD_FAST_BORROW_0_r23 1318
-#define _LOAD_FAST_BORROW_1_r01 1319
-#define _LOAD_FAST_BORROW_1_r12 1320
-#define _LOAD_FAST_BORROW_1_r23 1321
-#define _LOAD_FAST_BORROW_2_r01 1322
-#define _LOAD_FAST_BORROW_2_r12 1323
-#define _LOAD_FAST_BORROW_2_r23 1324
-#define _LOAD_FAST_BORROW_3_r01 1325
-#define _LOAD_FAST_BORROW_3_r12 1326
-#define _LOAD_FAST_BORROW_3_r23 1327
-#define _LOAD_FAST_BORROW_4_r01 1328
-#define _LOAD_FAST_BORROW_4_r12 1329
-#define _LOAD_FAST_BORROW_4_r23 1330
-#define _LOAD_FAST_BORROW_5_r01 1331
-#define _LOAD_FAST_BORROW_5_r12 1332
-#define _LOAD_FAST_BORROW_5_r23 1333
-#define _LOAD_FAST_BORROW_6_r01 1334
-#define _LOAD_FAST_BORROW_6_r12 1335
-#define _LOAD_FAST_BORROW_6_r23 1336
-#define _LOAD_FAST_BORROW_7_r01 1337
-#define _LOAD_FAST_BORROW_7_r12 1338
-#define _LOAD_FAST_BORROW_7_r23 1339
-#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r02 1340
-#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r13 1341
-#define _LOAD_FAST_CHECK_r01 1342
-#define _LOAD_FAST_CHECK_r12 1343
-#define _LOAD_FAST_CHECK_r23 1344
-#define _LOAD_FAST_LOAD_FAST_r02 1345
-#define _LOAD_FAST_LOAD_FAST_r13 1346
-#define _LOAD_FROM_DICT_OR_DEREF_r11 1347
-#define _LOAD_FROM_DICT_OR_GLOBALS_r11 1348
-#define _LOAD_GLOBAL_r00 1349
-#define _LOAD_GLOBAL_BUILTINS_r01 1350
-#define _LOAD_GLOBAL_MODULE_r01 1351
-#define _LOAD_LOCALS_r01 1352
-#define _LOAD_LOCALS_r12 1353
-#define _LOAD_LOCALS_r23 1354
-#define _LOAD_NAME_r01 1355
-#define _LOAD_SMALL_INT_r01 1356
-#define _LOAD_SMALL_INT_r12 1357
-#define _LOAD_SMALL_INT_r23 1358
-#define _LOAD_SMALL_INT_0_r01 1359
-#define _LOAD_SMALL_INT_0_r12 1360
-#define _LOAD_SMALL_INT_0_r23 1361
-#define _LOAD_SMALL_INT_1_r01 1362
-#define _LOAD_SMALL_INT_1_r12 1363
-#define _LOAD_SMALL_INT_1_r23 1364
-#define _LOAD_SMALL_INT_2_r01 1365
-#define _LOAD_SMALL_INT_2_r12 1366
-#define _LOAD_SMALL_INT_2_r23 1367
-#define _LOAD_SMALL_INT_3_r01 1368
-#define _LOAD_SMALL_INT_3_r12 1369
-#define _LOAD_SMALL_INT_3_r23 1370
-#define _LOAD_SPECIAL_r00 1371
-#define _LOAD_SUPER_ATTR_ATTR_r31 1372
-#define _LOAD_SUPER_ATTR_METHOD_r32 1373
-#define _LOCK_OBJECT_r01 1374
-#define _LOCK_OBJECT_r11 1375
-#define _LOCK_OBJECT_r22 1376
-#define _LOCK_OBJECT_r33 1377
-#define _MAKE_CALLARGS_A_TUPLE_r33 1378
-#define _MAKE_CELL_r00 1379
-#define _MAKE_FUNCTION_r12 1380
-#define _MAKE_HEAP_SAFE_r01 1381
-#define _MAKE_HEAP_SAFE_r11 1382
-#define _MAKE_HEAP_SAFE_r22 1383
-#define _MAKE_HEAP_SAFE_r33 1384
-#define _MAKE_WARM_r00 1385
-#define _MAKE_WARM_r11 1386
-#define _MAKE_WARM_r22 1387
-#define _MAKE_WARM_r33 1388
-#define _MAP_ADD_r20 1389
-#define _MATCH_CLASS_r33 1390
-#define _MATCH_KEYS_r23 1391
-#define _MATCH_MAPPING_r02 1392
-#define _MATCH_MAPPING_r12 1393
-#define _MATCH_MAPPING_r23 1394
-#define _MATCH_SEQUENCE_r02 1395
-#define _MATCH_SEQUENCE_r12 1396
-#define _MATCH_SEQUENCE_r23 1397
-#define _MAYBE_EXPAND_METHOD_r00 1398
-#define _MAYBE_EXPAND_METHOD_KW_r11 1399
-#define _MONITOR_CALL_r00 1400
-#define _MONITOR_CALL_KW_r11 1401
-#define _MONITOR_JUMP_BACKWARD_r00 1402
-#define _MONITOR_JUMP_BACKWARD_r11 1403
-#define _MONITOR_JUMP_BACKWARD_r22 1404
-#define _MONITOR_JUMP_BACKWARD_r33 1405
-#define _MONITOR_RESUME_r00 1406
-#define _NOP_r00 1407
-#define _NOP_r11 1408
-#define _NOP_r22 1409
-#define _NOP_r33 1410
-#define _POP_EXCEPT_r10 1411
-#define _POP_ITER_r20 1412
-#define _POP_JUMP_IF_FALSE_r00 1413
-#define _POP_JUMP_IF_FALSE_r10 1414
-#define _POP_JUMP_IF_FALSE_r21 1415
-#define _POP_JUMP_IF_FALSE_r32 1416
-#define _POP_JUMP_IF_TRUE_r00 1417
-#define _POP_JUMP_IF_TRUE_r10 1418
-#define _POP_JUMP_IF_TRUE_r21 1419
-#define _POP_JUMP_IF_TRUE_r32 1420
-#define _POP_TOP_r10 1421
-#define _POP_TOP_FLOAT_r00 1422
-#define _POP_TOP_FLOAT_r10 1423
-#define _POP_TOP_FLOAT_r21 1424
-#define _POP_TOP_FLOAT_r32 1425
-#define _POP_TOP_INT_r00 1426
-#define _POP_TOP_INT_r10 1427
-#define _POP_TOP_INT_r21 1428
-#define _POP_TOP_INT_r32 1429
-#define _POP_TOP_NOP_r00 1430
-#define _POP_TOP_NOP_r10 1431
-#define _POP_TOP_NOP_r21 1432
-#define _POP_TOP_NOP_r32 1433
-#define _POP_TOP_OPARG_r00 1434
-#define _POP_TOP_UNICODE_r00 1435
-#define _POP_TOP_UNICODE_r10 1436
-#define _POP_TOP_UNICODE_r21 1437
-#define _POP_TOP_UNICODE_r32 1438
-#define _PUSH_EXC_INFO_r02 1439
-#define _PUSH_EXC_INFO_r12 1440
-#define _PUSH_EXC_INFO_r23 1441
-#define _PUSH_FRAME_r10 1442
-#define _PUSH_NULL_r01 1443
-#define _PUSH_NULL_r12 1444
-#define _PUSH_NULL_r23 1445
-#define _PUSH_NULL_CONDITIONAL_r00 1446
-#define _PY_FRAME_EX_r31 1447
-#define _PY_FRAME_GENERAL_r01 1448
-#define _PY_FRAME_KW_r11 1449
-#define _REPLACE_WITH_TRUE_r02 1450
-#define _REPLACE_WITH_TRUE_r12 1451
-#define _REPLACE_WITH_TRUE_r23 1452
-#define _RESUME_CHECK_r00 1453
-#define _RESUME_CHECK_r11 1454
-#define _RESUME_CHECK_r22 1455
-#define _RESUME_CHECK_r33 1456
-#define _RETURN_GENERATOR_r01 1457
-#define _RETURN_VALUE_r11 1458
-#define _SAVE_RETURN_OFFSET_r00 1459
-#define _SAVE_RETURN_OFFSET_r11 1460
-#define _SAVE_RETURN_OFFSET_r22 1461
-#define _SAVE_RETURN_OFFSET_r33 1462
-#define _SEND_r33 1463
-#define _SEND_GEN_FRAME_r33 1464
-#define _SETUP_ANNOTATIONS_r00 1465
-#define _SET_ADD_r10 1466
-#define _SET_FUNCTION_ATTRIBUTE_r01 1467
-#define _SET_FUNCTION_ATTRIBUTE_r11 1468
-#define _SET_FUNCTION_ATTRIBUTE_r21 1469
-#define _SET_FUNCTION_ATTRIBUTE_r32 1470
-#define _SET_IP_r00 1471
-#define _SET_IP_r11 1472
-#define _SET_IP_r22 1473
-#define _SET_IP_r33 1474
-#define _SET_UPDATE_r11 1475
-#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r03 1476
-#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r13 1477
-#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r23 1478
-#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r33 1479
-#define _SPILL_OR_RELOAD_r01 1480
-#define _SPILL_OR_RELOAD_r02 1481
-#define _SPILL_OR_RELOAD_r03 1482
-#define _SPILL_OR_RELOAD_r10 1483
-#define _SPILL_OR_RELOAD_r12 1484
-#define _SPILL_OR_RELOAD_r13 1485
-#define _SPILL_OR_RELOAD_r20 1486
-#define _SPILL_OR_RELOAD_r21 1487
-#define _SPILL_OR_RELOAD_r23 1488
-#define _SPILL_OR_RELOAD_r30 1489
-#define _SPILL_OR_RELOAD_r31 1490
-#define _SPILL_OR_RELOAD_r32 1491
-#define _START_EXECUTOR_r00 1492
-#define _STORE_ATTR_r20 1493
-#define _STORE_ATTR_INSTANCE_VALUE_r21 1494
-#define _STORE_ATTR_SLOT_r21 1495
-#define _STORE_ATTR_WITH_HINT_r21 1496
-#define _STORE_DEREF_r10 1497
-#define _STORE_FAST_LOAD_FAST_r11 1498
-#define _STORE_FAST_STORE_FAST_r20 1499
-#define _STORE_GLOBAL_r10 1500
-#define _STORE_NAME_r10 1501
-#define _STORE_SLICE_r30 1502
-#define _STORE_SUBSCR_r30 1503
-#define _STORE_SUBSCR_DICT_r31 1504
-#define _STORE_SUBSCR_DICT_KNOWN_HASH_r31 1505
-#define _STORE_SUBSCR_LIST_INT_r32 1506
-#define _SWAP_r11 1507
-#define _SWAP_2_r02 1508
-#define _SWAP_2_r12 1509
-#define _SWAP_2_r22 1510
-#define _SWAP_2_r33 1511
-#define _SWAP_3_r03 1512
-#define _SWAP_3_r13 1513
-#define _SWAP_3_r23 1514
-#define _SWAP_3_r33 1515
-#define _SWAP_FAST_r01 1516
-#define _SWAP_FAST_r11 1517
-#define _SWAP_FAST_r22 1518
-#define _SWAP_FAST_r33 1519
-#define _SWAP_FAST_0_r01 1520
-#define _SWAP_FAST_0_r11 1521
-#define _SWAP_FAST_0_r22 1522
-#define _SWAP_FAST_0_r33 1523
-#define _SWAP_FAST_1_r01 1524
-#define _SWAP_FAST_1_r11 1525
-#define _SWAP_FAST_1_r22 1526
-#define _SWAP_FAST_1_r33 1527
-#define _SWAP_FAST_2_r01 1528
-#define _SWAP_FAST_2_r11 1529
-#define _SWAP_FAST_2_r22 1530
-#define _SWAP_FAST_2_r33 1531
-#define _SWAP_FAST_3_r01 1532
-#define _SWAP_FAST_3_r11 1533
-#define _SWAP_FAST_3_r22 1534
-#define _SWAP_FAST_3_r33 1535
-#define _SWAP_FAST_4_r01 1536
-#define _SWAP_FAST_4_r11 1537
-#define _SWAP_FAST_4_r22 1538
-#define _SWAP_FAST_4_r33 1539
-#define _SWAP_FAST_5_r01 1540
-#define _SWAP_FAST_5_r11 1541
-#define _SWAP_FAST_5_r22 1542
-#define _SWAP_FAST_5_r33 1543
-#define _SWAP_FAST_6_r01 1544
-#define _SWAP_FAST_6_r11 1545
-#define _SWAP_FAST_6_r22 1546
-#define _SWAP_FAST_6_r33 1547
-#define _SWAP_FAST_7_r01 1548
-#define _SWAP_FAST_7_r11 1549
-#define _SWAP_FAST_7_r22 1550
-#define _SWAP_FAST_7_r33 1551
-#define _TIER2_RESUME_CHECK_r00 1552
-#define _TIER2_RESUME_CHECK_r11 1553
-#define _TIER2_RESUME_CHECK_r22 1554
-#define _TIER2_RESUME_CHECK_r33 1555
-#define _TO_BOOL_r11 1556
-#define _TO_BOOL_BOOL_r01 1557
-#define _TO_BOOL_BOOL_r11 1558
-#define _TO_BOOL_BOOL_r22 1559
-#define _TO_BOOL_BOOL_r33 1560
-#define _TO_BOOL_INT_r02 1561
-#define _TO_BOOL_INT_r12 1562
-#define _TO_BOOL_INT_r23 1563
-#define _TO_BOOL_LIST_r02 1564
-#define _TO_BOOL_LIST_r12 1565
-#define _TO_BOOL_LIST_r23 1566
-#define _TO_BOOL_NONE_r01 1567
-#define _TO_BOOL_NONE_r11 1568
-#define _TO_BOOL_NONE_r22 1569
-#define _TO_BOOL_NONE_r33 1570
-#define _TO_BOOL_STR_r02 1571
-#define _TO_BOOL_STR_r12 1572
-#define _TO_BOOL_STR_r23 1573
-#define _TRACE_RECORD_r00 1574
-#define _UNARY_INVERT_r12 1575
-#define _UNARY_NEGATIVE_r12 1576
-#define _UNARY_NEGATIVE_FLOAT_INPLACE_r02 1577
-#define _UNARY_NEGATIVE_FLOAT_INPLACE_r12 1578
-#define _UNARY_NEGATIVE_FLOAT_INPLACE_r23 1579
-#define _UNARY_NOT_r01 1580
-#define _UNARY_NOT_r11 1581
-#define _UNARY_NOT_r22 1582
-#define _UNARY_NOT_r33 1583
-#define _UNPACK_EX_r10 1584
-#define _UNPACK_SEQUENCE_r10 1585
-#define _UNPACK_SEQUENCE_LIST_r10 1586
-#define _UNPACK_SEQUENCE_TUPLE_r10 1587
-#define _UNPACK_SEQUENCE_TWO_TUPLE_r12 1588
-#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r03 1589
-#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r13 1590
-#define _UNPACK_SEQUENCE_UNIQUE_TUPLE_r10 1591
-#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r02 1592
-#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r12 1593
-#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r23 1594
-#define _WITH_EXCEPT_START_r33 1595
-#define _YIELD_VALUE_r11 1596
-#define MAX_UOP_REGS_ID 1596
+#define _YIELD_VALUE 646
+#define MAX_UOP_ID 646
+#define _ALLOCATE_OBJECT_r00 647
+#define _BINARY_OP_r23 648
+#define _BINARY_OP_ADD_FLOAT_r03 649
+#define _BINARY_OP_ADD_FLOAT_r13 650
+#define _BINARY_OP_ADD_FLOAT_r23 651
+#define _BINARY_OP_ADD_FLOAT_INPLACE_r03 652
+#define _BINARY_OP_ADD_FLOAT_INPLACE_r13 653
+#define _BINARY_OP_ADD_FLOAT_INPLACE_r23 654
+#define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT_r03 655
+#define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT_r13 656
+#define _BINARY_OP_ADD_FLOAT_INPLACE_RIGHT_r23 657
+#define _BINARY_OP_ADD_INT_r03 658
+#define _BINARY_OP_ADD_INT_r13 659
+#define _BINARY_OP_ADD_INT_r23 660
+#define _BINARY_OP_ADD_INT_INPLACE_r03 661
+#define _BINARY_OP_ADD_INT_INPLACE_r13 662
+#define _BINARY_OP_ADD_INT_INPLACE_r23 663
+#define _BINARY_OP_ADD_INT_INPLACE_RIGHT_r03 664
+#define _BINARY_OP_ADD_INT_INPLACE_RIGHT_r13 665
+#define _BINARY_OP_ADD_INT_INPLACE_RIGHT_r23 666
+#define _BINARY_OP_ADD_UNICODE_r03 667
+#define _BINARY_OP_ADD_UNICODE_r13 668
+#define _BINARY_OP_ADD_UNICODE_r23 669
+#define _BINARY_OP_EXTEND_r23 670
+#define _BINARY_OP_INPLACE_ADD_UNICODE_r21 671
+#define _BINARY_OP_MULTIPLY_FLOAT_r03 672
+#define _BINARY_OP_MULTIPLY_FLOAT_r13 673
+#define _BINARY_OP_MULTIPLY_FLOAT_r23 674
+#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_r03 675
+#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_r13 676
+#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_r23 677
+#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT_r03 678
+#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT_r13 679
+#define _BINARY_OP_MULTIPLY_FLOAT_INPLACE_RIGHT_r23 680
+#define _BINARY_OP_MULTIPLY_INT_r03 681
+#define _BINARY_OP_MULTIPLY_INT_r13 682
+#define _BINARY_OP_MULTIPLY_INT_r23 683
+#define _BINARY_OP_MULTIPLY_INT_INPLACE_r03 684
+#define _BINARY_OP_MULTIPLY_INT_INPLACE_r13 685
+#define _BINARY_OP_MULTIPLY_INT_INPLACE_r23 686
+#define _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r03 687
+#define _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r13 688
+#define _BINARY_OP_MULTIPLY_INT_INPLACE_RIGHT_r23 689
+#define _BINARY_OP_SUBSCR_CHECK_FUNC_r23 690
+#define _BINARY_OP_SUBSCR_DICT_r23 691
+#define _BINARY_OP_SUBSCR_DICT_KNOWN_HASH_r23 692
+#define _BINARY_OP_SUBSCR_INIT_CALL_r01 693
+#define _BINARY_OP_SUBSCR_INIT_CALL_r11 694
+#define _BINARY_OP_SUBSCR_INIT_CALL_r21 695
+#define _BINARY_OP_SUBSCR_INIT_CALL_r31 696
+#define _BINARY_OP_SUBSCR_LIST_INT_r23 697
+#define _BINARY_OP_SUBSCR_LIST_SLICE_r23 698
+#define _BINARY_OP_SUBSCR_STR_INT_r23 699
+#define _BINARY_OP_SUBSCR_TUPLE_INT_r03 700
+#define _BINARY_OP_SUBSCR_TUPLE_INT_r13 701
+#define _BINARY_OP_SUBSCR_TUPLE_INT_r23 702
+#define _BINARY_OP_SUBSCR_USTR_INT_r23 703
+#define _BINARY_OP_SUBTRACT_FLOAT_r03 704
+#define _BINARY_OP_SUBTRACT_FLOAT_r13 705
+#define _BINARY_OP_SUBTRACT_FLOAT_r23 706
+#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_r03 707
+#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_r13 708
+#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_r23 709
+#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT_r03 710
+#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT_r13 711
+#define _BINARY_OP_SUBTRACT_FLOAT_INPLACE_RIGHT_r23 712
+#define _BINARY_OP_SUBTRACT_INT_r03 713
+#define _BINARY_OP_SUBTRACT_INT_r13 714
+#define _BINARY_OP_SUBTRACT_INT_r23 715
+#define _BINARY_OP_SUBTRACT_INT_INPLACE_r03 716
+#define _BINARY_OP_SUBTRACT_INT_INPLACE_r13 717
+#define _BINARY_OP_SUBTRACT_INT_INPLACE_r23 718
+#define _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r03 719
+#define _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r13 720
+#define _BINARY_OP_SUBTRACT_INT_INPLACE_RIGHT_r23 721
+#define _BINARY_OP_TRUEDIV_FLOAT_r23 722
+#define _BINARY_OP_TRUEDIV_FLOAT_INPLACE_r03 723
+#define _BINARY_OP_TRUEDIV_FLOAT_INPLACE_r13 724
+#define _BINARY_OP_TRUEDIV_FLOAT_INPLACE_r23 725
+#define _BINARY_OP_TRUEDIV_FLOAT_INPLACE_RIGHT_r03 726
+#define _BINARY_OP_TRUEDIV_FLOAT_INPLACE_RIGHT_r13 727
+#define _BINARY_OP_TRUEDIV_FLOAT_INPLACE_RIGHT_r23 728
+#define _BINARY_SLICE_r31 729
+#define _BUILD_INTERPOLATION_r01 730
+#define _BUILD_LIST_r01 731
+#define _BUILD_MAP_r01 732
+#define _BUILD_SET_r01 733
+#define _BUILD_SLICE_r01 734
+#define _BUILD_STRING_r01 735
+#define _BUILD_TEMPLATE_r21 736
+#define _BUILD_TUPLE_r01 737
+#define _CALL_BUILTIN_CLASS_r00 738
+#define _CALL_BUILTIN_FAST_r00 739
+#define _CALL_BUILTIN_FAST_WITH_KEYWORDS_r00 740
+#define _CALL_BUILTIN_O_r03 741
+#define _CALL_FUNCTION_EX_NON_PY_GENERAL_r31 742
+#define _CALL_INTRINSIC_1_r12 743
+#define _CALL_INTRINSIC_2_r23 744
+#define _CALL_ISINSTANCE_r31 745
+#define _CALL_KW_NON_PY_r11 746
+#define _CALL_LEN_r33 747
+#define _CALL_LIST_APPEND_r03 748
+#define _CALL_LIST_APPEND_r13 749
+#define _CALL_LIST_APPEND_r23 750
+#define _CALL_LIST_APPEND_r33 751
+#define _CALL_METHOD_DESCRIPTOR_FAST_r00 752
+#define _CALL_METHOD_DESCRIPTOR_FAST_INLINE_r00 753
+#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_r00 754
+#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_INLINE_r00 755
+#define _CALL_METHOD_DESCRIPTOR_NOARGS_r03 756
+#define _CALL_METHOD_DESCRIPTOR_NOARGS_INLINE_r03 757
+#define _CALL_METHOD_DESCRIPTOR_O_r03 758
+#define _CALL_METHOD_DESCRIPTOR_O_INLINE_r03 759
+#define _CALL_NON_PY_GENERAL_r01 760
+#define _CALL_STR_1_r32 761
+#define _CALL_TUPLE_1_r32 762
+#define _CALL_TYPE_1_r02 763
+#define _CALL_TYPE_1_r12 764
+#define _CALL_TYPE_1_r22 765
+#define _CALL_TYPE_1_r32 766
+#define _CHECK_ATTR_CLASS_r01 767
+#define _CHECK_ATTR_CLASS_r11 768
+#define _CHECK_ATTR_CLASS_r22 769
+#define _CHECK_ATTR_CLASS_r33 770
+#define _CHECK_ATTR_METHOD_LAZY_DICT_r01 771
+#define _CHECK_ATTR_METHOD_LAZY_DICT_r11 772
+#define _CHECK_ATTR_METHOD_LAZY_DICT_r22 773
+#define _CHECK_ATTR_METHOD_LAZY_DICT_r33 774
+#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS_r00 775
+#define _CHECK_EG_MATCH_r22 776
+#define _CHECK_EXC_MATCH_r22 777
+#define _CHECK_FUNCTION_EXACT_ARGS_r00 778
+#define _CHECK_FUNCTION_VERSION_r00 779
+#define _CHECK_FUNCTION_VERSION_INLINE_r00 780
+#define _CHECK_FUNCTION_VERSION_INLINE_r11 781
+#define _CHECK_FUNCTION_VERSION_INLINE_r22 782
+#define _CHECK_FUNCTION_VERSION_INLINE_r33 783
+#define _CHECK_FUNCTION_VERSION_KW_r11 784
+#define _CHECK_IS_NOT_PY_CALLABLE_r00 785
+#define _CHECK_IS_NOT_PY_CALLABLE_EX_r03 786
+#define _CHECK_IS_NOT_PY_CALLABLE_EX_r13 787
+#define _CHECK_IS_NOT_PY_CALLABLE_EX_r23 788
+#define _CHECK_IS_NOT_PY_CALLABLE_EX_r33 789
+#define _CHECK_IS_NOT_PY_CALLABLE_KW_r11 790
+#define _CHECK_IS_PY_CALLABLE_EX_r03 791
+#define _CHECK_IS_PY_CALLABLE_EX_r13 792
+#define _CHECK_IS_PY_CALLABLE_EX_r23 793
+#define _CHECK_IS_PY_CALLABLE_EX_r33 794
+#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r01 795
+#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r11 796
+#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r22 797
+#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r33 798
+#define _CHECK_METHOD_VERSION_r00 799
+#define _CHECK_METHOD_VERSION_KW_r11 800
+#define _CHECK_OBJECT_r00 801
+#define _CHECK_PEP_523_r00 802
+#define _CHECK_PEP_523_r11 803
+#define _CHECK_PEP_523_r22 804
+#define _CHECK_PEP_523_r33 805
+#define _CHECK_PERIODIC_r00 806
+#define _CHECK_PERIODIC_AT_END_r00 807
+#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM_r00 808
+#define _CHECK_RECURSION_LIMIT_r00 809
+#define _CHECK_RECURSION_LIMIT_r11 810
+#define _CHECK_RECURSION_LIMIT_r22 811
+#define _CHECK_RECURSION_LIMIT_r33 812
+#define _CHECK_RECURSION_REMAINING_r00 813
+#define _CHECK_RECURSION_REMAINING_r11 814
+#define _CHECK_RECURSION_REMAINING_r22 815
+#define _CHECK_RECURSION_REMAINING_r33 816
+#define _CHECK_STACK_SPACE_r00 817
+#define _CHECK_STACK_SPACE_OPERAND_r00 818
+#define _CHECK_STACK_SPACE_OPERAND_r11 819
+#define _CHECK_STACK_SPACE_OPERAND_r22 820
+#define _CHECK_STACK_SPACE_OPERAND_r33 821
+#define _CHECK_VALIDITY_r00 822
+#define _CHECK_VALIDITY_r11 823
+#define _CHECK_VALIDITY_r22 824
+#define _CHECK_VALIDITY_r33 825
+#define _COLD_DYNAMIC_EXIT_r00 826
+#define _COLD_EXIT_r00 827
+#define _COMPARE_OP_r21 828
+#define _COMPARE_OP_FLOAT_r03 829
+#define _COMPARE_OP_FLOAT_r13 830
+#define _COMPARE_OP_FLOAT_r23 831
+#define _COMPARE_OP_INT_r23 832
+#define _COMPARE_OP_STR_r23 833
+#define _CONTAINS_OP_r23 834
+#define _CONTAINS_OP_DICT_r23 835
+#define _CONTAINS_OP_SET_r23 836
+#define _CONVERT_VALUE_r11 837
+#define _COPY_r01 838
+#define _COPY_1_r02 839
+#define _COPY_1_r12 840
+#define _COPY_1_r23 841
+#define _COPY_2_r03 842
+#define _COPY_2_r13 843
+#define _COPY_2_r23 844
+#define _COPY_3_r03 845
+#define _COPY_3_r13 846
+#define _COPY_3_r23 847
+#define _COPY_3_r33 848
+#define _COPY_FREE_VARS_r00 849
+#define _COPY_FREE_VARS_r11 850
+#define _COPY_FREE_VARS_r22 851
+#define _COPY_FREE_VARS_r33 852
+#define _CREATE_INIT_FRAME_r01 853
+#define _DELETE_ATTR_r10 854
+#define _DELETE_DEREF_r00 855
+#define _DELETE_FAST_r00 856
+#define _DELETE_GLOBAL_r00 857
+#define _DELETE_NAME_r00 858
+#define _DELETE_SUBSCR_r20 859
+#define _DEOPT_r00 860
+#define _DEOPT_r10 861
+#define _DEOPT_r20 862
+#define _DEOPT_r30 863
+#define _DICT_MERGE_r11 864
+#define _DICT_UPDATE_r11 865
+#define _DO_CALL_r01 866
+#define _DO_CALL_FUNCTION_EX_r31 867
+#define _DO_CALL_KW_r11 868
+#define _DYNAMIC_EXIT_r00 869
+#define _DYNAMIC_EXIT_r10 870
+#define _DYNAMIC_EXIT_r20 871
+#define _DYNAMIC_EXIT_r30 872
+#define _END_FOR_r10 873
+#define _END_SEND_r31 874
+#define _ERROR_POP_N_r00 875
+#define _EXIT_INIT_CHECK_r10 876
+#define _EXIT_TRACE_r00 877
+#define _EXIT_TRACE_r10 878
+#define _EXIT_TRACE_r20 879
+#define _EXIT_TRACE_r30 880
+#define _EXPAND_METHOD_r00 881
+#define _EXPAND_METHOD_KW_r11 882
+#define _FATAL_ERROR_r00 883
+#define _FATAL_ERROR_r11 884
+#define _FATAL_ERROR_r22 885
+#define _FATAL_ERROR_r33 886
+#define _FORMAT_SIMPLE_r11 887
+#define _FORMAT_WITH_SPEC_r21 888
+#define _FOR_ITER_r23 889
+#define _FOR_ITER_GEN_FRAME_r03 890
+#define _FOR_ITER_GEN_FRAME_r13 891
+#define _FOR_ITER_GEN_FRAME_r23 892
+#define _FOR_ITER_TIER_TWO_r23 893
+#define _FOR_ITER_VIRTUAL_r23 894
+#define _FOR_ITER_VIRTUAL_TIER_TWO_r23 895
+#define _GET_AITER_r11 896
+#define _GET_ANEXT_r12 897
+#define _GET_AWAITABLE_r11 898
+#define _GET_ITER_r12 899
+#define _GET_ITER_TRAD_r12 900
+#define _GET_LEN_r12 901
+#define _GUARD_BINARY_OP_EXTEND_r22 902
+#define _GUARD_BINARY_OP_EXTEND_LHS_r02 903
+#define _GUARD_BINARY_OP_EXTEND_LHS_r12 904
+#define _GUARD_BINARY_OP_EXTEND_LHS_r22 905
+#define _GUARD_BINARY_OP_EXTEND_LHS_r33 906
+#define _GUARD_BINARY_OP_EXTEND_RHS_r02 907
+#define _GUARD_BINARY_OP_EXTEND_RHS_r12 908
+#define _GUARD_BINARY_OP_EXTEND_RHS_r22 909
+#define _GUARD_BINARY_OP_EXTEND_RHS_r33 910
+#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r02 911
+#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r12 912
+#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r22 913
+#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r33 914
+#define _GUARD_BIT_IS_SET_POP_r00 915
+#define _GUARD_BIT_IS_SET_POP_r10 916
+#define _GUARD_BIT_IS_SET_POP_r21 917
+#define _GUARD_BIT_IS_SET_POP_r32 918
+#define _GUARD_BIT_IS_SET_POP_4_r00 919
+#define _GUARD_BIT_IS_SET_POP_4_r10 920
+#define _GUARD_BIT_IS_SET_POP_4_r21 921
+#define _GUARD_BIT_IS_SET_POP_4_r32 922
+#define _GUARD_BIT_IS_SET_POP_5_r00 923
+#define _GUARD_BIT_IS_SET_POP_5_r10 924
+#define _GUARD_BIT_IS_SET_POP_5_r21 925
+#define _GUARD_BIT_IS_SET_POP_5_r32 926
+#define _GUARD_BIT_IS_SET_POP_6_r00 927
+#define _GUARD_BIT_IS_SET_POP_6_r10 928
+#define _GUARD_BIT_IS_SET_POP_6_r21 929
+#define _GUARD_BIT_IS_SET_POP_6_r32 930
+#define _GUARD_BIT_IS_SET_POP_7_r00 931
+#define _GUARD_BIT_IS_SET_POP_7_r10 932
+#define _GUARD_BIT_IS_SET_POP_7_r21 933
+#define _GUARD_BIT_IS_SET_POP_7_r32 934
+#define _GUARD_BIT_IS_UNSET_POP_r00 935
+#define _GUARD_BIT_IS_UNSET_POP_r10 936
+#define _GUARD_BIT_IS_UNSET_POP_r21 937
+#define _GUARD_BIT_IS_UNSET_POP_r32 938
+#define _GUARD_BIT_IS_UNSET_POP_4_r00 939
+#define _GUARD_BIT_IS_UNSET_POP_4_r10 940
+#define _GUARD_BIT_IS_UNSET_POP_4_r21 941
+#define _GUARD_BIT_IS_UNSET_POP_4_r32 942
+#define _GUARD_BIT_IS_UNSET_POP_5_r00 943
+#define _GUARD_BIT_IS_UNSET_POP_5_r10 944
+#define _GUARD_BIT_IS_UNSET_POP_5_r21 945
+#define _GUARD_BIT_IS_UNSET_POP_5_r32 946
+#define _GUARD_BIT_IS_UNSET_POP_6_r00 947
+#define _GUARD_BIT_IS_UNSET_POP_6_r10 948
+#define _GUARD_BIT_IS_UNSET_POP_6_r21 949
+#define _GUARD_BIT_IS_UNSET_POP_6_r32 950
+#define _GUARD_BIT_IS_UNSET_POP_7_r00 951
+#define _GUARD_BIT_IS_UNSET_POP_7_r10 952
+#define _GUARD_BIT_IS_UNSET_POP_7_r21 953
+#define _GUARD_BIT_IS_UNSET_POP_7_r32 954
+#define _GUARD_CALLABLE_BUILTIN_CLASS_r00 955
+#define _GUARD_CALLABLE_BUILTIN_FAST_r00 956
+#define _GUARD_CALLABLE_BUILTIN_FAST_WITH_KEYWORDS_r00 957
+#define _GUARD_CALLABLE_BUILTIN_O_r00 958
+#define _GUARD_CALLABLE_ISINSTANCE_r03 959
+#define _GUARD_CALLABLE_ISINSTANCE_r13 960
+#define _GUARD_CALLABLE_ISINSTANCE_r23 961
+#define _GUARD_CALLABLE_ISINSTANCE_r33 962
+#define _GUARD_CALLABLE_LEN_r03 963
+#define _GUARD_CALLABLE_LEN_r13 964
+#define _GUARD_CALLABLE_LEN_r23 965
+#define _GUARD_CALLABLE_LEN_r33 966
+#define _GUARD_CALLABLE_LIST_APPEND_r03 967
+#define _GUARD_CALLABLE_LIST_APPEND_r13 968
+#define _GUARD_CALLABLE_LIST_APPEND_r23 969
+#define _GUARD_CALLABLE_LIST_APPEND_r33 970
+#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_r00 971
+#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_r00 972
+#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_NOARGS_r00 973
+#define _GUARD_CALLABLE_METHOD_DESCRIPTOR_O_r00 974
+#define _GUARD_CALLABLE_STR_1_r03 975
+#define _GUARD_CALLABLE_STR_1_r13 976
+#define _GUARD_CALLABLE_STR_1_r23 977
+#define _GUARD_CALLABLE_STR_1_r33 978
+#define _GUARD_CALLABLE_TUPLE_1_r03 979
+#define _GUARD_CALLABLE_TUPLE_1_r13 980
+#define _GUARD_CALLABLE_TUPLE_1_r23 981
+#define _GUARD_CALLABLE_TUPLE_1_r33 982
+#define _GUARD_CALLABLE_TYPE_1_r03 983
+#define _GUARD_CALLABLE_TYPE_1_r13 984
+#define _GUARD_CALLABLE_TYPE_1_r23 985
+#define _GUARD_CALLABLE_TYPE_1_r33 986
+#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r00 987
+#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r11 988
+#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r22 989
+#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r33 990
+#define _GUARD_CODE_VERSION_RETURN_VALUE_r00 991
+#define _GUARD_CODE_VERSION_RETURN_VALUE_r11 992
+#define _GUARD_CODE_VERSION_RETURN_VALUE_r22 993
+#define _GUARD_CODE_VERSION_RETURN_VALUE_r33 994
+#define _GUARD_CODE_VERSION_YIELD_VALUE_r00 995
+#define _GUARD_CODE_VERSION_YIELD_VALUE_r11 996
+#define _GUARD_CODE_VERSION_YIELD_VALUE_r22 997
+#define _GUARD_CODE_VERSION_YIELD_VALUE_r33 998
+#define _GUARD_CODE_VERSION__PUSH_FRAME_r00 999
+#define _GUARD_CODE_VERSION__PUSH_FRAME_r11 1000
+#define _GUARD_CODE_VERSION__PUSH_FRAME_r22 1001
+#define _GUARD_CODE_VERSION__PUSH_FRAME_r33 1002
+#define _GUARD_DORV_NO_DICT_r01 1003
+#define _GUARD_DORV_NO_DICT_r11 1004
+#define _GUARD_DORV_NO_DICT_r22 1005
+#define _GUARD_DORV_NO_DICT_r33 1006
+#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r01 1007
+#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r11 1008
+#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r22 1009
+#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r33 1010
+#define _GUARD_GLOBALS_VERSION_r00 1011
+#define _GUARD_GLOBALS_VERSION_r11 1012
+#define _GUARD_GLOBALS_VERSION_r22 1013
+#define _GUARD_GLOBALS_VERSION_r33 1014
+#define _GUARD_IP_RETURN_GENERATOR_r00 1015
+#define _GUARD_IP_RETURN_GENERATOR_r11 1016
+#define _GUARD_IP_RETURN_GENERATOR_r22 1017
+#define _GUARD_IP_RETURN_GENERATOR_r33 1018
+#define _GUARD_IP_RETURN_VALUE_r00 1019
+#define _GUARD_IP_RETURN_VALUE_r11 1020
+#define _GUARD_IP_RETURN_VALUE_r22 1021
+#define _GUARD_IP_RETURN_VALUE_r33 1022
+#define _GUARD_IP_YIELD_VALUE_r00 1023
+#define _GUARD_IP_YIELD_VALUE_r11 1024
+#define _GUARD_IP_YIELD_VALUE_r22 1025
+#define _GUARD_IP_YIELD_VALUE_r33 1026
+#define _GUARD_IP__PUSH_FRAME_r00 1027
+#define _GUARD_IP__PUSH_FRAME_r11 1028
+#define _GUARD_IP__PUSH_FRAME_r22 1029
+#define _GUARD_IP__PUSH_FRAME_r33 1030
+#define _GUARD_IS_FALSE_POP_r00 1031
+#define _GUARD_IS_FALSE_POP_r10 1032
+#define _GUARD_IS_FALSE_POP_r21 1033
+#define _GUARD_IS_FALSE_POP_r32 1034
+#define _GUARD_IS_NONE_POP_r00 1035
+#define _GUARD_IS_NONE_POP_r10 1036
+#define _GUARD_IS_NONE_POP_r21 1037
+#define _GUARD_IS_NONE_POP_r32 1038
+#define _GUARD_IS_NOT_NONE_POP_r10 1039
+#define _GUARD_IS_TRUE_POP_r00 1040
+#define _GUARD_IS_TRUE_POP_r10 1041
+#define _GUARD_IS_TRUE_POP_r21 1042
+#define _GUARD_IS_TRUE_POP_r32 1043
+#define _GUARD_ITERATOR_r01 1044
+#define _GUARD_ITERATOR_r11 1045
+#define _GUARD_ITERATOR_r22 1046
+#define _GUARD_ITERATOR_r33 1047
+#define _GUARD_ITER_VIRTUAL_r01 1048
+#define _GUARD_ITER_VIRTUAL_r11 1049
+#define _GUARD_ITER_VIRTUAL_r22 1050
+#define _GUARD_ITER_VIRTUAL_r33 1051
+#define _GUARD_KEYS_VERSION_r01 1052
+#define _GUARD_KEYS_VERSION_r11 1053
+#define _GUARD_KEYS_VERSION_r22 1054
+#define _GUARD_KEYS_VERSION_r33 1055
+#define _GUARD_LOAD_SUPER_ATTR_METHOD_r03 1056
+#define _GUARD_LOAD_SUPER_ATTR_METHOD_r13 1057
+#define _GUARD_LOAD_SUPER_ATTR_METHOD_r23 1058
+#define _GUARD_LOAD_SUPER_ATTR_METHOD_r33 1059
+#define _GUARD_NOS_ANY_DICT_r02 1060
+#define _GUARD_NOS_ANY_DICT_r12 1061
+#define _GUARD_NOS_ANY_DICT_r22 1062
+#define _GUARD_NOS_ANY_DICT_r33 1063
+#define _GUARD_NOS_COMPACT_ASCII_r02 1064
+#define _GUARD_NOS_COMPACT_ASCII_r12 1065
+#define _GUARD_NOS_COMPACT_ASCII_r22 1066
+#define _GUARD_NOS_COMPACT_ASCII_r33 1067
+#define _GUARD_NOS_DICT_r02 1068
+#define _GUARD_NOS_DICT_r12 1069
+#define _GUARD_NOS_DICT_r22 1070
+#define _GUARD_NOS_DICT_r33 1071
+#define _GUARD_NOS_FLOAT_r02 1072
+#define _GUARD_NOS_FLOAT_r12 1073
+#define _GUARD_NOS_FLOAT_r22 1074
+#define _GUARD_NOS_FLOAT_r33 1075
+#define _GUARD_NOS_INT_r02 1076
+#define _GUARD_NOS_INT_r12 1077
+#define _GUARD_NOS_INT_r22 1078
+#define _GUARD_NOS_INT_r33 1079
+#define _GUARD_NOS_ITER_VIRTUAL_r02 1080
+#define _GUARD_NOS_ITER_VIRTUAL_r12 1081
+#define _GUARD_NOS_ITER_VIRTUAL_r22 1082
+#define _GUARD_NOS_ITER_VIRTUAL_r33 1083
+#define _GUARD_NOS_LIST_r02 1084
+#define _GUARD_NOS_LIST_r12 1085
+#define _GUARD_NOS_LIST_r22 1086
+#define _GUARD_NOS_LIST_r33 1087
+#define _GUARD_NOS_NOT_NULL_r02 1088
+#define _GUARD_NOS_NOT_NULL_r12 1089
+#define _GUARD_NOS_NOT_NULL_r22 1090
+#define _GUARD_NOS_NOT_NULL_r33 1091
+#define _GUARD_NOS_NULL_r02 1092
+#define _GUARD_NOS_NULL_r12 1093
+#define _GUARD_NOS_NULL_r22 1094
+#define _GUARD_NOS_NULL_r33 1095
+#define _GUARD_NOS_OVERFLOWED_r02 1096
+#define _GUARD_NOS_OVERFLOWED_r12 1097
+#define _GUARD_NOS_OVERFLOWED_r22 1098
+#define _GUARD_NOS_OVERFLOWED_r33 1099
+#define _GUARD_NOS_TUPLE_r02 1100
+#define _GUARD_NOS_TUPLE_r12 1101
+#define _GUARD_NOS_TUPLE_r22 1102
+#define _GUARD_NOS_TUPLE_r33 1103
+#define _GUARD_NOS_TYPE_VERSION_r02 1104
+#define _GUARD_NOS_TYPE_VERSION_r12 1105
+#define _GUARD_NOS_TYPE_VERSION_r22 1106
+#define _GUARD_NOS_TYPE_VERSION_r33 1107
+#define _GUARD_NOS_UNICODE_r02 1108
+#define _GUARD_NOS_UNICODE_r12 1109
+#define _GUARD_NOS_UNICODE_r22 1110
+#define _GUARD_NOS_UNICODE_r33 1111
+#define _GUARD_NOT_EXHAUSTED_LIST_r02 1112
+#define _GUARD_NOT_EXHAUSTED_LIST_r12 1113
+#define _GUARD_NOT_EXHAUSTED_LIST_r22 1114
+#define _GUARD_NOT_EXHAUSTED_LIST_r33 1115
+#define _GUARD_NOT_EXHAUSTED_RANGE_r02 1116
+#define _GUARD_NOT_EXHAUSTED_RANGE_r12 1117
+#define _GUARD_NOT_EXHAUSTED_RANGE_r22 1118
+#define _GUARD_NOT_EXHAUSTED_RANGE_r33 1119
+#define _GUARD_NOT_EXHAUSTED_TUPLE_r02 1120
+#define _GUARD_NOT_EXHAUSTED_TUPLE_r12 1121
+#define _GUARD_NOT_EXHAUSTED_TUPLE_r22 1122
+#define _GUARD_NOT_EXHAUSTED_TUPLE_r33 1123
+#define _GUARD_THIRD_NULL_r03 1124
+#define _GUARD_THIRD_NULL_r13 1125
+#define _GUARD_THIRD_NULL_r23 1126
+#define _GUARD_THIRD_NULL_r33 1127
+#define _GUARD_TOS_ANY_DICT_r01 1128
+#define _GUARD_TOS_ANY_DICT_r11 1129
+#define _GUARD_TOS_ANY_DICT_r22 1130
+#define _GUARD_TOS_ANY_DICT_r33 1131
+#define _GUARD_TOS_ANY_SET_r01 1132
+#define _GUARD_TOS_ANY_SET_r11 1133
+#define _GUARD_TOS_ANY_SET_r22 1134
+#define _GUARD_TOS_ANY_SET_r33 1135
+#define _GUARD_TOS_DICT_r01 1136
+#define _GUARD_TOS_DICT_r11 1137
+#define _GUARD_TOS_DICT_r22 1138
+#define _GUARD_TOS_DICT_r33 1139
+#define _GUARD_TOS_FLOAT_r01 1140
+#define _GUARD_TOS_FLOAT_r11 1141
+#define _GUARD_TOS_FLOAT_r22 1142
+#define _GUARD_TOS_FLOAT_r33 1143
+#define _GUARD_TOS_FROZENDICT_r01 1144
+#define _GUARD_TOS_FROZENDICT_r11 1145
+#define _GUARD_TOS_FROZENDICT_r22 1146
+#define _GUARD_TOS_FROZENDICT_r33 1147
+#define _GUARD_TOS_FROZENSET_r01 1148
+#define _GUARD_TOS_FROZENSET_r11 1149
+#define _GUARD_TOS_FROZENSET_r22 1150
+#define _GUARD_TOS_FROZENSET_r33 1151
+#define _GUARD_TOS_INT_r01 1152
+#define _GUARD_TOS_INT_r11 1153
+#define _GUARD_TOS_INT_r22 1154
+#define _GUARD_TOS_INT_r33 1155
+#define _GUARD_TOS_LIST_r01 1156
+#define _GUARD_TOS_LIST_r11 1157
+#define _GUARD_TOS_LIST_r22 1158
+#define _GUARD_TOS_LIST_r33 1159
+#define _GUARD_TOS_OVERFLOWED_r01 1160
+#define _GUARD_TOS_OVERFLOWED_r11 1161
+#define _GUARD_TOS_OVERFLOWED_r22 1162
+#define _GUARD_TOS_OVERFLOWED_r33 1163
+#define _GUARD_TOS_SET_r01 1164
+#define _GUARD_TOS_SET_r11 1165
+#define _GUARD_TOS_SET_r22 1166
+#define _GUARD_TOS_SET_r33 1167
+#define _GUARD_TOS_SLICE_r01 1168
+#define _GUARD_TOS_SLICE_r11 1169
+#define _GUARD_TOS_SLICE_r22 1170
+#define _GUARD_TOS_SLICE_r33 1171
+#define _GUARD_TOS_TUPLE_r01 1172
+#define _GUARD_TOS_TUPLE_r11 1173
+#define _GUARD_TOS_TUPLE_r22 1174
+#define _GUARD_TOS_TUPLE_r33 1175
+#define _GUARD_TOS_UNICODE_r01 1176
+#define _GUARD_TOS_UNICODE_r11 1177
+#define _GUARD_TOS_UNICODE_r22 1178
+#define _GUARD_TOS_UNICODE_r33 1179
+#define _GUARD_TYPE_r01 1180
+#define _GUARD_TYPE_r11 1181
+#define _GUARD_TYPE_r22 1182
+#define _GUARD_TYPE_r33 1183
+#define _GUARD_TYPE_VERSION_r01 1184
+#define _GUARD_TYPE_VERSION_r11 1185
+#define _GUARD_TYPE_VERSION_r22 1186
+#define _GUARD_TYPE_VERSION_r33 1187
+#define _GUARD_TYPE_VERSION_LOCKED_r01 1188
+#define _GUARD_TYPE_VERSION_LOCKED_r11 1189
+#define _GUARD_TYPE_VERSION_LOCKED_r22 1190
+#define _GUARD_TYPE_VERSION_LOCKED_r33 1191
+#define _HANDLE_PENDING_AND_DEOPT_r00 1192
+#define _HANDLE_PENDING_AND_DEOPT_r10 1193
+#define _HANDLE_PENDING_AND_DEOPT_r20 1194
+#define _HANDLE_PENDING_AND_DEOPT_r30 1195
+#define _IMPORT_FROM_r12 1196
+#define _IMPORT_NAME_r21 1197
+#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS_r00 1198
+#define _INIT_CALL_PY_EXACT_ARGS_r01 1199
+#define _INIT_CALL_PY_EXACT_ARGS_0_r01 1200
+#define _INIT_CALL_PY_EXACT_ARGS_1_r01 1201
+#define _INIT_CALL_PY_EXACT_ARGS_2_r01 1202
+#define _INIT_CALL_PY_EXACT_ARGS_3_r01 1203
+#define _INIT_CALL_PY_EXACT_ARGS_4_r01 1204
+#define _INSERT_NULL_r10 1205
+#define _INSTRUMENTED_FOR_ITER_r23 1206
+#define _INSTRUMENTED_INSTRUCTION_r00 1207
+#define _INSTRUMENTED_JUMP_FORWARD_r00 1208
+#define _INSTRUMENTED_JUMP_FORWARD_r11 1209
+#define _INSTRUMENTED_JUMP_FORWARD_r22 1210
+#define _INSTRUMENTED_JUMP_FORWARD_r33 1211
+#define _INSTRUMENTED_LINE_r00 1212
+#define _INSTRUMENTED_NOT_TAKEN_r00 1213
+#define _INSTRUMENTED_NOT_TAKEN_r11 1214
+#define _INSTRUMENTED_NOT_TAKEN_r22 1215
+#define _INSTRUMENTED_NOT_TAKEN_r33 1216
+#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r00 1217
+#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r10 1218
+#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r21 1219
+#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r32 1220
+#define _INSTRUMENTED_POP_JUMP_IF_NONE_r10 1221
+#define _INSTRUMENTED_POP_JUMP_IF_NOT_NONE_r10 1222
+#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r00 1223
+#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r10 1224
+#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r21 1225
+#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r32 1226
+#define _IS_NONE_r11 1227
+#define _IS_OP_r03 1228
+#define _IS_OP_r13 1229
+#define _IS_OP_r23 1230
+#define _ITER_CHECK_LIST_r02 1231
+#define _ITER_CHECK_LIST_r12 1232
+#define _ITER_CHECK_LIST_r22 1233
+#define _ITER_CHECK_LIST_r33 1234
+#define _ITER_CHECK_RANGE_r02 1235
+#define _ITER_CHECK_RANGE_r12 1236
+#define _ITER_CHECK_RANGE_r22 1237
+#define _ITER_CHECK_RANGE_r33 1238
+#define _ITER_CHECK_TUPLE_r02 1239
+#define _ITER_CHECK_TUPLE_r12 1240
+#define _ITER_CHECK_TUPLE_r22 1241
+#define _ITER_CHECK_TUPLE_r33 1242
+#define _ITER_JUMP_LIST_r02 1243
+#define _ITER_JUMP_LIST_r12 1244
+#define _ITER_JUMP_LIST_r22 1245
+#define _ITER_JUMP_LIST_r33 1246
+#define _ITER_JUMP_RANGE_r02 1247
+#define _ITER_JUMP_RANGE_r12 1248
+#define _ITER_JUMP_RANGE_r22 1249
+#define _ITER_JUMP_RANGE_r33 1250
+#define _ITER_JUMP_TUPLE_r02 1251
+#define _ITER_JUMP_TUPLE_r12 1252
+#define _ITER_JUMP_TUPLE_r22 1253
+#define _ITER_JUMP_TUPLE_r33 1254
+#define _ITER_NEXT_LIST_r23 1255
+#define _ITER_NEXT_LIST_TIER_TWO_r23 1256
+#define _ITER_NEXT_RANGE_r03 1257
+#define _ITER_NEXT_RANGE_r13 1258
+#define _ITER_NEXT_RANGE_r23 1259
+#define _ITER_NEXT_TUPLE_r03 1260
+#define _ITER_NEXT_TUPLE_r13 1261
+#define _ITER_NEXT_TUPLE_r23 1262
+#define _JUMP_BACKWARD_NO_INTERRUPT_r00 1263
+#define _JUMP_BACKWARD_NO_INTERRUPT_r11 1264
+#define _JUMP_BACKWARD_NO_INTERRUPT_r22 1265
+#define _JUMP_BACKWARD_NO_INTERRUPT_r33 1266
+#define _JUMP_TO_TOP_r00 1267
+#define _LIST_APPEND_r10 1268
+#define _LIST_EXTEND_r11 1269
+#define _LOAD_ATTR_r10 1270
+#define _LOAD_ATTR_CLASS_r11 1271
+#define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN_FRAME_r11 1272
+#define _LOAD_ATTR_INSTANCE_VALUE_r02 1273
+#define _LOAD_ATTR_INSTANCE_VALUE_r12 1274
+#define _LOAD_ATTR_INSTANCE_VALUE_r23 1275
+#define _LOAD_ATTR_METHOD_LAZY_DICT_r02 1276
+#define _LOAD_ATTR_METHOD_LAZY_DICT_r12 1277
+#define _LOAD_ATTR_METHOD_LAZY_DICT_r23 1278
+#define _LOAD_ATTR_METHOD_NO_DICT_r02 1279
+#define _LOAD_ATTR_METHOD_NO_DICT_r12 1280
+#define _LOAD_ATTR_METHOD_NO_DICT_r23 1281
+#define _LOAD_ATTR_METHOD_WITH_VALUES_r02 1282
+#define _LOAD_ATTR_METHOD_WITH_VALUES_r12 1283
+#define _LOAD_ATTR_METHOD_WITH_VALUES_r23 1284
+#define _LOAD_ATTR_MODULE_r12 1285
+#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT_r11 1286
+#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES_r11 1287
+#define _LOAD_ATTR_PROPERTY_FRAME_r01 1288
+#define _LOAD_ATTR_PROPERTY_FRAME_r11 1289
+#define _LOAD_ATTR_PROPERTY_FRAME_r22 1290
+#define _LOAD_ATTR_PROPERTY_FRAME_r33 1291
+#define _LOAD_ATTR_SLOT_r02 1292
+#define _LOAD_ATTR_SLOT_r12 1293
+#define _LOAD_ATTR_SLOT_r23 1294
+#define _LOAD_ATTR_WITH_HINT_r12 1295
+#define _LOAD_BUILD_CLASS_r01 1296
+#define _LOAD_BYTECODE_r00 1297
+#define _LOAD_COMMON_CONSTANT_r01 1298
+#define _LOAD_COMMON_CONSTANT_r12 1299
+#define _LOAD_COMMON_CONSTANT_r23 1300
+#define _LOAD_CONST_r01 1301
+#define _LOAD_CONST_r12 1302
+#define _LOAD_CONST_r23 1303
+#define _LOAD_CONST_INLINE_r01 1304
+#define _LOAD_CONST_INLINE_r12 1305
+#define _LOAD_CONST_INLINE_r23 1306
+#define _LOAD_CONST_INLINE_BORROW_r01 1307
+#define _LOAD_CONST_INLINE_BORROW_r12 1308
+#define _LOAD_CONST_INLINE_BORROW_r23 1309
+#define _LOAD_DEREF_r01 1310
+#define _LOAD_FAST_r01 1311
+#define _LOAD_FAST_r12 1312
+#define _LOAD_FAST_r23 1313
+#define _LOAD_FAST_0_r01 1314
+#define _LOAD_FAST_0_r12 1315
+#define _LOAD_FAST_0_r23 1316
+#define _LOAD_FAST_1_r01 1317
+#define _LOAD_FAST_1_r12 1318
+#define _LOAD_FAST_1_r23 1319
+#define _LOAD_FAST_2_r01 1320
+#define _LOAD_FAST_2_r12 1321
+#define _LOAD_FAST_2_r23 1322
+#define _LOAD_FAST_3_r01 1323
+#define _LOAD_FAST_3_r12 1324
+#define _LOAD_FAST_3_r23 1325
+#define _LOAD_FAST_4_r01 1326
+#define _LOAD_FAST_4_r12 1327
+#define _LOAD_FAST_4_r23 1328
+#define _LOAD_FAST_5_r01 1329
+#define _LOAD_FAST_5_r12 1330
+#define _LOAD_FAST_5_r23 1331
+#define _LOAD_FAST_6_r01 1332
+#define _LOAD_FAST_6_r12 1333
+#define _LOAD_FAST_6_r23 1334
+#define _LOAD_FAST_7_r01 1335
+#define _LOAD_FAST_7_r12 1336
+#define _LOAD_FAST_7_r23 1337
+#define _LOAD_FAST_AND_CLEAR_r01 1338
+#define _LOAD_FAST_AND_CLEAR_r12 1339
+#define _LOAD_FAST_AND_CLEAR_r23 1340
+#define _LOAD_FAST_BORROW_r01 1341
+#define _LOAD_FAST_BORROW_r12 1342
+#define _LOAD_FAST_BORROW_r23 1343
+#define _LOAD_FAST_BORROW_0_r01 1344
+#define _LOAD_FAST_BORROW_0_r12 1345
+#define _LOAD_FAST_BORROW_0_r23 1346
+#define _LOAD_FAST_BORROW_1_r01 1347
+#define _LOAD_FAST_BORROW_1_r12 1348
+#define _LOAD_FAST_BORROW_1_r23 1349
+#define _LOAD_FAST_BORROW_2_r01 1350
+#define _LOAD_FAST_BORROW_2_r12 1351
+#define _LOAD_FAST_BORROW_2_r23 1352
+#define _LOAD_FAST_BORROW_3_r01 1353
+#define _LOAD_FAST_BORROW_3_r12 1354
+#define _LOAD_FAST_BORROW_3_r23 1355
+#define _LOAD_FAST_BORROW_4_r01 1356
+#define _LOAD_FAST_BORROW_4_r12 1357
+#define _LOAD_FAST_BORROW_4_r23 1358
+#define _LOAD_FAST_BORROW_5_r01 1359
+#define _LOAD_FAST_BORROW_5_r12 1360
+#define _LOAD_FAST_BORROW_5_r23 1361
+#define _LOAD_FAST_BORROW_6_r01 1362
+#define _LOAD_FAST_BORROW_6_r12 1363
+#define _LOAD_FAST_BORROW_6_r23 1364
+#define _LOAD_FAST_BORROW_7_r01 1365
+#define _LOAD_FAST_BORROW_7_r12 1366
+#define _LOAD_FAST_BORROW_7_r23 1367
+#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r02 1368
+#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r13 1369
+#define _LOAD_FAST_CHECK_r01 1370
+#define _LOAD_FAST_CHECK_r12 1371
+#define _LOAD_FAST_CHECK_r23 1372
+#define _LOAD_FAST_LOAD_FAST_r02 1373
+#define _LOAD_FAST_LOAD_FAST_r13 1374
+#define _LOAD_FROM_DICT_OR_DEREF_r11 1375
+#define _LOAD_FROM_DICT_OR_GLOBALS_r11 1376
+#define _LOAD_GLOBAL_r00 1377
+#define _LOAD_GLOBAL_BUILTINS_r01 1378
+#define _LOAD_GLOBAL_MODULE_r01 1379
+#define _LOAD_LOCALS_r01 1380
+#define _LOAD_LOCALS_r12 1381
+#define _LOAD_LOCALS_r23 1382
+#define _LOAD_NAME_r01 1383
+#define _LOAD_SMALL_INT_r01 1384
+#define _LOAD_SMALL_INT_r12 1385
+#define _LOAD_SMALL_INT_r23 1386
+#define _LOAD_SMALL_INT_0_r01 1387
+#define _LOAD_SMALL_INT_0_r12 1388
+#define _LOAD_SMALL_INT_0_r23 1389
+#define _LOAD_SMALL_INT_1_r01 1390
+#define _LOAD_SMALL_INT_1_r12 1391
+#define _LOAD_SMALL_INT_1_r23 1392
+#define _LOAD_SMALL_INT_2_r01 1393
+#define _LOAD_SMALL_INT_2_r12 1394
+#define _LOAD_SMALL_INT_2_r23 1395
+#define _LOAD_SMALL_INT_3_r01 1396
+#define _LOAD_SMALL_INT_3_r12 1397
+#define _LOAD_SMALL_INT_3_r23 1398
+#define _LOAD_SPECIAL_r00 1399
+#define _LOAD_SUPER_ATTR_ATTR_r31 1400
+#define _LOAD_SUPER_ATTR_METHOD_r32 1401
+#define _LOCK_OBJECT_r01 1402
+#define _LOCK_OBJECT_r11 1403
+#define _LOCK_OBJECT_r22 1404
+#define _LOCK_OBJECT_r33 1405
+#define _MAKE_CALLARGS_A_TUPLE_r33 1406
+#define _MAKE_CELL_r00 1407
+#define _MAKE_FUNCTION_r12 1408
+#define _MAKE_HEAP_SAFE_r01 1409
+#define _MAKE_HEAP_SAFE_r11 1410
+#define _MAKE_HEAP_SAFE_r22 1411
+#define _MAKE_HEAP_SAFE_r33 1412
+#define _MAKE_WARM_r00 1413
+#define _MAKE_WARM_r11 1414
+#define _MAKE_WARM_r22 1415
+#define _MAKE_WARM_r33 1416
+#define _MAP_ADD_r20 1417
+#define _MATCH_CLASS_r33 1418
+#define _MATCH_KEYS_r23 1419
+#define _MATCH_MAPPING_r02 1420
+#define _MATCH_MAPPING_r12 1421
+#define _MATCH_MAPPING_r23 1422
+#define _MATCH_SEQUENCE_r02 1423
+#define _MATCH_SEQUENCE_r12 1424
+#define _MATCH_SEQUENCE_r23 1425
+#define _MAYBE_EXPAND_METHOD_r00 1426
+#define _MAYBE_EXPAND_METHOD_KW_r11 1427
+#define _MONITOR_CALL_r00 1428
+#define _MONITOR_CALL_KW_r11 1429
+#define _MONITOR_JUMP_BACKWARD_r00 1430
+#define _MONITOR_JUMP_BACKWARD_r11 1431
+#define _MONITOR_JUMP_BACKWARD_r22 1432
+#define _MONITOR_JUMP_BACKWARD_r33 1433
+#define _MONITOR_RESUME_r00 1434
+#define _NOP_r00 1435
+#define _NOP_r11 1436
+#define _NOP_r22 1437
+#define _NOP_r33 1438
+#define _POP_EXCEPT_r10 1439
+#define _POP_ITER_r20 1440
+#define _POP_JUMP_IF_FALSE_r00 1441
+#define _POP_JUMP_IF_FALSE_r10 1442
+#define _POP_JUMP_IF_FALSE_r21 1443
+#define _POP_JUMP_IF_FALSE_r32 1444
+#define _POP_JUMP_IF_TRUE_r00 1445
+#define _POP_JUMP_IF_TRUE_r10 1446
+#define _POP_JUMP_IF_TRUE_r21 1447
+#define _POP_JUMP_IF_TRUE_r32 1448
+#define _POP_TOP_r10 1449
+#define _POP_TOP_FLOAT_r00 1450
+#define _POP_TOP_FLOAT_r10 1451
+#define _POP_TOP_FLOAT_r21 1452
+#define _POP_TOP_FLOAT_r32 1453
+#define _POP_TOP_INT_r00 1454
+#define _POP_TOP_INT_r10 1455
+#define _POP_TOP_INT_r21 1456
+#define _POP_TOP_INT_r32 1457
+#define _POP_TOP_NOP_r00 1458
+#define _POP_TOP_NOP_r10 1459
+#define _POP_TOP_NOP_r21 1460
+#define _POP_TOP_NOP_r32 1461
+#define _POP_TOP_OPARG_r00 1462
+#define _POP_TOP_UNICODE_r00 1463
+#define _POP_TOP_UNICODE_r10 1464
+#define _POP_TOP_UNICODE_r21 1465
+#define _POP_TOP_UNICODE_r32 1466
+#define _PUSH_EXC_INFO_r02 1467
+#define _PUSH_EXC_INFO_r12 1468
+#define _PUSH_EXC_INFO_r23 1469
+#define _PUSH_FRAME_r10 1470
+#define _PUSH_NULL_r01 1471
+#define _PUSH_NULL_r12 1472
+#define _PUSH_NULL_r23 1473
+#define _PUSH_NULL_CONDITIONAL_r00 1474
+#define _PUSH_TAGGED_ZERO_r01 1475
+#define _PUSH_TAGGED_ZERO_r12 1476
+#define _PUSH_TAGGED_ZERO_r23 1477
+#define _PY_FRAME_EX_r31 1478
+#define _PY_FRAME_GENERAL_r01 1479
+#define _PY_FRAME_KW_r11 1480
+#define _REPLACE_WITH_TRUE_r02 1481
+#define _REPLACE_WITH_TRUE_r12 1482
+#define _REPLACE_WITH_TRUE_r23 1483
+#define _RESUME_CHECK_r00 1484
+#define _RESUME_CHECK_r11 1485
+#define _RESUME_CHECK_r22 1486
+#define _RESUME_CHECK_r33 1487
+#define _RETURN_GENERATOR_r01 1488
+#define _RETURN_VALUE_r11 1489
+#define _SAVE_RETURN_OFFSET_r00 1490
+#define _SAVE_RETURN_OFFSET_r11 1491
+#define _SAVE_RETURN_OFFSET_r22 1492
+#define _SAVE_RETURN_OFFSET_r33 1493
+#define _SEND_r33 1494
+#define _SEND_GEN_FRAME_r33 1495
+#define _SETUP_ANNOTATIONS_r00 1496
+#define _SET_ADD_r10 1497
+#define _SET_FUNCTION_ATTRIBUTE_r01 1498
+#define _SET_FUNCTION_ATTRIBUTE_r11 1499
+#define _SET_FUNCTION_ATTRIBUTE_r21 1500
+#define _SET_FUNCTION_ATTRIBUTE_r32 1501
+#define _SET_IP_r00 1502
+#define _SET_IP_r11 1503
+#define _SET_IP_r22 1504
+#define _SET_IP_r33 1505
+#define _SET_UPDATE_r11 1506
+#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r03 1507
+#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r13 1508
+#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r23 1509
+#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r33 1510
+#define _SPILL_OR_RELOAD_r01 1511
+#define _SPILL_OR_RELOAD_r02 1512
+#define _SPILL_OR_RELOAD_r03 1513
+#define _SPILL_OR_RELOAD_r10 1514
+#define _SPILL_OR_RELOAD_r12 1515
+#define _SPILL_OR_RELOAD_r13 1516
+#define _SPILL_OR_RELOAD_r20 1517
+#define _SPILL_OR_RELOAD_r21 1518
+#define _SPILL_OR_RELOAD_r23 1519
+#define _SPILL_OR_RELOAD_r30 1520
+#define _SPILL_OR_RELOAD_r31 1521
+#define _SPILL_OR_RELOAD_r32 1522
+#define _START_EXECUTOR_r00 1523
+#define _STORE_ATTR_r20 1524
+#define _STORE_ATTR_INSTANCE_VALUE_r21 1525
+#define _STORE_ATTR_SLOT_r21 1526
+#define _STORE_ATTR_WITH_HINT_r21 1527
+#define _STORE_DEREF_r10 1528
+#define _STORE_FAST_LOAD_FAST_r11 1529
+#define _STORE_FAST_STORE_FAST_r20 1530
+#define _STORE_GLOBAL_r10 1531
+#define _STORE_NAME_r10 1532
+#define _STORE_SLICE_r30 1533
+#define _STORE_SUBSCR_r30 1534
+#define _STORE_SUBSCR_DICT_r31 1535
+#define _STORE_SUBSCR_DICT_KNOWN_HASH_r31 1536
+#define _STORE_SUBSCR_LIST_INT_r32 1537
+#define _SWAP_r11 1538
+#define _SWAP_2_r02 1539
+#define _SWAP_2_r12 1540
+#define _SWAP_2_r22 1541
+#define _SWAP_2_r33 1542
+#define _SWAP_3_r03 1543
+#define _SWAP_3_r13 1544
+#define _SWAP_3_r23 1545
+#define _SWAP_3_r33 1546
+#define _SWAP_FAST_r01 1547
+#define _SWAP_FAST_r11 1548
+#define _SWAP_FAST_r22 1549
+#define _SWAP_FAST_r33 1550
+#define _SWAP_FAST_0_r01 1551
+#define _SWAP_FAST_0_r11 1552
+#define _SWAP_FAST_0_r22 1553
+#define _SWAP_FAST_0_r33 1554
+#define _SWAP_FAST_1_r01 1555
+#define _SWAP_FAST_1_r11 1556
+#define _SWAP_FAST_1_r22 1557
+#define _SWAP_FAST_1_r33 1558
+#define _SWAP_FAST_2_r01 1559
+#define _SWAP_FAST_2_r11 1560
+#define _SWAP_FAST_2_r22 1561
+#define _SWAP_FAST_2_r33 1562
+#define _SWAP_FAST_3_r01 1563
+#define _SWAP_FAST_3_r11 1564
+#define _SWAP_FAST_3_r22 1565
+#define _SWAP_FAST_3_r33 1566
+#define _SWAP_FAST_4_r01 1567
+#define _SWAP_FAST_4_r11 1568
+#define _SWAP_FAST_4_r22 1569
+#define _SWAP_FAST_4_r33 1570
+#define _SWAP_FAST_5_r01 1571
+#define _SWAP_FAST_5_r11 1572
+#define _SWAP_FAST_5_r22 1573
+#define _SWAP_FAST_5_r33 1574
+#define _SWAP_FAST_6_r01 1575
+#define _SWAP_FAST_6_r11 1576
+#define _SWAP_FAST_6_r22 1577
+#define _SWAP_FAST_6_r33 1578
+#define _SWAP_FAST_7_r01 1579
+#define _SWAP_FAST_7_r11 1580
+#define _SWAP_FAST_7_r22 1581
+#define _SWAP_FAST_7_r33 1582
+#define _TIER2_RESUME_CHECK_r00 1583
+#define _TIER2_RESUME_CHECK_r11 1584
+#define _TIER2_RESUME_CHECK_r22 1585
+#define _TIER2_RESUME_CHECK_r33 1586
+#define _TO_BOOL_r11 1587
+#define _TO_BOOL_BOOL_r01 1588
+#define _TO_BOOL_BOOL_r11 1589
+#define _TO_BOOL_BOOL_r22 1590
+#define _TO_BOOL_BOOL_r33 1591
+#define _TO_BOOL_INT_r02 1592
+#define _TO_BOOL_INT_r12 1593
+#define _TO_BOOL_INT_r23 1594
+#define _TO_BOOL_LIST_r02 1595
+#define _TO_BOOL_LIST_r12 1596
+#define _TO_BOOL_LIST_r23 1597
+#define _TO_BOOL_NONE_r01 1598
+#define _TO_BOOL_NONE_r11 1599
+#define _TO_BOOL_NONE_r22 1600
+#define _TO_BOOL_NONE_r33 1601
+#define _TO_BOOL_STR_r02 1602
+#define _TO_BOOL_STR_r12 1603
+#define _TO_BOOL_STR_r23 1604
+#define _TRACE_RECORD_r00 1605
+#define _UNARY_INVERT_r12 1606
+#define _UNARY_NEGATIVE_r12 1607
+#define _UNARY_NEGATIVE_FLOAT_INPLACE_r02 1608
+#define _UNARY_NEGATIVE_FLOAT_INPLACE_r12 1609
+#define _UNARY_NEGATIVE_FLOAT_INPLACE_r23 1610
+#define _UNARY_NOT_r01 1611
+#define _UNARY_NOT_r11 1612
+#define _UNARY_NOT_r22 1613
+#define _UNARY_NOT_r33 1614
+#define _UNPACK_EX_r10 1615
+#define _UNPACK_SEQUENCE_r10 1616
+#define _UNPACK_SEQUENCE_LIST_r10 1617
+#define _UNPACK_SEQUENCE_TUPLE_r10 1618
+#define _UNPACK_SEQUENCE_TWO_TUPLE_r12 1619
+#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r03 1620
+#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r13 1621
+#define _UNPACK_SEQUENCE_UNIQUE_TUPLE_r10 1622
+#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r02 1623
+#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r12 1624
+#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r23 1625
+#define _WITH_EXCEPT_START_r33 1626
+#define _YIELD_VALUE_r11 1627
+#define MAX_UOP_REGS_ID 1627
#ifdef __cplusplus
}
[_LOAD_ATTR] = HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_GUARD_TYPE_VERSION] = HAS_EXIT_FLAG,
[_GUARD_TYPE_VERSION_LOCKED] = HAS_EXIT_FLAG,
+ [_GUARD_TYPE] = HAS_EXIT_FLAG,
[_CHECK_MANAGED_OBJECT_HAS_VALUES] = HAS_EXIT_FLAG,
[_LOAD_ATTR_INSTANCE_VALUE] = HAS_DEOPT_FLAG,
[_LOAD_ATTR_MODULE] = HAS_EXIT_FLAG,
[_MATCH_SEQUENCE] = 0,
[_MATCH_KEYS] = HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_GET_ITER] = HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
+ [_GUARD_ITERATOR] = HAS_EXIT_FLAG,
+ [_GUARD_ITER_VIRTUAL] = HAS_EXIT_FLAG,
+ [_PUSH_TAGGED_ZERO] = 0,
+ [_GET_ITER_TRAD] = HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
[_FOR_ITER_TIER_TWO] = HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG,
+ [_GUARD_NOS_ITER_VIRTUAL] = HAS_EXIT_FLAG,
+ [_FOR_ITER_VIRTUAL_TIER_TWO] = HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG,
[_ITER_CHECK_LIST] = HAS_EXIT_FLAG,
[_GUARD_NOT_EXHAUSTED_LIST] = HAS_EXIT_FLAG,
[_ITER_NEXT_LIST_TIER_TWO] = HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG,
{ 3, 3, _GUARD_TYPE_VERSION_LOCKED_r33 },
},
},
+ [_GUARD_TYPE] = {
+ .best = { 0, 1, 2, 3 },
+ .entries = {
+ { 1, 0, _GUARD_TYPE_r01 },
+ { 1, 1, _GUARD_TYPE_r11 },
+ { 2, 2, _GUARD_TYPE_r22 },
+ { 3, 3, _GUARD_TYPE_r33 },
+ },
+ },
[_CHECK_MANAGED_OBJECT_HAS_VALUES] = {
.best = { 0, 1, 2, 3 },
.entries = {
{ -1, -1, -1 },
},
},
+ [_GUARD_ITERATOR] = {
+ .best = { 0, 1, 2, 3 },
+ .entries = {
+ { 1, 0, _GUARD_ITERATOR_r01 },
+ { 1, 1, _GUARD_ITERATOR_r11 },
+ { 2, 2, _GUARD_ITERATOR_r22 },
+ { 3, 3, _GUARD_ITERATOR_r33 },
+ },
+ },
+ [_GUARD_ITER_VIRTUAL] = {
+ .best = { 0, 1, 2, 3 },
+ .entries = {
+ { 1, 0, _GUARD_ITER_VIRTUAL_r01 },
+ { 1, 1, _GUARD_ITER_VIRTUAL_r11 },
+ { 2, 2, _GUARD_ITER_VIRTUAL_r22 },
+ { 3, 3, _GUARD_ITER_VIRTUAL_r33 },
+ },
+ },
+ [_PUSH_TAGGED_ZERO] = {
+ .best = { 0, 1, 2, 2 },
+ .entries = {
+ { 1, 0, _PUSH_TAGGED_ZERO_r01 },
+ { 2, 1, _PUSH_TAGGED_ZERO_r12 },
+ { 3, 2, _PUSH_TAGGED_ZERO_r23 },
+ { -1, -1, -1 },
+ },
+ },
+ [_GET_ITER_TRAD] = {
+ .best = { 1, 1, 1, 1 },
+ .entries = {
+ { -1, -1, -1 },
+ { 2, 1, _GET_ITER_TRAD_r12 },
+ { -1, -1, -1 },
+ { -1, -1, -1 },
+ },
+ },
[_FOR_ITER_TIER_TWO] = {
.best = { 2, 2, 2, 2 },
.entries = {
{ -1, -1, -1 },
},
},
+ [_GUARD_NOS_ITER_VIRTUAL] = {
+ .best = { 0, 1, 2, 3 },
+ .entries = {
+ { 2, 0, _GUARD_NOS_ITER_VIRTUAL_r02 },
+ { 2, 1, _GUARD_NOS_ITER_VIRTUAL_r12 },
+ { 2, 2, _GUARD_NOS_ITER_VIRTUAL_r22 },
+ { 3, 3, _GUARD_NOS_ITER_VIRTUAL_r33 },
+ },
+ },
+ [_FOR_ITER_VIRTUAL_TIER_TWO] = {
+ .best = { 2, 2, 2, 2 },
+ .entries = {
+ { -1, -1, -1 },
+ { -1, -1, -1 },
+ { 3, 2, _FOR_ITER_VIRTUAL_TIER_TWO_r23 },
+ { -1, -1, -1 },
+ },
+ },
[_ITER_CHECK_LIST] = {
.best = { 0, 1, 2, 3 },
.entries = {
[_GUARD_TYPE_VERSION_LOCKED_r11] = _GUARD_TYPE_VERSION_LOCKED,
[_GUARD_TYPE_VERSION_LOCKED_r22] = _GUARD_TYPE_VERSION_LOCKED,
[_GUARD_TYPE_VERSION_LOCKED_r33] = _GUARD_TYPE_VERSION_LOCKED,
+ [_GUARD_TYPE_r01] = _GUARD_TYPE,
+ [_GUARD_TYPE_r11] = _GUARD_TYPE,
+ [_GUARD_TYPE_r22] = _GUARD_TYPE,
+ [_GUARD_TYPE_r33] = _GUARD_TYPE,
[_CHECK_MANAGED_OBJECT_HAS_VALUES_r01] = _CHECK_MANAGED_OBJECT_HAS_VALUES,
[_CHECK_MANAGED_OBJECT_HAS_VALUES_r11] = _CHECK_MANAGED_OBJECT_HAS_VALUES,
[_CHECK_MANAGED_OBJECT_HAS_VALUES_r22] = _CHECK_MANAGED_OBJECT_HAS_VALUES,
[_MATCH_SEQUENCE_r23] = _MATCH_SEQUENCE,
[_MATCH_KEYS_r23] = _MATCH_KEYS,
[_GET_ITER_r12] = _GET_ITER,
+ [_GUARD_ITERATOR_r01] = _GUARD_ITERATOR,
+ [_GUARD_ITERATOR_r11] = _GUARD_ITERATOR,
+ [_GUARD_ITERATOR_r22] = _GUARD_ITERATOR,
+ [_GUARD_ITERATOR_r33] = _GUARD_ITERATOR,
+ [_GUARD_ITER_VIRTUAL_r01] = _GUARD_ITER_VIRTUAL,
+ [_GUARD_ITER_VIRTUAL_r11] = _GUARD_ITER_VIRTUAL,
+ [_GUARD_ITER_VIRTUAL_r22] = _GUARD_ITER_VIRTUAL,
+ [_GUARD_ITER_VIRTUAL_r33] = _GUARD_ITER_VIRTUAL,
+ [_PUSH_TAGGED_ZERO_r01] = _PUSH_TAGGED_ZERO,
+ [_PUSH_TAGGED_ZERO_r12] = _PUSH_TAGGED_ZERO,
+ [_PUSH_TAGGED_ZERO_r23] = _PUSH_TAGGED_ZERO,
+ [_GET_ITER_TRAD_r12] = _GET_ITER_TRAD,
[_FOR_ITER_TIER_TWO_r23] = _FOR_ITER_TIER_TWO,
+ [_GUARD_NOS_ITER_VIRTUAL_r02] = _GUARD_NOS_ITER_VIRTUAL,
+ [_GUARD_NOS_ITER_VIRTUAL_r12] = _GUARD_NOS_ITER_VIRTUAL,
+ [_GUARD_NOS_ITER_VIRTUAL_r22] = _GUARD_NOS_ITER_VIRTUAL,
+ [_GUARD_NOS_ITER_VIRTUAL_r33] = _GUARD_NOS_ITER_VIRTUAL,
+ [_FOR_ITER_VIRTUAL_TIER_TWO_r23] = _FOR_ITER_VIRTUAL_TIER_TWO,
[_ITER_CHECK_LIST_r02] = _ITER_CHECK_LIST,
[_ITER_CHECK_LIST_r12] = _ITER_CHECK_LIST,
[_ITER_CHECK_LIST_r22] = _ITER_CHECK_LIST,
[_FOR_ITER_GEN_FRAME_r23] = "_FOR_ITER_GEN_FRAME_r23",
[_FOR_ITER_TIER_TWO] = "_FOR_ITER_TIER_TWO",
[_FOR_ITER_TIER_TWO_r23] = "_FOR_ITER_TIER_TWO_r23",
+ [_FOR_ITER_VIRTUAL_TIER_TWO] = "_FOR_ITER_VIRTUAL_TIER_TWO",
+ [_FOR_ITER_VIRTUAL_TIER_TWO_r23] = "_FOR_ITER_VIRTUAL_TIER_TWO_r23",
[_GET_AITER] = "_GET_AITER",
[_GET_AITER_r11] = "_GET_AITER_r11",
[_GET_ANEXT] = "_GET_ANEXT",
[_GET_AWAITABLE_r11] = "_GET_AWAITABLE_r11",
[_GET_ITER] = "_GET_ITER",
[_GET_ITER_r12] = "_GET_ITER_r12",
+ [_GET_ITER_TRAD] = "_GET_ITER_TRAD",
+ [_GET_ITER_TRAD_r12] = "_GET_ITER_TRAD_r12",
[_GET_LEN] = "_GET_LEN",
[_GET_LEN_r12] = "_GET_LEN_r12",
[_GUARD_BINARY_OP_EXTEND] = "_GUARD_BINARY_OP_EXTEND",
[_GUARD_IS_TRUE_POP_r10] = "_GUARD_IS_TRUE_POP_r10",
[_GUARD_IS_TRUE_POP_r21] = "_GUARD_IS_TRUE_POP_r21",
[_GUARD_IS_TRUE_POP_r32] = "_GUARD_IS_TRUE_POP_r32",
+ [_GUARD_ITERATOR] = "_GUARD_ITERATOR",
+ [_GUARD_ITERATOR_r01] = "_GUARD_ITERATOR_r01",
+ [_GUARD_ITERATOR_r11] = "_GUARD_ITERATOR_r11",
+ [_GUARD_ITERATOR_r22] = "_GUARD_ITERATOR_r22",
+ [_GUARD_ITERATOR_r33] = "_GUARD_ITERATOR_r33",
+ [_GUARD_ITER_VIRTUAL] = "_GUARD_ITER_VIRTUAL",
+ [_GUARD_ITER_VIRTUAL_r01] = "_GUARD_ITER_VIRTUAL_r01",
+ [_GUARD_ITER_VIRTUAL_r11] = "_GUARD_ITER_VIRTUAL_r11",
+ [_GUARD_ITER_VIRTUAL_r22] = "_GUARD_ITER_VIRTUAL_r22",
+ [_GUARD_ITER_VIRTUAL_r33] = "_GUARD_ITER_VIRTUAL_r33",
[_GUARD_KEYS_VERSION] = "_GUARD_KEYS_VERSION",
[_GUARD_KEYS_VERSION_r01] = "_GUARD_KEYS_VERSION_r01",
[_GUARD_KEYS_VERSION_r11] = "_GUARD_KEYS_VERSION_r11",
[_GUARD_NOS_INT_r12] = "_GUARD_NOS_INT_r12",
[_GUARD_NOS_INT_r22] = "_GUARD_NOS_INT_r22",
[_GUARD_NOS_INT_r33] = "_GUARD_NOS_INT_r33",
+ [_GUARD_NOS_ITER_VIRTUAL] = "_GUARD_NOS_ITER_VIRTUAL",
+ [_GUARD_NOS_ITER_VIRTUAL_r02] = "_GUARD_NOS_ITER_VIRTUAL_r02",
+ [_GUARD_NOS_ITER_VIRTUAL_r12] = "_GUARD_NOS_ITER_VIRTUAL_r12",
+ [_GUARD_NOS_ITER_VIRTUAL_r22] = "_GUARD_NOS_ITER_VIRTUAL_r22",
+ [_GUARD_NOS_ITER_VIRTUAL_r33] = "_GUARD_NOS_ITER_VIRTUAL_r33",
[_GUARD_NOS_LIST] = "_GUARD_NOS_LIST",
[_GUARD_NOS_LIST_r02] = "_GUARD_NOS_LIST_r02",
[_GUARD_NOS_LIST_r12] = "_GUARD_NOS_LIST_r12",
[_GUARD_TOS_UNICODE_r11] = "_GUARD_TOS_UNICODE_r11",
[_GUARD_TOS_UNICODE_r22] = "_GUARD_TOS_UNICODE_r22",
[_GUARD_TOS_UNICODE_r33] = "_GUARD_TOS_UNICODE_r33",
+ [_GUARD_TYPE] = "_GUARD_TYPE",
+ [_GUARD_TYPE_r01] = "_GUARD_TYPE_r01",
+ [_GUARD_TYPE_r11] = "_GUARD_TYPE_r11",
+ [_GUARD_TYPE_r22] = "_GUARD_TYPE_r22",
+ [_GUARD_TYPE_r33] = "_GUARD_TYPE_r33",
[_GUARD_TYPE_VERSION] = "_GUARD_TYPE_VERSION",
[_GUARD_TYPE_VERSION_r01] = "_GUARD_TYPE_VERSION_r01",
[_GUARD_TYPE_VERSION_r11] = "_GUARD_TYPE_VERSION_r11",
[_PUSH_NULL_r23] = "_PUSH_NULL_r23",
[_PUSH_NULL_CONDITIONAL] = "_PUSH_NULL_CONDITIONAL",
[_PUSH_NULL_CONDITIONAL_r00] = "_PUSH_NULL_CONDITIONAL_r00",
+ [_PUSH_TAGGED_ZERO] = "_PUSH_TAGGED_ZERO",
+ [_PUSH_TAGGED_ZERO_r01] = "_PUSH_TAGGED_ZERO_r01",
+ [_PUSH_TAGGED_ZERO_r12] = "_PUSH_TAGGED_ZERO_r12",
+ [_PUSH_TAGGED_ZERO_r23] = "_PUSH_TAGGED_ZERO_r23",
[_PY_FRAME_EX] = "_PY_FRAME_EX",
[_PY_FRAME_EX_r31] = "_PY_FRAME_EX_r31",
[_PY_FRAME_GENERAL] = "_PY_FRAME_GENERAL",
return 0;
case _GUARD_TYPE_VERSION_LOCKED:
return 0;
+ case _GUARD_TYPE:
+ return 0;
case _CHECK_MANAGED_OBJECT_HAS_VALUES:
return 0;
case _LOAD_ATTR_INSTANCE_VALUE:
return 0;
case _GET_ITER:
return 1;
+ case _GUARD_ITERATOR:
+ return 0;
+ case _GUARD_ITER_VIRTUAL:
+ return 0;
+ case _PUSH_TAGGED_ZERO:
+ return 0;
+ case _GET_ITER_TRAD:
+ return 1;
case _FOR_ITER_TIER_TWO:
return 0;
+ case _GUARD_NOS_ITER_VIRTUAL:
+ return 0;
+ case _FOR_ITER_VIRTUAL_TIER_TWO:
+ return 0;
case _ITER_CHECK_LIST:
return 0;
case _GUARD_NOT_EXHAUSTED_LIST:
typedef PyObject *(*richcmpfunc) (PyObject *, PyObject *, int);
typedef PyObject *(*getiterfunc) (PyObject *);
typedef PyObject *(*iternextfunc) (PyObject *);
+typedef struct {
+ PyObject *object;
+ Py_ssize_t index;
+} _PyObjectIndexPair;
+typedef _PyObjectIndexPair (*_Py_iteritemfunc) (PyObject *, Py_ssize_t index);
typedef PyObject *(*descrgetfunc) (PyObject *, PyObject *, PyObject *);
typedef int (*descrsetfunc) (PyObject *, PyObject *, PyObject *);
typedef int (*initproc)(PyObject *, PyObject *, PyObject *);
#define FOR_ITER_LIST 175
#define FOR_ITER_RANGE 176
#define FOR_ITER_TUPLE 177
-#define JUMP_BACKWARD_JIT 178
-#define JUMP_BACKWARD_NO_JIT 179
-#define LOAD_ATTR_CLASS 180
-#define LOAD_ATTR_CLASS_WITH_METACLASS_CHECK 181
-#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN 182
-#define LOAD_ATTR_INSTANCE_VALUE 183
-#define LOAD_ATTR_METHOD_LAZY_DICT 184
-#define LOAD_ATTR_METHOD_NO_DICT 185
-#define LOAD_ATTR_METHOD_WITH_VALUES 186
-#define LOAD_ATTR_MODULE 187
-#define LOAD_ATTR_NONDESCRIPTOR_NO_DICT 188
-#define LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 189
-#define LOAD_ATTR_PROPERTY 190
-#define LOAD_ATTR_SLOT 191
-#define LOAD_ATTR_WITH_HINT 192
-#define LOAD_GLOBAL_BUILTIN 193
-#define LOAD_GLOBAL_MODULE 194
-#define LOAD_SUPER_ATTR_ATTR 195
-#define LOAD_SUPER_ATTR_METHOD 196
-#define RESUME_CHECK 197
-#define RESUME_CHECK_JIT 198
-#define SEND_GEN 199
-#define STORE_ATTR_INSTANCE_VALUE 200
-#define STORE_ATTR_SLOT 201
-#define STORE_ATTR_WITH_HINT 202
-#define STORE_SUBSCR_DICT 203
-#define STORE_SUBSCR_LIST_INT 204
-#define TO_BOOL_ALWAYS_TRUE 205
-#define TO_BOOL_BOOL 206
-#define TO_BOOL_INT 207
-#define TO_BOOL_LIST 208
-#define TO_BOOL_NONE 209
-#define TO_BOOL_STR 210
-#define UNPACK_SEQUENCE_LIST 211
-#define UNPACK_SEQUENCE_TUPLE 212
-#define UNPACK_SEQUENCE_TWO_TUPLE 213
+#define FOR_ITER_VIRTUAL 178
+#define GET_ITER_SELF 179
+#define GET_ITER_VIRTUAL 180
+#define JUMP_BACKWARD_JIT 181
+#define JUMP_BACKWARD_NO_JIT 182
+#define LOAD_ATTR_CLASS 183
+#define LOAD_ATTR_CLASS_WITH_METACLASS_CHECK 184
+#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN 185
+#define LOAD_ATTR_INSTANCE_VALUE 186
+#define LOAD_ATTR_METHOD_LAZY_DICT 187
+#define LOAD_ATTR_METHOD_NO_DICT 188
+#define LOAD_ATTR_METHOD_WITH_VALUES 189
+#define LOAD_ATTR_MODULE 190
+#define LOAD_ATTR_NONDESCRIPTOR_NO_DICT 191
+#define LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 192
+#define LOAD_ATTR_PROPERTY 193
+#define LOAD_ATTR_SLOT 194
+#define LOAD_ATTR_WITH_HINT 195
+#define LOAD_GLOBAL_BUILTIN 196
+#define LOAD_GLOBAL_MODULE 197
+#define LOAD_SUPER_ATTR_ATTR 198
+#define LOAD_SUPER_ATTR_METHOD 199
+#define RESUME_CHECK 200
+#define RESUME_CHECK_JIT 201
+#define SEND_GEN 202
+#define STORE_ATTR_INSTANCE_VALUE 203
+#define STORE_ATTR_SLOT 204
+#define STORE_ATTR_WITH_HINT 205
+#define STORE_SUBSCR_DICT 206
+#define STORE_SUBSCR_LIST_INT 207
+#define TO_BOOL_ALWAYS_TRUE 208
+#define TO_BOOL_BOOL 209
+#define TO_BOOL_INT 210
+#define TO_BOOL_LIST 211
+#define TO_BOOL_NONE 212
+#define TO_BOOL_STR 213
+#define UNPACK_SEQUENCE_LIST 214
+#define UNPACK_SEQUENCE_TUPLE 215
+#define UNPACK_SEQUENCE_TWO_TUPLE 216
#define INSTRUMENTED_END_FOR 233
#define INSTRUMENTED_POP_ITER 234
#define INSTRUMENTED_END_SEND 235
"JUMP_BACKWARD_NO_JIT",
"JUMP_BACKWARD_JIT",
),
+ GET_ITER=(
+ "GET_ITER_SELF",
+ "GET_ITER_VIRTUAL",
+ ),
FOR_ITER=(
"FOR_ITER_LIST",
"FOR_ITER_TUPLE",
"FOR_ITER_RANGE",
"FOR_ITER_GEN",
+ "FOR_ITER_VIRTUAL",
),
CALL=(
"CALL_BOUND_METHOD_EXACT_ARGS",
FOR_ITER_LIST=175,
FOR_ITER_RANGE=176,
FOR_ITER_TUPLE=177,
- JUMP_BACKWARD_JIT=178,
- JUMP_BACKWARD_NO_JIT=179,
- LOAD_ATTR_CLASS=180,
- LOAD_ATTR_CLASS_WITH_METACLASS_CHECK=181,
- LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN=182,
- LOAD_ATTR_INSTANCE_VALUE=183,
- LOAD_ATTR_METHOD_LAZY_DICT=184,
- LOAD_ATTR_METHOD_NO_DICT=185,
- LOAD_ATTR_METHOD_WITH_VALUES=186,
- LOAD_ATTR_MODULE=187,
- LOAD_ATTR_NONDESCRIPTOR_NO_DICT=188,
- LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES=189,
- LOAD_ATTR_PROPERTY=190,
- LOAD_ATTR_SLOT=191,
- LOAD_ATTR_WITH_HINT=192,
- LOAD_GLOBAL_BUILTIN=193,
- LOAD_GLOBAL_MODULE=194,
- LOAD_SUPER_ATTR_ATTR=195,
- LOAD_SUPER_ATTR_METHOD=196,
- RESUME_CHECK=197,
- RESUME_CHECK_JIT=198,
- SEND_GEN=199,
- STORE_ATTR_INSTANCE_VALUE=200,
- STORE_ATTR_SLOT=201,
- STORE_ATTR_WITH_HINT=202,
- STORE_SUBSCR_DICT=203,
- STORE_SUBSCR_LIST_INT=204,
- TO_BOOL_ALWAYS_TRUE=205,
- TO_BOOL_BOOL=206,
- TO_BOOL_INT=207,
- TO_BOOL_LIST=208,
- TO_BOOL_NONE=209,
- TO_BOOL_STR=210,
- UNPACK_SEQUENCE_LIST=211,
- UNPACK_SEQUENCE_TUPLE=212,
- UNPACK_SEQUENCE_TWO_TUPLE=213,
+ FOR_ITER_VIRTUAL=178,
+ GET_ITER_SELF=179,
+ GET_ITER_VIRTUAL=180,
+ JUMP_BACKWARD_JIT=181,
+ JUMP_BACKWARD_NO_JIT=182,
+ LOAD_ATTR_CLASS=183,
+ LOAD_ATTR_CLASS_WITH_METACLASS_CHECK=184,
+ LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN=185,
+ LOAD_ATTR_INSTANCE_VALUE=186,
+ LOAD_ATTR_METHOD_LAZY_DICT=187,
+ LOAD_ATTR_METHOD_NO_DICT=188,
+ LOAD_ATTR_METHOD_WITH_VALUES=189,
+ LOAD_ATTR_MODULE=190,
+ LOAD_ATTR_NONDESCRIPTOR_NO_DICT=191,
+ LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES=192,
+ LOAD_ATTR_PROPERTY=193,
+ LOAD_ATTR_SLOT=194,
+ LOAD_ATTR_WITH_HINT=195,
+ LOAD_GLOBAL_BUILTIN=196,
+ LOAD_GLOBAL_MODULE=197,
+ LOAD_SUPER_ATTR_ATTR=198,
+ LOAD_SUPER_ATTR_METHOD=199,
+ RESUME_CHECK=200,
+ RESUME_CHECK_JIT=201,
+ SEND_GEN=202,
+ STORE_ATTR_INSTANCE_VALUE=203,
+ STORE_ATTR_SLOT=204,
+ STORE_ATTR_WITH_HINT=205,
+ STORE_SUBSCR_DICT=206,
+ STORE_SUBSCR_LIST_INT=207,
+ TO_BOOL_ALWAYS_TRUE=208,
+ TO_BOOL_BOOL=209,
+ TO_BOOL_INT=210,
+ TO_BOOL_LIST=211,
+ TO_BOOL_NONE=212,
+ TO_BOOL_STR=213,
+ UNPACK_SEQUENCE_LIST=214,
+ UNPACK_SEQUENCE_TUPLE=215,
+ UNPACK_SEQUENCE_TWO_TUPLE=216,
)
opmap = frozendict(
FOR_ITER=frozendict(
counter=1,
),
+ GET_ITER=frozendict(
+ counter=1,
+ ),
LOAD_SUPER_ATTR=frozendict(
counter=1,
),
# look for indirect evidence: the += operator
self.assertIn("_BINARY_OP_ADD_INT", uops)
+ def test_get_iter_list(self):
+ l = list(range(10))
+ def testfunc(n):
+ total = 0
+ while n:
+ n -= 1
+ total += n
+ for i in l:
+ break
+ return total
+
+ total = testfunc(TIER2_THRESHOLD)
+ self.assertEqual(total, sum(range(TIER2_THRESHOLD)))
+ ex = get_first_executor(testfunc)
+ self.assertIsNotNone(ex)
+ uops = get_opnames(ex)
+ self.assertIn("_PUSH_TAGGED_ZERO", uops)
+ self.assertNotIn("_GET_ITER", uops)
+ self.assertNotIn("_GET_ITER_TRAD", uops)
+ self.assertNotIn("_GET_ITER_VIRTUAL", uops)
+ self.assertNotIn("_GET_ITER_SELF", uops)
+
+ def test_get_iter_gen(self):
+ def gen():
+ while True:
+ yield 1
+
+ def testfunc(n):
+ total = 0
+ while n:
+ n -= 1
+ total += n
+ for i in gen():
+ break
+ return total
+
+ total = testfunc(TIER2_THRESHOLD)
+ self.assertEqual(total, sum(range(TIER2_THRESHOLD)))
+ ex = get_first_executor(testfunc)
+ self.assertIsNotNone(ex)
+ uops = get_opnames(ex)
+ self.assertIn("_PUSH_NULL", uops)
+ self.assertNotIn("_GET_ITER", uops)
+ self.assertNotIn("_GET_ITER_TRAD", uops)
+ self.assertNotIn("_GET_ITER_VIRTUAL", uops)
+ self.assertNotIn("_GET_ITER_SELF", uops)
+
+ def test_get_iter_trad(self):
+ d = {v:v for v in range(10)}
+ def testfunc(n):
+ total = 0
+ while n:
+ n -= 1
+ total += n
+ for i in d:
+ break
+ return total
+
+ total = testfunc(TIER2_THRESHOLD)
+ self.assertEqual(total, sum(range(TIER2_THRESHOLD)))
+ ex = get_first_executor(testfunc)
+ self.assertIsNotNone(ex)
+ uops = get_opnames(ex)
+ self.assertIn("_GET_ITER_TRAD", uops)
+ self.assertNotIn("_GET_ITER", uops)
+ self.assertNotIn("_GET_ITER_VIRTUAL", uops)
+ self.assertNotIn("_GET_ITER_SELF", uops)
+
+
def test_for_iter_range(self):
def testfunc(n):
total = 0
dis_nested_2 = """%s
Disassembly of <code object <genexpr> at 0x..., file "%s", line %d>:
-- COPY_FREE_VARS 1
+ RESUME 4
%4d LOAD_FAST 0 (.0)
GET_ITER 0
LOAD_FAST_BORROW 1 (z)
BINARY_OP 0 (+)
YIELD_VALUE 0
- RESUME 5
+ RESUME 9
POP_TOP
JUMP_BACKWARD 17 (to L2)
L3: END_FOR
LIST_EXTEND 1
LOAD_SMALL_INT 3
BINARY_OP 5 (*)
- GET_ITER 0
+ GET_ITER_VIRTUAL 0
L1: FOR_ITER_LIST 14 (to L2)
STORE_FAST 0 (i)
caches = list(self.get_cached_values(quickened, adaptive))
for cache in caches:
self.assertRegex(cache, pattern)
- total_caches = 22
+ total_caches = 23
empty_caches = 7
self.assertEqual(caches.count(""), empty_caches)
self.assertEqual(len(caches), total_caches)
make_inst(opname='LOAD_GLOBAL', arg=1, argval='range', argrepr='range + NULL', offset=4, start_offset=4, starts_line=True, line_number=3, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
make_inst(opname='LOAD_SMALL_INT', arg=10, argval=10, argrepr='', offset=14, start_offset=14, starts_line=False, line_number=3),
make_inst(opname='CALL', arg=1, argval=1, argrepr='', offset=16, start_offset=16, starts_line=False, line_number=3, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
- make_inst(opname='GET_ITER', arg=0, argval=0, argrepr='', offset=24, start_offset=24, starts_line=False, line_number=3),
- make_inst(opname='FOR_ITER', arg=33, argval=96, argrepr='to L4', offset=26, start_offset=26, starts_line=False, line_number=3, label=1, cache_info=[('counter', 1, b'\x00\x00')]),
- make_inst(opname='STORE_FAST', arg=0, argval='i', argrepr='i', offset=30, start_offset=30, starts_line=False, line_number=3),
- make_inst(opname='LOAD_GLOBAL', arg=3, argval='print', argrepr='print + NULL', offset=32, start_offset=32, starts_line=True, line_number=4, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
- make_inst(opname='LOAD_FAST_BORROW', arg=0, argval='i', argrepr='i', offset=42, start_offset=42, starts_line=False, line_number=4),
- make_inst(opname='CALL', arg=1, argval=1, argrepr='', offset=44, start_offset=44, starts_line=False, line_number=4, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
- make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=52, start_offset=52, starts_line=False, line_number=4),
- make_inst(opname='LOAD_FAST_BORROW', arg=0, argval='i', argrepr='i', offset=54, start_offset=54, starts_line=True, line_number=5),
- make_inst(opname='LOAD_SMALL_INT', arg=4, argval=4, argrepr='', offset=56, start_offset=56, starts_line=False, line_number=5),
- make_inst(opname='COMPARE_OP', arg=18, argval='<', argrepr='bool(<)', offset=58, start_offset=58, starts_line=False, line_number=5, cache_info=[('counter', 1, b'\x00\x00')]),
- make_inst(opname='POP_JUMP_IF_FALSE', arg=3, argval=72, argrepr='to L2', offset=62, start_offset=62, starts_line=False, line_number=5, cache_info=[('counter', 1, b'\x00\x00')]),
- make_inst(opname='NOT_TAKEN', arg=None, argval=None, argrepr='', offset=66, start_offset=66, starts_line=False, line_number=5),
- make_inst(opname='JUMP_BACKWARD', arg=23, argval=26, argrepr='to L1', offset=68, start_offset=68, starts_line=True, line_number=6, cache_info=[('counter', 1, b'\x00\x00')]),
- make_inst(opname='LOAD_FAST_BORROW', arg=0, argval='i', argrepr='i', offset=72, start_offset=72, starts_line=True, line_number=7, label=2),
- make_inst(opname='LOAD_SMALL_INT', arg=6, argval=6, argrepr='', offset=74, start_offset=74, starts_line=False, line_number=7),
- make_inst(opname='COMPARE_OP', arg=148, argval='>', argrepr='bool(>)', offset=76, start_offset=76, starts_line=False, line_number=7, cache_info=[('counter', 1, b'\x00\x00')]),
- make_inst(opname='POP_JUMP_IF_TRUE', arg=3, argval=90, argrepr='to L3', offset=80, start_offset=80, starts_line=False, line_number=7, cache_info=[('counter', 1, b'\x00\x00')]),
- make_inst(opname='NOT_TAKEN', arg=None, argval=None, argrepr='', offset=84, start_offset=84, starts_line=False, line_number=7),
- make_inst(opname='JUMP_BACKWARD', arg=32, argval=26, argrepr='to L1', offset=86, start_offset=86, starts_line=False, line_number=7, cache_info=[('counter', 1, b'\x00\x00')]),
- make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=90, start_offset=90, starts_line=True, line_number=8, label=3),
- make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=92, start_offset=92, starts_line=False, line_number=8),
- make_inst(opname='JUMP_FORWARD', arg=13, argval=122, argrepr='to L5', offset=94, start_offset=94, starts_line=False, line_number=8),
- make_inst(opname='END_FOR', arg=None, argval=None, argrepr='', offset=96, start_offset=96, starts_line=True, line_number=3, label=4),
- make_inst(opname='POP_ITER', arg=None, argval=None, argrepr='', offset=98, start_offset=98, starts_line=False, line_number=3),
- make_inst(opname='LOAD_GLOBAL', arg=3, argval='print', argrepr='print + NULL', offset=100, start_offset=100, starts_line=True, line_number=10, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
- make_inst(opname='LOAD_CONST', arg=1, argval='I can haz else clause?', argrepr="'I can haz else clause?'", offset=110, start_offset=110, starts_line=False, line_number=10),
- make_inst(opname='CALL', arg=1, argval=1, argrepr='', offset=112, start_offset=112, starts_line=False, line_number=10, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
- make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=120, start_offset=120, starts_line=False, line_number=10),
- make_inst(opname='LOAD_FAST_CHECK', arg=0, argval='i', argrepr='i', offset=122, start_offset=122, starts_line=True, line_number=11, label=5),
- make_inst(opname='TO_BOOL', arg=None, argval=None, argrepr='', offset=124, start_offset=124, starts_line=False, line_number=11, cache_info=[('counter', 1, b'\x00\x00'), ('version', 2, b'\x00\x00\x00\x00')]),
- make_inst(opname='POP_JUMP_IF_FALSE', arg=40, argval=216, argrepr='to L8', offset=132, start_offset=132, starts_line=False, line_number=11, cache_info=[('counter', 1, b'\x00\x00')]),
- make_inst(opname='NOT_TAKEN', arg=None, argval=None, argrepr='', offset=136, start_offset=136, starts_line=False, line_number=11),
- make_inst(opname='LOAD_GLOBAL', arg=3, argval='print', argrepr='print + NULL', offset=138, start_offset=138, starts_line=True, line_number=12, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
- make_inst(opname='LOAD_FAST_BORROW', arg=0, argval='i', argrepr='i', offset=148, start_offset=148, starts_line=False, line_number=12),
- make_inst(opname='CALL', arg=1, argval=1, argrepr='', offset=150, start_offset=150, starts_line=False, line_number=12, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
- make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=158, start_offset=158, starts_line=False, line_number=12),
- make_inst(opname='LOAD_FAST_BORROW', arg=0, argval='i', argrepr='i', offset=160, start_offset=160, starts_line=True, line_number=13),
- make_inst(opname='LOAD_SMALL_INT', arg=1, argval=1, argrepr='', offset=162, start_offset=162, starts_line=False, line_number=13),
- make_inst(opname='BINARY_OP', arg=23, argval=23, argrepr='-=', offset=164, start_offset=164, starts_line=False, line_number=13, cache_info=[('counter', 1, b'\x00\x00'), ('descr', 4, b'\x00\x00\x00\x00\x00\x00\x00\x00')]),
- make_inst(opname='STORE_FAST', arg=0, argval='i', argrepr='i', offset=176, start_offset=176, starts_line=False, line_number=13),
- make_inst(opname='LOAD_FAST_BORROW', arg=0, argval='i', argrepr='i', offset=178, start_offset=178, starts_line=True, line_number=14),
- make_inst(opname='LOAD_SMALL_INT', arg=6, argval=6, argrepr='', offset=180, start_offset=180, starts_line=False, line_number=14),
- make_inst(opname='COMPARE_OP', arg=148, argval='>', argrepr='bool(>)', offset=182, start_offset=182, starts_line=False, line_number=14, cache_info=[('counter', 1, b'\x00\x00')]),
- make_inst(opname='POP_JUMP_IF_FALSE', arg=3, argval=196, argrepr='to L6', offset=186, start_offset=186, starts_line=False, line_number=14, cache_info=[('counter', 1, b'\x00\x00')]),
- make_inst(opname='NOT_TAKEN', arg=None, argval=None, argrepr='', offset=190, start_offset=190, starts_line=False, line_number=14),
- make_inst(opname='JUMP_BACKWARD', arg=37, argval=122, argrepr='to L5', offset=192, start_offset=192, starts_line=True, line_number=15, cache_info=[('counter', 1, b'\x00\x00')]),
- make_inst(opname='LOAD_FAST_BORROW', arg=0, argval='i', argrepr='i', offset=196, start_offset=196, starts_line=True, line_number=16, label=6),
- make_inst(opname='LOAD_SMALL_INT', arg=4, argval=4, argrepr='', offset=198, start_offset=198, starts_line=False, line_number=16),
- make_inst(opname='COMPARE_OP', arg=18, argval='<', argrepr='bool(<)', offset=200, start_offset=200, starts_line=False, line_number=16, cache_info=[('counter', 1, b'\x00\x00')]),
- make_inst(opname='POP_JUMP_IF_TRUE', arg=3, argval=214, argrepr='to L7', offset=204, start_offset=204, starts_line=False, line_number=16, cache_info=[('counter', 1, b'\x00\x00')]),
- make_inst(opname='NOT_TAKEN', arg=None, argval=None, argrepr='', offset=208, start_offset=208, starts_line=False, line_number=16),
- make_inst(opname='JUMP_BACKWARD', arg=46, argval=122, argrepr='to L5', offset=210, start_offset=210, starts_line=False, line_number=16, cache_info=[('counter', 1, b'\x00\x00')]),
- make_inst(opname='JUMP_FORWARD', arg=11, argval=238, argrepr='to L9', offset=214, start_offset=214, starts_line=True, line_number=17, label=7),
- make_inst(opname='LOAD_GLOBAL', arg=3, argval='print', argrepr='print + NULL', offset=216, start_offset=216, starts_line=True, line_number=19, label=8, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
- make_inst(opname='LOAD_CONST', arg=2, argval='Who let lolcatz into this test suite?', argrepr="'Who let lolcatz into this test suite?'", offset=226, start_offset=226, starts_line=False, line_number=19),
- make_inst(opname='CALL', arg=1, argval=1, argrepr='', offset=228, start_offset=228, starts_line=False, line_number=19, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
- make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=236, start_offset=236, starts_line=False, line_number=19),
- make_inst(opname='NOP', arg=None, argval=None, argrepr='', offset=238, start_offset=238, starts_line=True, line_number=20, label=9),
- make_inst(opname='LOAD_SMALL_INT', arg=1, argval=1, argrepr='', offset=240, start_offset=240, starts_line=True, line_number=21),
- make_inst(opname='LOAD_SMALL_INT', arg=0, argval=0, argrepr='', offset=242, start_offset=242, starts_line=False, line_number=21),
- make_inst(opname='BINARY_OP', arg=11, argval=11, argrepr='/', offset=244, start_offset=244, starts_line=False, line_number=21, cache_info=[('counter', 1, b'\x00\x00'), ('descr', 4, b'\x00\x00\x00\x00\x00\x00\x00\x00')]),
- make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=256, start_offset=256, starts_line=False, line_number=21),
- make_inst(opname='LOAD_FAST_BORROW', arg=0, argval='i', argrepr='i', offset=258, start_offset=258, starts_line=True, line_number=25),
- make_inst(opname='COPY', arg=1, argval=1, argrepr='', offset=260, start_offset=260, starts_line=False, line_number=25),
- make_inst(opname='LOAD_SPECIAL', arg=1, argval=1, argrepr='__exit__', offset=262, start_offset=262, starts_line=False, line_number=25),
- make_inst(opname='SWAP', arg=2, argval=2, argrepr='', offset=264, start_offset=264, starts_line=False, line_number=25),
- make_inst(opname='SWAP', arg=3, argval=3, argrepr='', offset=266, start_offset=266, starts_line=False, line_number=25),
- make_inst(opname='LOAD_SPECIAL', arg=0, argval=0, argrepr='__enter__', offset=268, start_offset=268, starts_line=False, line_number=25),
- make_inst(opname='CALL', arg=0, argval=0, argrepr='', offset=270, start_offset=270, starts_line=False, line_number=25, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
- make_inst(opname='STORE_FAST', arg=1, argval='dodgy', argrepr='dodgy', offset=278, start_offset=278, starts_line=False, line_number=25),
- make_inst(opname='LOAD_GLOBAL', arg=3, argval='print', argrepr='print + NULL', offset=280, start_offset=280, starts_line=True, line_number=26, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
- make_inst(opname='LOAD_CONST', arg=3, argval='Never reach this', argrepr="'Never reach this'", offset=290, start_offset=290, starts_line=False, line_number=26),
- make_inst(opname='CALL', arg=1, argval=1, argrepr='', offset=292, start_offset=292, starts_line=False, line_number=26, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
- make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=300, start_offset=300, starts_line=False, line_number=26),
- make_inst(opname='LOAD_CONST', arg=4, argval=None, argrepr='None', offset=302, start_offset=302, starts_line=True, line_number=25),
- make_inst(opname='LOAD_CONST', arg=4, argval=None, argrepr='None', offset=304, start_offset=304, starts_line=False, line_number=25),
+ make_inst(opname='GET_ITER', arg=0, argval=0, argrepr='', offset=24, start_offset=24, starts_line=False, line_number=3, cache_info=[('counter', 1, b'\x00\x00')]),
+ make_inst(opname='FOR_ITER', arg=33, argval=98, argrepr='to L4', offset=28, start_offset=28, starts_line=False, line_number=3, label=1, cache_info=[('counter', 1, b'\x00\x00')]),
+ make_inst(opname='STORE_FAST', arg=0, argval='i', argrepr='i', offset=32, start_offset=32, starts_line=False, line_number=3),
+ make_inst(opname='LOAD_GLOBAL', arg=3, argval='print', argrepr='print + NULL', offset=34, start_offset=34, starts_line=True, line_number=4, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
+ make_inst(opname='LOAD_FAST_BORROW', arg=0, argval='i', argrepr='i', offset=44, start_offset=44, starts_line=False, line_number=4),
+ make_inst(opname='CALL', arg=1, argval=1, argrepr='', offset=46, start_offset=46, starts_line=False, line_number=4, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
+ make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=54, start_offset=54, starts_line=False, line_number=4),
+ make_inst(opname='LOAD_FAST_BORROW', arg=0, argval='i', argrepr='i', offset=56, start_offset=56, starts_line=True, line_number=5),
+ make_inst(opname='LOAD_SMALL_INT', arg=4, argval=4, argrepr='', offset=58, start_offset=58, starts_line=False, line_number=5),
+ make_inst(opname='COMPARE_OP', arg=18, argval='<', argrepr='bool(<)', offset=60, start_offset=60, starts_line=False, line_number=5, cache_info=[('counter', 1, b'\x00\x00')]),
+ make_inst(opname='POP_JUMP_IF_FALSE', arg=3, argval=74, argrepr='to L2', offset=64, start_offset=64, starts_line=False, line_number=5, cache_info=[('counter', 1, b'\x00\x00')]),
+ make_inst(opname='NOT_TAKEN', arg=None, argval=None, argrepr='', offset=68, start_offset=68, starts_line=False, line_number=5),
+ make_inst(opname='JUMP_BACKWARD', arg=23, argval=28, argrepr='to L1', offset=70, start_offset=70, starts_line=True, line_number=6, cache_info=[('counter', 1, b'\x00\x00')]),
+ make_inst(opname='LOAD_FAST_BORROW', arg=0, argval='i', argrepr='i', offset=74, start_offset=74, starts_line=True, line_number=7, label=2),
+ make_inst(opname='LOAD_SMALL_INT', arg=6, argval=6, argrepr='', offset=76, start_offset=76, starts_line=False, line_number=7),
+ make_inst(opname='COMPARE_OP', arg=148, argval='>', argrepr='bool(>)', offset=78, start_offset=78, starts_line=False, line_number=7, cache_info=[('counter', 1, b'\x00\x00')]),
+ make_inst(opname='POP_JUMP_IF_TRUE', arg=3, argval=92, argrepr='to L3', offset=82, start_offset=82, starts_line=False, line_number=7, cache_info=[('counter', 1, b'\x00\x00')]),
+ make_inst(opname='NOT_TAKEN', arg=None, argval=None, argrepr='', offset=86, start_offset=86, starts_line=False, line_number=7),
+ make_inst(opname='JUMP_BACKWARD', arg=32, argval=28, argrepr='to L1', offset=88, start_offset=88, starts_line=False, line_number=7, cache_info=[('counter', 1, b'\x00\x00')]),
+ make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=92, start_offset=92, starts_line=True, line_number=8, label=3),
+ make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=94, start_offset=94, starts_line=False, line_number=8),
+ make_inst(opname='JUMP_FORWARD', arg=13, argval=124, argrepr='to L5', offset=96, start_offset=96, starts_line=False, line_number=8),
+ make_inst(opname='END_FOR', arg=None, argval=None, argrepr='', offset=98, start_offset=98, starts_line=True, line_number=3, label=4),
+ make_inst(opname='POP_ITER', arg=None, argval=None, argrepr='', offset=100, start_offset=100, starts_line=False, line_number=3),
+ make_inst(opname='LOAD_GLOBAL', arg=3, argval='print', argrepr='print + NULL', offset=102, start_offset=102, starts_line=True, line_number=10, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
+ make_inst(opname='LOAD_CONST', arg=1, argval='I can haz else clause?', argrepr="'I can haz else clause?'", offset=112, start_offset=112, starts_line=False, line_number=10),
+ make_inst(opname='CALL', arg=1, argval=1, argrepr='', offset=114, start_offset=114, starts_line=False, line_number=10, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
+ make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=122, start_offset=122, starts_line=False, line_number=10),
+ make_inst(opname='LOAD_FAST_CHECK', arg=0, argval='i', argrepr='i', offset=124, start_offset=124, starts_line=True, line_number=11, label=5),
+ make_inst(opname='TO_BOOL', arg=None, argval=None, argrepr='', offset=126, start_offset=126, starts_line=False, line_number=11, cache_info=[('counter', 1, b'\x00\x00'), ('version', 2, b'\x00\x00\x00\x00')]),
+ make_inst(opname='POP_JUMP_IF_FALSE', arg=40, argval=218, argrepr='to L8', offset=134, start_offset=134, starts_line=False, line_number=11, cache_info=[('counter', 1, b'\x00\x00')]),
+ make_inst(opname='NOT_TAKEN', arg=None, argval=None, argrepr='', offset=138, start_offset=138, starts_line=False, line_number=11),
+ make_inst(opname='LOAD_GLOBAL', arg=3, argval='print', argrepr='print + NULL', offset=140, start_offset=140, starts_line=True, line_number=12, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
+ make_inst(opname='LOAD_FAST_BORROW', arg=0, argval='i', argrepr='i', offset=150, start_offset=150, starts_line=False, line_number=12),
+ make_inst(opname='CALL', arg=1, argval=1, argrepr='', offset=152, start_offset=152, starts_line=False, line_number=12, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
+ make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=160, start_offset=160, starts_line=False, line_number=12),
+ make_inst(opname='LOAD_FAST_BORROW', arg=0, argval='i', argrepr='i', offset=162, start_offset=162, starts_line=True, line_number=13),
+ make_inst(opname='LOAD_SMALL_INT', arg=1, argval=1, argrepr='', offset=164, start_offset=164, starts_line=False, line_number=13),
+ make_inst(opname='BINARY_OP', arg=23, argval=23, argrepr='-=', offset=166, start_offset=166, starts_line=False, line_number=13, cache_info=[('counter', 1, b'\x00\x00'), ('descr', 4, b'\x00\x00\x00\x00\x00\x00\x00\x00')]),
+ make_inst(opname='STORE_FAST', arg=0, argval='i', argrepr='i', offset=178, start_offset=178, starts_line=False, line_number=13),
+ make_inst(opname='LOAD_FAST_BORROW', arg=0, argval='i', argrepr='i', offset=180, start_offset=180, starts_line=True, line_number=14),
+ make_inst(opname='LOAD_SMALL_INT', arg=6, argval=6, argrepr='', offset=182, start_offset=182, starts_line=False, line_number=14),
+ make_inst(opname='COMPARE_OP', arg=148, argval='>', argrepr='bool(>)', offset=184, start_offset=184, starts_line=False, line_number=14, cache_info=[('counter', 1, b'\x00\x00')]),
+ make_inst(opname='POP_JUMP_IF_FALSE', arg=3, argval=198, argrepr='to L6', offset=188, start_offset=188, starts_line=False, line_number=14, cache_info=[('counter', 1, b'\x00\x00')]),
+ make_inst(opname='NOT_TAKEN', arg=None, argval=None, argrepr='', offset=192, start_offset=192, starts_line=False, line_number=14),
+ make_inst(opname='JUMP_BACKWARD', arg=37, argval=124, argrepr='to L5', offset=194, start_offset=194, starts_line=True, line_number=15, cache_info=[('counter', 1, b'\x00\x00')]),
+ make_inst(opname='LOAD_FAST_BORROW', arg=0, argval='i', argrepr='i', offset=198, start_offset=198, starts_line=True, line_number=16, label=6),
+ make_inst(opname='LOAD_SMALL_INT', arg=4, argval=4, argrepr='', offset=200, start_offset=200, starts_line=False, line_number=16),
+ make_inst(opname='COMPARE_OP', arg=18, argval='<', argrepr='bool(<)', offset=202, start_offset=202, starts_line=False, line_number=16, cache_info=[('counter', 1, b'\x00\x00')]),
+ make_inst(opname='POP_JUMP_IF_TRUE', arg=3, argval=216, argrepr='to L7', offset=206, start_offset=206, starts_line=False, line_number=16, cache_info=[('counter', 1, b'\x00\x00')]),
+ make_inst(opname='NOT_TAKEN', arg=None, argval=None, argrepr='', offset=210, start_offset=210, starts_line=False, line_number=16),
+ make_inst(opname='JUMP_BACKWARD', arg=46, argval=124, argrepr='to L5', offset=212, start_offset=212, starts_line=False, line_number=16, cache_info=[('counter', 1, b'\x00\x00')]),
+ make_inst(opname='JUMP_FORWARD', arg=11, argval=240, argrepr='to L9', offset=216, start_offset=216, starts_line=True, line_number=17, label=7),
+ make_inst(opname='LOAD_GLOBAL', arg=3, argval='print', argrepr='print + NULL', offset=218, start_offset=218, starts_line=True, line_number=19, label=8, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
+ make_inst(opname='LOAD_CONST', arg=2, argval='Who let lolcatz into this test suite?', argrepr="'Who let lolcatz into this test suite?'", offset=228, start_offset=228, starts_line=False, line_number=19),
+ make_inst(opname='CALL', arg=1, argval=1, argrepr='', offset=230, start_offset=230, starts_line=False, line_number=19, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
+ make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=238, start_offset=238, starts_line=False, line_number=19),
+ make_inst(opname='NOP', arg=None, argval=None, argrepr='', offset=240, start_offset=240, starts_line=True, line_number=20, label=9),
+ make_inst(opname='LOAD_SMALL_INT', arg=1, argval=1, argrepr='', offset=242, start_offset=242, starts_line=True, line_number=21),
+ make_inst(opname='LOAD_SMALL_INT', arg=0, argval=0, argrepr='', offset=244, start_offset=244, starts_line=False, line_number=21),
+ make_inst(opname='BINARY_OP', arg=11, argval=11, argrepr='/', offset=246, start_offset=246, starts_line=False, line_number=21, cache_info=[('counter', 1, b'\x00\x00'), ('descr', 4, b'\x00\x00\x00\x00\x00\x00\x00\x00')]),
+ make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=258, start_offset=258, starts_line=False, line_number=21),
+ make_inst(opname='LOAD_FAST_BORROW', arg=0, argval='i', argrepr='i', offset=260, start_offset=260, starts_line=True, line_number=25),
+ make_inst(opname='COPY', arg=1, argval=1, argrepr='', offset=262, start_offset=262, starts_line=False, line_number=25),
+ make_inst(opname='LOAD_SPECIAL', arg=1, argval=1, argrepr='__exit__', offset=264, start_offset=264, starts_line=False, line_number=25),
+ make_inst(opname='SWAP', arg=2, argval=2, argrepr='', offset=266, start_offset=266, starts_line=False, line_number=25),
+ make_inst(opname='SWAP', arg=3, argval=3, argrepr='', offset=268, start_offset=268, starts_line=False, line_number=25),
+ make_inst(opname='LOAD_SPECIAL', arg=0, argval=0, argrepr='__enter__', offset=270, start_offset=270, starts_line=False, line_number=25),
+ make_inst(opname='CALL', arg=0, argval=0, argrepr='', offset=272, start_offset=272, starts_line=False, line_number=25, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
+ make_inst(opname='STORE_FAST', arg=1, argval='dodgy', argrepr='dodgy', offset=280, start_offset=280, starts_line=False, line_number=25),
+ make_inst(opname='LOAD_GLOBAL', arg=3, argval='print', argrepr='print + NULL', offset=282, start_offset=282, starts_line=True, line_number=26, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
+ make_inst(opname='LOAD_CONST', arg=3, argval='Never reach this', argrepr="'Never reach this'", offset=292, start_offset=292, starts_line=False, line_number=26),
+ make_inst(opname='CALL', arg=1, argval=1, argrepr='', offset=294, start_offset=294, starts_line=False, line_number=26, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
+ make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=302, start_offset=302, starts_line=False, line_number=26),
+ make_inst(opname='LOAD_CONST', arg=4, argval=None, argrepr='None', offset=304, start_offset=304, starts_line=True, line_number=25),
make_inst(opname='LOAD_CONST', arg=4, argval=None, argrepr='None', offset=306, start_offset=306, starts_line=False, line_number=25),
- make_inst(opname='CALL', arg=3, argval=3, argrepr='', offset=308, start_offset=308, starts_line=False, line_number=25, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
- make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=316, start_offset=316, starts_line=False, line_number=25),
- make_inst(opname='LOAD_GLOBAL', arg=3, argval='print', argrepr='print + NULL', offset=318, start_offset=318, starts_line=True, line_number=28, label=10, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
- make_inst(opname='LOAD_CONST', arg=6, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=328, start_offset=328, starts_line=False, line_number=28),
- make_inst(opname='CALL', arg=1, argval=1, argrepr='', offset=330, start_offset=330, starts_line=False, line_number=28, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
- make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=338, start_offset=338, starts_line=False, line_number=28),
- make_inst(opname='LOAD_CONST', arg=4, argval=None, argrepr='None', offset=340, start_offset=340, starts_line=False, line_number=28),
- make_inst(opname='RETURN_VALUE', arg=None, argval=None, argrepr='', offset=342, start_offset=342, starts_line=False, line_number=28),
- make_inst(opname='PUSH_EXC_INFO', arg=None, argval=None, argrepr='', offset=344, start_offset=344, starts_line=True, line_number=25),
- make_inst(opname='WITH_EXCEPT_START', arg=None, argval=None, argrepr='', offset=346, start_offset=346, starts_line=False, line_number=25),
- make_inst(opname='TO_BOOL', arg=None, argval=None, argrepr='', offset=348, start_offset=348, starts_line=False, line_number=25, cache_info=[('counter', 1, b'\x00\x00'), ('version', 2, b'\x00\x00\x00\x00')]),
- make_inst(opname='POP_JUMP_IF_TRUE', arg=2, argval=364, argrepr='to L11', offset=356, start_offset=356, starts_line=False, line_number=25, cache_info=[('counter', 1, b'\x00\x00')]),
- make_inst(opname='NOT_TAKEN', arg=None, argval=None, argrepr='', offset=360, start_offset=360, starts_line=False, line_number=25),
- make_inst(opname='RERAISE', arg=2, argval=2, argrepr='', offset=362, start_offset=362, starts_line=False, line_number=25),
- make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=364, start_offset=364, starts_line=False, line_number=25, label=11),
- make_inst(opname='POP_EXCEPT', arg=None, argval=None, argrepr='', offset=366, start_offset=366, starts_line=False, line_number=25),
- make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=368, start_offset=368, starts_line=False, line_number=25),
+ make_inst(opname='LOAD_CONST', arg=4, argval=None, argrepr='None', offset=308, start_offset=308, starts_line=False, line_number=25),
+ make_inst(opname='CALL', arg=3, argval=3, argrepr='', offset=310, start_offset=310, starts_line=False, line_number=25, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
+ make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=318, start_offset=318, starts_line=False, line_number=25),
+ make_inst(opname='LOAD_GLOBAL', arg=3, argval='print', argrepr='print + NULL', offset=320, start_offset=320, starts_line=True, line_number=28, label=10, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
+ make_inst(opname='LOAD_CONST', arg=6, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=330, start_offset=330, starts_line=False, line_number=28),
+ make_inst(opname='CALL', arg=1, argval=1, argrepr='', offset=332, start_offset=332, starts_line=False, line_number=28, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
+ make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=340, start_offset=340, starts_line=False, line_number=28),
+ make_inst(opname='LOAD_CONST', arg=4, argval=None, argrepr='None', offset=342, start_offset=342, starts_line=False, line_number=28),
+ make_inst(opname='RETURN_VALUE', arg=None, argval=None, argrepr='', offset=344, start_offset=344, starts_line=False, line_number=28),
+ make_inst(opname='PUSH_EXC_INFO', arg=None, argval=None, argrepr='', offset=346, start_offset=346, starts_line=True, line_number=25),
+ make_inst(opname='WITH_EXCEPT_START', arg=None, argval=None, argrepr='', offset=348, start_offset=348, starts_line=False, line_number=25),
+ make_inst(opname='TO_BOOL', arg=None, argval=None, argrepr='', offset=350, start_offset=350, starts_line=False, line_number=25, cache_info=[('counter', 1, b'\x00\x00'), ('version', 2, b'\x00\x00\x00\x00')]),
+ make_inst(opname='POP_JUMP_IF_TRUE', arg=2, argval=366, argrepr='to L11', offset=358, start_offset=358, starts_line=False, line_number=25, cache_info=[('counter', 1, b'\x00\x00')]),
+ make_inst(opname='NOT_TAKEN', arg=None, argval=None, argrepr='', offset=362, start_offset=362, starts_line=False, line_number=25),
+ make_inst(opname='RERAISE', arg=2, argval=2, argrepr='', offset=364, start_offset=364, starts_line=False, line_number=25),
+ make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=366, start_offset=366, starts_line=False, line_number=25, label=11),
+ make_inst(opname='POP_EXCEPT', arg=None, argval=None, argrepr='', offset=368, start_offset=368, starts_line=False, line_number=25),
make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=370, start_offset=370, starts_line=False, line_number=25),
make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=372, start_offset=372, starts_line=False, line_number=25),
- make_inst(opname='JUMP_BACKWARD_NO_INTERRUPT', arg=29, argval=318, argrepr='to L10', offset=374, start_offset=374, starts_line=False, line_number=25),
- make_inst(opname='COPY', arg=3, argval=3, argrepr='', offset=376, start_offset=376, starts_line=True, line_number=None),
- make_inst(opname='POP_EXCEPT', arg=None, argval=None, argrepr='', offset=378, start_offset=378, starts_line=False, line_number=None),
- make_inst(opname='RERAISE', arg=1, argval=1, argrepr='', offset=380, start_offset=380, starts_line=False, line_number=None),
- make_inst(opname='PUSH_EXC_INFO', arg=None, argval=None, argrepr='', offset=382, start_offset=382, starts_line=False, line_number=None),
- make_inst(opname='LOAD_GLOBAL', arg=4, argval='ZeroDivisionError', argrepr='ZeroDivisionError', offset=384, start_offset=384, starts_line=True, line_number=22, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
- make_inst(opname='CHECK_EXC_MATCH', arg=None, argval=None, argrepr='', offset=394, start_offset=394, starts_line=False, line_number=22),
- make_inst(opname='POP_JUMP_IF_FALSE', arg=15, argval=430, argrepr='to L12', offset=396, start_offset=396, starts_line=False, line_number=22, cache_info=[('counter', 1, b'\x00\x00')]),
- make_inst(opname='NOT_TAKEN', arg=None, argval=None, argrepr='', offset=400, start_offset=400, starts_line=False, line_number=22),
- make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=402, start_offset=402, starts_line=False, line_number=22),
- make_inst(opname='LOAD_GLOBAL', arg=3, argval='print', argrepr='print + NULL', offset=404, start_offset=404, starts_line=True, line_number=23, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
- make_inst(opname='LOAD_CONST', arg=5, argval='Here we go, here we go, here we go...', argrepr="'Here we go, here we go, here we go...'", offset=414, start_offset=414, starts_line=False, line_number=23),
- make_inst(opname='CALL', arg=1, argval=1, argrepr='', offset=416, start_offset=416, starts_line=False, line_number=23, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
- make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=424, start_offset=424, starts_line=False, line_number=23),
- make_inst(opname='POP_EXCEPT', arg=None, argval=None, argrepr='', offset=426, start_offset=426, starts_line=False, line_number=23),
- make_inst(opname='JUMP_BACKWARD_NO_INTERRUPT', arg=56, argval=318, argrepr='to L10', offset=428, start_offset=428, starts_line=False, line_number=23),
- make_inst(opname='RERAISE', arg=0, argval=0, argrepr='', offset=430, start_offset=430, starts_line=True, line_number=22, label=12),
- make_inst(opname='COPY', arg=3, argval=3, argrepr='', offset=432, start_offset=432, starts_line=True, line_number=None),
- make_inst(opname='POP_EXCEPT', arg=None, argval=None, argrepr='', offset=434, start_offset=434, starts_line=False, line_number=None),
- make_inst(opname='RERAISE', arg=1, argval=1, argrepr='', offset=436, start_offset=436, starts_line=False, line_number=None),
- make_inst(opname='PUSH_EXC_INFO', arg=None, argval=None, argrepr='', offset=438, start_offset=438, starts_line=False, line_number=None),
- make_inst(opname='LOAD_GLOBAL', arg=3, argval='print', argrepr='print + NULL', offset=440, start_offset=440, starts_line=True, line_number=28, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
- make_inst(opname='LOAD_CONST', arg=6, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=450, start_offset=450, starts_line=False, line_number=28),
- make_inst(opname='CALL', arg=1, argval=1, argrepr='', offset=452, start_offset=452, starts_line=False, line_number=28, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
- make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=460, start_offset=460, starts_line=False, line_number=28),
- make_inst(opname='RERAISE', arg=0, argval=0, argrepr='', offset=462, start_offset=462, starts_line=False, line_number=28),
- make_inst(opname='COPY', arg=3, argval=3, argrepr='', offset=464, start_offset=464, starts_line=True, line_number=None),
- make_inst(opname='POP_EXCEPT', arg=None, argval=None, argrepr='', offset=466, start_offset=466, starts_line=False, line_number=None),
- make_inst(opname='RERAISE', arg=1, argval=1, argrepr='', offset=468, start_offset=468, starts_line=False, line_number=None),
+ make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=374, start_offset=374, starts_line=False, line_number=25),
+ make_inst(opname='JUMP_BACKWARD_NO_INTERRUPT', arg=29, argval=320, argrepr='to L10', offset=376, start_offset=376, starts_line=False, line_number=25),
+ make_inst(opname='COPY', arg=3, argval=3, argrepr='', offset=378, start_offset=378, starts_line=True, line_number=None),
+ make_inst(opname='POP_EXCEPT', arg=None, argval=None, argrepr='', offset=380, start_offset=380, starts_line=False, line_number=None),
+ make_inst(opname='RERAISE', arg=1, argval=1, argrepr='', offset=382, start_offset=382, starts_line=False, line_number=None),
+ make_inst(opname='PUSH_EXC_INFO', arg=None, argval=None, argrepr='', offset=384, start_offset=384, starts_line=False, line_number=None),
+ make_inst(opname='LOAD_GLOBAL', arg=4, argval='ZeroDivisionError', argrepr='ZeroDivisionError', offset=386, start_offset=386, starts_line=True, line_number=22, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
+ make_inst(opname='CHECK_EXC_MATCH', arg=None, argval=None, argrepr='', offset=396, start_offset=396, starts_line=False, line_number=22),
+ make_inst(opname='POP_JUMP_IF_FALSE', arg=15, argval=432, argrepr='to L12', offset=398, start_offset=398, starts_line=False, line_number=22, cache_info=[('counter', 1, b'\x00\x00')]),
+ make_inst(opname='NOT_TAKEN', arg=None, argval=None, argrepr='', offset=402, start_offset=402, starts_line=False, line_number=22),
+ make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=404, start_offset=404, starts_line=False, line_number=22),
+ make_inst(opname='LOAD_GLOBAL', arg=3, argval='print', argrepr='print + NULL', offset=406, start_offset=406, starts_line=True, line_number=23, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
+ make_inst(opname='LOAD_CONST', arg=5, argval='Here we go, here we go, here we go...', argrepr="'Here we go, here we go, here we go...'", offset=416, start_offset=416, starts_line=False, line_number=23),
+ make_inst(opname='CALL', arg=1, argval=1, argrepr='', offset=418, start_offset=418, starts_line=False, line_number=23, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
+ make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=426, start_offset=426, starts_line=False, line_number=23),
+ make_inst(opname='POP_EXCEPT', arg=None, argval=None, argrepr='', offset=428, start_offset=428, starts_line=False, line_number=23),
+ make_inst(opname='JUMP_BACKWARD_NO_INTERRUPT', arg=56, argval=320, argrepr='to L10', offset=430, start_offset=430, starts_line=False, line_number=23),
+ make_inst(opname='RERAISE', arg=0, argval=0, argrepr='', offset=432, start_offset=432, starts_line=True, line_number=22, label=12),
+ make_inst(opname='COPY', arg=3, argval=3, argrepr='', offset=434, start_offset=434, starts_line=True, line_number=None),
+ make_inst(opname='POP_EXCEPT', arg=None, argval=None, argrepr='', offset=436, start_offset=436, starts_line=False, line_number=None),
+ make_inst(opname='RERAISE', arg=1, argval=1, argrepr='', offset=438, start_offset=438, starts_line=False, line_number=None),
+ make_inst(opname='PUSH_EXC_INFO', arg=None, argval=None, argrepr='', offset=440, start_offset=440, starts_line=False, line_number=None),
+ make_inst(opname='LOAD_GLOBAL', arg=3, argval='print', argrepr='print + NULL', offset=442, start_offset=442, starts_line=True, line_number=28, cache_info=[('counter', 1, b'\x00\x00'), ('index', 1, b'\x00\x00'), ('module_keys_version', 1, b'\x00\x00'), ('builtin_keys_version', 1, b'\x00\x00')]),
+ make_inst(opname='LOAD_CONST', arg=6, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=452, start_offset=452, starts_line=False, line_number=28),
+ make_inst(opname='CALL', arg=1, argval=1, argrepr='', offset=454, start_offset=454, starts_line=False, line_number=28, cache_info=[('counter', 1, b'\x00\x00'), ('func_version', 2, b'\x00\x00\x00\x00')]),
+ make_inst(opname='POP_TOP', arg=None, argval=None, argrepr='', offset=462, start_offset=462, starts_line=False, line_number=28),
+ make_inst(opname='RERAISE', arg=0, argval=0, argrepr='', offset=464, start_offset=464, starts_line=False, line_number=28),
+ make_inst(opname='COPY', arg=3, argval=3, argrepr='', offset=466, start_offset=466, starts_line=True, line_number=None),
+ make_inst(opname='POP_EXCEPT', arg=None, argval=None, argrepr='', offset=468, start_offset=468, starts_line=False, line_number=None),
+ make_inst(opname='RERAISE', arg=1, argval=1, argrepr='', offset=470, start_offset=470, starts_line=False, line_number=None),
]
# One last piece of inspect fodder to check the default line number handling
('branch right', 'whilefunc', 1, 3)])
self.check_events(func, recorders = BRANCH_OFFSET_RECORDERS, expected = [
- ('branch left', 'func', 30, 34),
- ('branch right', 'func', 46, 60),
- ('branch left', 'func', 30, 34),
- ('branch left', 'func', 46, 52),
- ('branch right', 'func', 30, 72)])
+ ('branch left', 'func', 32, 36),
+ ('branch right', 'func', 48, 62),
+ ('branch left', 'func', 32, 36),
+ ('branch left', 'func', 48, 54),
+ ('branch right', 'func', 32, 74)])
def test_except_star(self):
self.assert_specialized(for_iter_tuple, "FOR_ITER_TUPLE")
self.assert_no_opcode(for_iter_tuple, "FOR_ITER")
+ s = "abcdefghij"
+ def for_iter_str():
+ for i in s:
+ self.assertIn(i, s)
+
+ for_iter_str()
+ self.assert_specialized(for_iter_str, "FOR_ITER_VIRTUAL")
+ self.assert_no_opcode(for_iter_str, "FOR_ITER")
+
r = range(10)
def for_iter_range():
for i in r:
self.assert_specialized(for_iter_generator, "FOR_ITER_GEN")
self.assert_no_opcode(for_iter_generator, "FOR_ITER")
+ @cpython_only
+ @requires_specialization
+ def test_get_iter(self):
+ L = list(range(10))
+ def get_iter_list():
+ n = 10
+ while n:
+ n -= 1
+ for i in L:
+ break
+ get_iter_list()
+ self.assert_specialized(get_iter_list, "GET_ITER_VIRTUAL")
+ self.assert_no_opcode(get_iter_list, "GET_ITER")
+
+ def get_iter_gen():
+ n = 10
+ while n:
+ n -= 1
+ for i in (i for i in range(10)):
+ break
+ get_iter_gen()
+ self.assert_specialized(get_iter_gen, "GET_ITER_SELF")
+ self.assert_no_opcode(get_iter_gen, "GET_ITER")
+
@cpython_only
@requires_specialization
def test_call_list_append(self):
check((1,2,3), vsize('') + self.P + 3*self.P)
# type
# static type: PyTypeObject
- fmt = 'P2nPI13Pl4Pn9Pn12PIPc'
+ fmt = 'P2nPI13Pl4Pn9Pn12PI2Pc'
s = vsize(fmt)
check(int, s)
typeid = 'n' if support.Py_GIL_DISABLED else ''
DISPATCH();
}
+ TARGET(FOR_ITER_VIRTUAL) {
+ #if _Py_TAIL_CALL_INTERP
+ int opcode = FOR_ITER_VIRTUAL;
+ (void)(opcode);
+ #endif
+ _Py_CODEUNIT* const this_instr = next_instr;
+ (void)this_instr;
+ frame->instr_ptr = next_instr;
+ next_instr += 2;
+ INSTRUCTION_STATS(FOR_ITER_VIRTUAL);
+ static_assert(INLINE_CACHE_ENTRIES_FOR_ITER == 1, "incorrect cache size");
+ _PyStackRef iter;
+ _PyStackRef null_or_index;
+ _PyStackRef next;
+ /* Skip 1 cache entry */
+ // _GUARD_NOS_ITER_VIRTUAL
+ {
+ iter = stack_pointer[-2];
+ PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
+ if (Py_TYPE(iter_o)->_tp_iteritem == NULL) {
+ UPDATE_MISS_STATS(FOR_ITER);
+ assert(_PyOpcode_Deopt[opcode] == (FOR_ITER));
+ JUMP_TO_PREDICTED(FOR_ITER);
+ }
+ }
+ // _FOR_ITER_VIRTUAL
+ {
+ null_or_index = stack_pointer[-1];
+ PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
+ Py_ssize_t index = PyStackRef_UntagInt(null_or_index);
+ _PyFrame_SetStackPointer(frame, stack_pointer);
+ _PyObjectIndexPair next_index = Py_TYPE(iter_o)->_tp_iteritem(iter_o, index);
+ stack_pointer = _PyFrame_GetStackPointer(frame);
+ PyObject *next_o = next_index.object;
+ index = next_index.index;
+ if (next_o == NULL) {
+ if (index < 0) {
+ JUMP_TO_LABEL(error);
+ }
+ JUMPBY(oparg + 1);
+ DISPATCH();
+ }
+ null_or_index = PyStackRef_TagInt(index);
+ next = PyStackRef_FromPyObjectSteal(next_o);
+ }
+ stack_pointer[-1] = null_or_index;
+ stack_pointer[0] = next;
+ stack_pointer += 1;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ DISPATCH();
+ }
+
TARGET(GET_AITER) {
#if _Py_TAIL_CALL_INTERP
int opcode = GET_AITER;
(void)(opcode);
#endif
frame->instr_ptr = next_instr;
- next_instr += 1;
+ next_instr += 2;
INSTRUCTION_STATS(GET_ITER);
+ PREDICTED_GET_ITER:;
+ _Py_CODEUNIT* const this_instr = next_instr - 2;
+ (void)this_instr;
_PyStackRef iterable;
_PyStackRef iter;
_PyStackRef index_or_null;
- iterable = stack_pointer[-1];
- #ifdef Py_STATS
- _Py_GatherStats_GetIter(iterable);
- #endif
- _PyFrame_SetStackPointer(frame, stack_pointer);
- _PyStackRef result = _PyEval_GetIter(iterable, &index_or_null, oparg);
- stack_pointer = _PyFrame_GetStackPointer(frame);
- if (PyStackRef_IsError(result)) {
- JUMP_TO_LABEL(pop_1_error);
+ // _SPECIALIZE_GET_ITER
+ {
+ iterable = stack_pointer[-1];
+ uint16_t counter = read_u16(&this_instr[1].cache);
+ (void)counter;
+ #if ENABLE_SPECIALIZATION
+ if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
+ next_instr = this_instr;
+ _PyFrame_SetStackPointer(frame, stack_pointer);
+ _Py_Specialize_GetIter(iterable, next_instr);
+ stack_pointer = _PyFrame_GetStackPointer(frame);
+ DISPATCH_SAME_OPARG();
+ }
+ OPCODE_DEFERRED_INC(GET_ITER);
+ ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
+ #endif /* ENABLE_SPECIALIZATION */
+ }
+ // _GET_ITER
+ {
+ _PyFrame_SetStackPointer(frame, stack_pointer);
+ _PyStackRef result = _PyEval_GetIter(iterable, &index_or_null, oparg);
+ stack_pointer = _PyFrame_GetStackPointer(frame);
+ if (PyStackRef_IsError(result)) {
+ JUMP_TO_LABEL(pop_1_error);
+ }
+ iter = result;
}
- iter = result;
stack_pointer[-1] = iter;
stack_pointer[0] = index_or_null;
stack_pointer += 1;
DISPATCH();
}
+ TARGET(GET_ITER_SELF) {
+ #if _Py_TAIL_CALL_INTERP
+ int opcode = GET_ITER_SELF;
+ (void)(opcode);
+ #endif
+ _Py_CODEUNIT* const this_instr = next_instr;
+ (void)this_instr;
+ frame->instr_ptr = next_instr;
+ next_instr += 2;
+ INSTRUCTION_STATS(GET_ITER_SELF);
+ static_assert(INLINE_CACHE_ENTRIES_GET_ITER == 1, "incorrect cache size");
+ _PyStackRef iterable;
+ _PyStackRef res;
+ /* Skip 1 cache entry */
+ // _GUARD_ITERATOR
+ {
+ iterable = stack_pointer[-1];
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(iterable));
+ if (tp->tp_iter != PyObject_SelfIter) {
+ UPDATE_MISS_STATS(GET_ITER);
+ assert(_PyOpcode_Deopt[opcode] == (GET_ITER));
+ JUMP_TO_PREDICTED(GET_ITER);
+ }
+ STAT_INC(GET_ITER, hit);
+ }
+ // _PUSH_NULL
+ {
+ res = PyStackRef_NULL;
+ }
+ stack_pointer[0] = res;
+ stack_pointer += 1;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ DISPATCH();
+ }
+
+ TARGET(GET_ITER_VIRTUAL) {
+ #if _Py_TAIL_CALL_INTERP
+ int opcode = GET_ITER_VIRTUAL;
+ (void)(opcode);
+ #endif
+ _Py_CODEUNIT* const this_instr = next_instr;
+ (void)this_instr;
+ frame->instr_ptr = next_instr;
+ next_instr += 2;
+ INSTRUCTION_STATS(GET_ITER_VIRTUAL);
+ static_assert(INLINE_CACHE_ENTRIES_GET_ITER == 1, "incorrect cache size");
+ _PyStackRef iterable;
+ _PyStackRef zero;
+ /* Skip 1 cache entry */
+ // _GUARD_ITER_VIRTUAL
+ {
+ iterable = stack_pointer[-1];
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(iterable));
+ if (tp->_tp_iteritem == NULL) {
+ UPDATE_MISS_STATS(GET_ITER);
+ assert(_PyOpcode_Deopt[opcode] == (GET_ITER));
+ JUMP_TO_PREDICTED(GET_ITER);
+ }
+ STAT_INC(GET_ITER, hit);
+ }
+ // _PUSH_TAGGED_ZERO
+ {
+ zero = PyStackRef_TagInt(0);
+ }
+ stack_pointer[0] = zero;
+ stack_pointer += 1;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ DISPATCH();
+ }
+
TARGET(GET_LEN) {
#if _Py_TAIL_CALL_INTERP
int opcode = GET_LEN;
&&TARGET_FOR_ITER_LIST,
&&TARGET_FOR_ITER_RANGE,
&&TARGET_FOR_ITER_TUPLE,
+ &&TARGET_FOR_ITER_VIRTUAL,
+ &&TARGET_GET_ITER_SELF,
+ &&TARGET_GET_ITER_VIRTUAL,
&&TARGET_JUMP_BACKWARD_JIT,
&&TARGET_JUMP_BACKWARD_NO_JIT,
&&TARGET_LOAD_ATTR_CLASS,
&&_unknown_opcode,
&&_unknown_opcode,
&&_unknown_opcode,
- &&_unknown_opcode,
- &&_unknown_opcode,
- &&_unknown_opcode,
&&TARGET_INSTRUMENTED_END_FOR,
&&TARGET_INSTRUMENTED_POP_ITER,
&&TARGET_INSTRUMENTED_END_SEND,
&&TARGET_TRACE_RECORD,
&&TARGET_TRACE_RECORD,
&&TARGET_TRACE_RECORD,
- &&_unknown_opcode,
- &&_unknown_opcode,
- &&_unknown_opcode,
+ &&TARGET_TRACE_RECORD,
+ &&TARGET_TRACE_RECORD,
+ &&TARGET_TRACE_RECORD,
&&_unknown_opcode,
&&_unknown_opcode,
&&_unknown_opcode,
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_FOR_ITER_LIST(TAIL_CALL_PARAMS);
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_FOR_ITER_RANGE(TAIL_CALL_PARAMS);
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_FOR_ITER_TUPLE(TAIL_CALL_PARAMS);
+static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_FOR_ITER_VIRTUAL(TAIL_CALL_PARAMS);
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_AITER(TAIL_CALL_PARAMS);
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_ANEXT(TAIL_CALL_PARAMS);
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_AWAITABLE(TAIL_CALL_PARAMS);
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_ITER(TAIL_CALL_PARAMS);
+static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_ITER_SELF(TAIL_CALL_PARAMS);
+static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_ITER_VIRTUAL(TAIL_CALL_PARAMS);
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_LEN(TAIL_CALL_PARAMS);
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_IMPORT_FROM(TAIL_CALL_PARAMS);
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_IMPORT_NAME(TAIL_CALL_PARAMS);
[FOR_ITER_LIST] = _TAIL_CALL_FOR_ITER_LIST,
[FOR_ITER_RANGE] = _TAIL_CALL_FOR_ITER_RANGE,
[FOR_ITER_TUPLE] = _TAIL_CALL_FOR_ITER_TUPLE,
+ [FOR_ITER_VIRTUAL] = _TAIL_CALL_FOR_ITER_VIRTUAL,
[GET_AITER] = _TAIL_CALL_GET_AITER,
[GET_ANEXT] = _TAIL_CALL_GET_ANEXT,
[GET_AWAITABLE] = _TAIL_CALL_GET_AWAITABLE,
[GET_ITER] = _TAIL_CALL_GET_ITER,
+ [GET_ITER_SELF] = _TAIL_CALL_GET_ITER_SELF,
+ [GET_ITER_VIRTUAL] = _TAIL_CALL_GET_ITER_VIRTUAL,
[GET_LEN] = _TAIL_CALL_GET_LEN,
[IMPORT_FROM] = _TAIL_CALL_IMPORT_FROM,
[IMPORT_NAME] = _TAIL_CALL_IMPORT_NAME,
[125] = _TAIL_CALL_UNKNOWN_OPCODE,
[126] = _TAIL_CALL_UNKNOWN_OPCODE,
[127] = _TAIL_CALL_UNKNOWN_OPCODE,
- [214] = _TAIL_CALL_UNKNOWN_OPCODE,
- [215] = _TAIL_CALL_UNKNOWN_OPCODE,
- [216] = _TAIL_CALL_UNKNOWN_OPCODE,
[217] = _TAIL_CALL_UNKNOWN_OPCODE,
[218] = _TAIL_CALL_UNKNOWN_OPCODE,
[219] = _TAIL_CALL_UNKNOWN_OPCODE,
[FOR_ITER_LIST] = _TAIL_CALL_TRACE_RECORD,
[FOR_ITER_RANGE] = _TAIL_CALL_TRACE_RECORD,
[FOR_ITER_TUPLE] = _TAIL_CALL_TRACE_RECORD,
+ [FOR_ITER_VIRTUAL] = _TAIL_CALL_TRACE_RECORD,
[GET_AITER] = _TAIL_CALL_TRACE_RECORD,
[GET_ANEXT] = _TAIL_CALL_TRACE_RECORD,
[GET_AWAITABLE] = _TAIL_CALL_TRACE_RECORD,
[GET_ITER] = _TAIL_CALL_TRACE_RECORD,
+ [GET_ITER_SELF] = _TAIL_CALL_TRACE_RECORD,
+ [GET_ITER_VIRTUAL] = _TAIL_CALL_TRACE_RECORD,
[GET_LEN] = _TAIL_CALL_TRACE_RECORD,
[IMPORT_FROM] = _TAIL_CALL_TRACE_RECORD,
[IMPORT_NAME] = _TAIL_CALL_TRACE_RECORD,
[125] = _TAIL_CALL_UNKNOWN_OPCODE,
[126] = _TAIL_CALL_UNKNOWN_OPCODE,
[127] = _TAIL_CALL_UNKNOWN_OPCODE,
- [214] = _TAIL_CALL_UNKNOWN_OPCODE,
- [215] = _TAIL_CALL_UNKNOWN_OPCODE,
- [216] = _TAIL_CALL_UNKNOWN_OPCODE,
[217] = _TAIL_CALL_UNKNOWN_OPCODE,
[218] = _TAIL_CALL_UNKNOWN_OPCODE,
[219] = _TAIL_CALL_UNKNOWN_OPCODE,
static PyObject *bytes_iter(PyObject *seq);
+
+static _PyObjectIndexPair
+bytes_iteritem(PyObject *obj, Py_ssize_t index)
+{
+ PyBytesObject *a = _PyBytes_CAST(obj);
+ if (index >= Py_SIZE(a)) {
+ return (_PyObjectIndexPair) { .object = NULL, .index = index };
+ }
+ PyObject *l = _PyLong_FromUnsignedChar((unsigned char)a->ob_sval[index]);
+ return (_PyObjectIndexPair) { .object = l, .index = index + 1 };
+}
+
PyTypeObject PyBytes_Type = {
PyVarObject_HEAD_INIT(&PyType_Type, 0)
"bytes",
bytes_new, /* tp_new */
PyObject_Free, /* tp_free */
.tp_version_tag = _Py_TYPE_VERSION_BYTES,
+ ._tp_iteritem = bytes_iteritem,
};
void
co->co_tlbc->entries[0] = co->co_code_adaptive;
#endif
int entry_point = 0;
- while (entry_point < Py_SIZE(co) &&
- _PyCode_CODE(co)[entry_point].op.code != RESUME) {
+ while (entry_point < Py_SIZE(co)) {
+ if (_PyCode_CODE(co)[entry_point].op.code == RESUME &&
+ (_PyCode_CODE(co)[entry_point].op.arg & RESUME_OPARG_LOCATION_MASK) != RESUME_AT_GEN_EXPR_START
+ ) {
+ break;
+ }
entry_point++;
}
co->_co_firsttraceable = entry_point;
return res;
}
+static _PyObjectIndexPair
+list_iteritem(PyObject *obj, Py_ssize_t index)
+{
+ PyObject *result = list_get_item_ref((PyListObject *)obj, index);
+ return (_PyObjectIndexPair) { .object = result, .index = index + 1 };
+}
+
static PyMappingMethods list_as_mapping = {
list_length,
list_subscript,
PyObject_GC_Del, /* tp_free */
.tp_vectorcall = list_vectorcall,
.tp_version_tag = _Py_TYPE_VERSION_LIST,
+ ._tp_iteritem = list_iteritem,
};
/*********************** List Iterator **************************/
tuple_contains, /* sq_contains */
};
+static _PyObjectIndexPair
+tuple_iteritem(PyObject *obj, Py_ssize_t index)
+{
+ if (index >= PyTuple_GET_SIZE(obj)) {
+ return (_PyObjectIndexPair) { .object = NULL, .index = index };
+ }
+ PyObject *result = PyTuple_GET_ITEM(obj, index);
+ Py_INCREF(result);
+ return (_PyObjectIndexPair) { .object = result, .index = index + 1 };
+}
+
static PyObject*
tuple_subscript(PyObject *op, PyObject* item)
{
PyObject_GC_Del, /* tp_free */
.tp_vectorcall = tuple_vectorcall,
.tp_version_tag = _Py_TYPE_VERSION_TUPLE,
+ ._tp_iteritem = tuple_iteritem,
};
/* The following function breaks the notion that tuples are immutable:
return NULL;
}
+static _PyObjectIndexPair
+unicode_iteritem(PyObject *obj, Py_ssize_t index)
+{
+ if (index >= PyUnicode_GET_LENGTH(obj)) {
+ return (_PyObjectIndexPair) { .object = NULL, .index = index };
+ }
+ const void *data = PyUnicode_DATA(obj);
+ int kind = PyUnicode_KIND(obj);
+ Py_UCS4 ch = PyUnicode_READ(kind, data, index);
+ PyObject *result = unicode_char(ch);
+ index = (result == NULL) ? -1 : index + 1;
+ return (_PyObjectIndexPair) { .object = result, .index = index };
+}
+
void
_PyUnicode_ExactDealloc(PyObject *op)
{
unicode_new, /* tp_new */
PyObject_Free, /* tp_free */
.tp_vectorcall = unicode_vectorcall,
+ ._tp_iteritem = unicode_iteritem,
};
/* Initialize the Unicode implementation */
// Auto-generated by Programs/freeze_test_frozenmain.py
unsigned char M_test_frozenmain[] = {
227,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
- 0,0,0,0,0,243,186,0,0,0,128,0,0,0,93,0,
+ 0,0,0,0,0,243,188,0,0,0,128,0,0,0,93,0,
81,1,72,0,115,0,93,0,81,1,72,4,115,1,92,2,
31,0,81,2,50,1,0,0,0,0,0,0,29,0,92,2,
31,0,81,3,92,0,79,6,0,0,0,0,0,0,0,0,
0,0,29,0,92,1,79,8,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,31,0,50,0,0,0,
0,0,0,0,81,4,42,26,0,0,0,0,0,0,0,0,
- 0,0,115,5,81,7,70,0,68,24,0,0,115,6,92,2,
- 31,0,81,5,92,6,12,0,81,6,92,5,92,6,42,26,
- 0,0,0,0,0,0,0,0,0,0,12,0,48,4,50,1,
- 0,0,0,0,0,0,29,0,74,26,0,0,9,0,28,0,
- 81,1,33,0,41,8,233,0,0,0,0,78,122,18,70,114,
- 111,122,101,110,32,72,101,108,108,111,32,87,111,114,108,100,
- 122,8,115,121,115,46,97,114,103,118,218,6,99,111,110,102,
- 105,103,122,7,99,111,110,102,105,103,32,122,2,58,32,41,
- 5,218,12,112,114,111,103,114,97,109,95,110,97,109,101,218,
- 10,101,120,101,99,117,116,97,98,108,101,218,15,117,115,101,
- 95,101,110,118,105,114,111,110,109,101,110,116,218,17,99,111,
- 110,102,105,103,117,114,101,95,99,95,115,116,100,105,111,218,
- 14,98,117,102,102,101,114,101,100,95,115,116,100,105,111,41,
- 7,218,3,115,121,115,218,17,95,116,101,115,116,105,110,116,
- 101,114,110,97,108,99,97,112,105,218,5,112,114,105,110,116,
- 218,4,97,114,103,118,218,11,103,101,116,95,99,111,110,102,
- 105,103,115,114,3,0,0,0,218,3,107,101,121,169,0,243,
- 0,0,0,0,218,18,116,101,115,116,95,102,114,111,122,101,
- 110,109,97,105,110,46,112,121,218,8,60,109,111,100,117,108,
- 101,62,114,18,0,0,0,1,0,0,0,115,94,0,0,0,
- 241,3,1,1,1,243,8,0,1,11,219,0,24,225,0,5,
- 208,6,26,212,0,27,217,0,5,128,106,144,35,151,40,145,
- 40,212,0,27,216,9,26,215,9,38,210,9,38,211,9,40,
- 168,24,213,9,50,128,6,243,2,6,12,2,128,67,241,14,
- 0,5,10,136,71,144,67,144,53,152,2,152,54,160,35,157,
- 59,152,45,208,10,40,214,4,41,243,15,6,12,2,114,16,
- 0,0,0,
+ 0,0,115,5,81,7,70,0,0,0,68,24,0,0,115,6,
+ 92,2,31,0,81,5,92,6,12,0,81,6,92,5,92,6,
+ 42,26,0,0,0,0,0,0,0,0,0,0,12,0,48,4,
+ 50,1,0,0,0,0,0,0,29,0,74,26,0,0,9,0,
+ 28,0,81,1,33,0,41,8,233,0,0,0,0,78,122,18,
+ 70,114,111,122,101,110,32,72,101,108,108,111,32,87,111,114,
+ 108,100,122,8,115,121,115,46,97,114,103,118,218,6,99,111,
+ 110,102,105,103,122,7,99,111,110,102,105,103,32,122,2,58,
+ 32,41,5,218,12,112,114,111,103,114,97,109,95,110,97,109,
+ 101,218,10,101,120,101,99,117,116,97,98,108,101,218,15,117,
+ 115,101,95,101,110,118,105,114,111,110,109,101,110,116,218,17,
+ 99,111,110,102,105,103,117,114,101,95,99,95,115,116,100,105,
+ 111,218,14,98,117,102,102,101,114,101,100,95,115,116,100,105,
+ 111,41,7,218,3,115,121,115,218,17,95,116,101,115,116,105,
+ 110,116,101,114,110,97,108,99,97,112,105,218,5,112,114,105,
+ 110,116,218,4,97,114,103,118,218,11,103,101,116,95,99,111,
+ 110,102,105,103,115,114,3,0,0,0,218,3,107,101,121,169,
+ 0,243,0,0,0,0,218,18,116,101,115,116,95,102,114,111,
+ 122,101,110,109,97,105,110,46,112,121,218,8,60,109,111,100,
+ 117,108,101,62,114,18,0,0,0,1,0,0,0,115,94,0,
+ 0,0,241,3,1,1,1,243,8,0,1,11,219,0,24,225,
+ 0,5,208,6,26,212,0,27,217,0,5,128,106,144,35,151,
+ 40,145,40,212,0,27,216,9,26,215,9,38,210,9,38,211,
+ 9,40,168,24,213,9,50,128,6,244,2,6,12,2,128,67,
+ 241,14,0,5,10,136,71,144,67,144,53,152,2,152,54,160,
+ 35,157,59,152,45,208,10,40,214,4,41,243,15,6,12,2,
+ 114,16,0,0,0,
};
}
}
- op(_LOAD_BYTECODE, (--)) {
+ replaced op(_LOAD_BYTECODE, (--)) {
#ifdef Py_GIL_DISABLED
if (frame->tlbc_index !=
((_PyThreadStateImpl *)tstate)->tlbc_index) {
}
}
+ op(_GUARD_TYPE, (type/4, owner -- owner)) {
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
+ EXIT_IF(tp != (PyTypeObject *)type);
+ }
+
op(_CHECK_MANAGED_OBJECT_HAS_VALUES, (owner -- owner)) {
PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
assert(Py_TYPE(owner_o)->tp_dictoffset < 0);
values_or_none = PyStackRef_FromPyObjectSteal(values_or_none_o);
}
- inst(GET_ITER, (iterable -- iter, index_or_null)) {
- #ifdef Py_STATS
- _Py_GatherStats_GetIter(iterable);
- #endif
+ family(GET_ITER, INLINE_CACHE_ENTRIES_GET_ITER) = {
+ GET_ITER_SELF,
+ GET_ITER_VIRTUAL,
+ };
+
+ specializing op(_SPECIALIZE_GET_ITER, (counter/1, iterable -- iterable)) {
+ #if ENABLE_SPECIALIZATION
+ if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
+ next_instr = this_instr;
+ _Py_Specialize_GetIter(iterable, next_instr);
+ DISPATCH_SAME_OPARG();
+ }
+ OPCODE_DEFERRED_INC(GET_ITER);
+ ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
+ #endif /* ENABLE_SPECIALIZATION */
+ }
+
+ op(_GET_ITER, (iterable -- iter, index_or_null)) {
_PyStackRef result = _PyEval_GetIter(iterable, &index_or_null, oparg);
DEAD(iterable);
ERROR_IF(PyStackRef_IsError(result));
iter = result;
}
+ macro(GET_ITER) =
+ _RECORD_TOS_TYPE +
+ _SPECIALIZE_GET_ITER +
+ _GET_ITER;
+
+ op(_GUARD_ITERATOR, (iterable -- iterable)) {
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(iterable));
+ EXIT_IF(tp->tp_iter != PyObject_SelfIter);
+ STAT_INC(GET_ITER, hit);
+ }
+
+ macro(GET_ITER_SELF) =
+ _RECORD_TOS_TYPE +
+ unused/1 +
+ _GUARD_ITERATOR +
+ PUSH_NULL;
+
+ op(_GUARD_ITER_VIRTUAL, (iterable -- iterable)) {
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(iterable));
+ EXIT_IF(tp->_tp_iteritem == NULL);
+ STAT_INC(GET_ITER, hit);
+ }
+
+ op(_PUSH_TAGGED_ZERO, ( -- zero)) {
+ zero = PyStackRef_TagInt(0);
+ }
+
+ macro(GET_ITER_VIRTUAL) =
+ _RECORD_TOS_TYPE +
+ unused/1 +
+ _GUARD_ITER_VIRTUAL +
+ _PUSH_TAGGED_ZERO;
+
+ op(_GET_ITER_TRAD, (iterable -- iter, index_or_null)) {
+ PyObject *iter_o = PyObject_GetIter(PyStackRef_AsPyObjectBorrow(iterable));
+ PyStackRef_CLOSE(iterable);
+ ERROR_IF(iter_o == NULL);
+ iter = PyStackRef_FromPyObjectSteal(iter_o);
+ index_or_null = PyStackRef_NULL;
+ }
+
// Most members of this family are "secretly" super-instructions.
// When the loop is exhausted, they jump, and the jump target is
// always END_FOR, which pops two values off the stack.
FOR_ITER_TUPLE,
FOR_ITER_RANGE,
FOR_ITER_GEN,
+ FOR_ITER_VIRTUAL,
};
specializing op(_SPECIALIZE_FOR_ITER, (counter/1, iter, null_or_index -- iter, null_or_index)) {
next = item;
}
+ macro(FOR_ITER) = _SPECIALIZE_FOR_ITER + _FOR_ITER;
+
op(_FOR_ITER_TIER_TWO, (iter, null_or_index -- iter, null_or_index, next)) {
_PyStackRef item = _PyForIter_VirtualIteratorNext(tstate, frame, iter, &null_or_index);
if (!PyStackRef_IsValid(item)) {
next = item;
}
+ op(_GUARD_NOS_ITER_VIRTUAL, (iter, null_or_index -- iter, null_or_index)) {
+ PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
+ EXIT_IF(Py_TYPE(iter_o)->_tp_iteritem == NULL);
+ }
- macro(FOR_ITER) = _SPECIALIZE_FOR_ITER + _FOR_ITER;
+ replaced op(_FOR_ITER_VIRTUAL, (iter, null_or_index -- iter, null_or_index, next)) {
+ PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
+ Py_ssize_t index = PyStackRef_UntagInt(null_or_index);
+ _PyObjectIndexPair next_index = Py_TYPE(iter_o)->_tp_iteritem(iter_o, index);
+ PyObject *next_o = next_index.object;
+ index = next_index.index;
+ if (next_o == NULL) {
+ if (index < 0) {
+ ERROR_NO_POP();
+ }
+ // Jump forward by oparg and skip the following END_FOR
+ JUMPBY(oparg + 1);
+ DISPATCH();
+ }
+ null_or_index = PyStackRef_TagInt(index);
+ next = PyStackRef_FromPyObjectSteal(next_o);
+ }
+ macro(FOR_ITER_VIRTUAL) =
+ unused/1 + // Skip over the counter
+ _GUARD_NOS_ITER_VIRTUAL +
+ _FOR_ITER_VIRTUAL;
+
+ op(_FOR_ITER_VIRTUAL_TIER_TWO, (iter, null_or_index -- iter, null_or_index, next)) {
+ PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
+ Py_ssize_t index = PyStackRef_UntagInt(null_or_index);
+ _PyObjectIndexPair next_index = Py_TYPE(iter_o)->_tp_iteritem(iter_o, index);
+ PyObject *next_o = next_index.object;
+ index = next_index.index;
+ if (next_o == NULL) {
+ if (index < 0) {
+ ERROR_NO_POP();
+ }
+ /* iterator ended normally */
+ /* The translator sets the deopt target just past the matching END_FOR */
+ EXIT_IF(true);
+ }
+ next = PyStackRef_FromPyObjectSteal(next_o);
+ null_or_index = PyStackRef_TagInt(index);
+ }
inst(INSTRUMENTED_FOR_ITER, (unused/1, iter, null_or_index -- iter, null_or_index, next)) {
_PyStackRef item = _PyForIter_VirtualIteratorNext(tstate, frame, iter, &null_or_index);
_PyEval_GetIter(_PyStackRef iterable, _PyStackRef *index_or_null, int yield_from)
{
PyTypeObject *tp = PyStackRef_TYPE(iterable);
- if (tp == &PyTuple_Type || tp == &PyList_Type) {
+ if (tp->_tp_iteritem != NULL) {
/* Leave iterable on stack and pushed tagged 0 */
*index_or_null = PyStackRef_TagInt(0);
return iterable;
return value;
}
-static _PyStackRef
-foriter_next(PyObject *seq, _PyStackRef index)
-{
- assert(PyStackRef_IsTaggedInt(index));
- assert(PyTuple_CheckExact(seq) || PyList_CheckExact(seq));
- intptr_t i = PyStackRef_UntagInt(index);
- if (PyTuple_CheckExact(seq)) {
- size_t size = PyTuple_GET_SIZE(seq);
- if ((size_t)i >= size) {
- return PyStackRef_NULL;
- }
- return PyStackRef_FromPyObjectNew(PyTuple_GET_ITEM(seq, i));
- }
- PyObject *item = _PyList_GetItemRef((PyListObject *)seq, i);
- if (item == NULL) {
- return PyStackRef_NULL;
- }
- return PyStackRef_FromPyObjectSteal(item);
-}
-
_PyStackRef _PyForIter_VirtualIteratorNext(PyThreadState* tstate, _PyInterpreterFrame* frame, _PyStackRef iter, _PyStackRef* index_ptr)
{
PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
_PyStackRef index = *index_ptr;
if (PyStackRef_IsTaggedInt(index)) {
- *index_ptr = PyStackRef_IncrementTaggedIntNoOverflow(index);
- return foriter_next(iter_o, index);
- }
- PyObject *next_o = (*Py_TYPE(iter_o)->tp_iternext)(iter_o);
- if (next_o == NULL) {
+ intptr_t i = PyStackRef_UntagInt(index);
+ assert(i >= 0);
+ _PyObjectIndexPair next_index = Py_TYPE(iter_o)->_tp_iteritem(iter_o, i);
+ i = next_index.index;
+ PyObject *next = next_index.object;
+ if (next == NULL) {
+ return i < 0 ? PyStackRef_ERROR : PyStackRef_NULL;
+ }
+ *index_ptr = PyStackRef_TagInt(i);
+ return PyStackRef_FromPyObjectSteal(next);
+ }
+ PyObject *next = (*Py_TYPE(iter_o)->tp_iternext)(iter_o);
+ if (next == NULL) {
if (_PyErr_Occurred(tstate)) {
if (_PyErr_ExceptionMatches(tstate, PyExc_StopIteration)) {
_PyEval_MonitorRaise(tstate, frame, frame->instr_ptr);
}
return PyStackRef_NULL;
}
- return PyStackRef_FromPyObjectSteal(next_o);
+ return PyStackRef_FromPyObjectSteal(next);
}
/* Check if a 'cls' provides the given special method. */
{
NEW_JUMP_TARGET_LABEL(c, handler);
- /* Insert SETUP_CLEANUP just before RESUME */
+ /* Insert SETUP_CLEANUP just after the initial RETURN_GENERATOR; POP_TOP */
instr_sequence *seq = INSTR_SEQUENCE(c);
int resume = 0;
- while (_PyInstructionSequence_GetInstruction(seq, resume).i_opcode != RESUME) {
+ while (_PyInstructionSequence_GetInstruction(seq, resume).i_opcode != RETURN_GENERATOR) {
resume++;
+ assert(resume < seq->s_used);
}
+ resume++;
+ assert(_PyInstructionSequence_GetInstruction(seq, resume).i_opcode == POP_TOP);
+ resume++;
+ assert(resume < seq->s_used);
RETURN_IF_ERROR(
_PyInstructionSequence_InsertInstruction(
seq, resume,
RETURN_IF_ERROR(
_PyInstructionSequence_InsertInstruction(
INSTR_SEQUENCE(c), 0,
- LOAD_FAST, 0, LOC(outermost->iter)));
+ RESUME, RESUME_AT_GEN_EXPR_START, NO_LOCATION));
RETURN_IF_ERROR(
_PyInstructionSequence_InsertInstruction(
INSTR_SEQUENCE(c), 1,
+ LOAD_FAST, 0, LOC(outermost->iter)));
+ RETURN_IF_ERROR(
+ _PyInstructionSequence_InsertInstruction(
+ INSTR_SEQUENCE(c), 2,
outermost->is_async ? GET_AITER : GET_ITER,
0, LOC(outermost->iter)));
iter_state = ITERATOR_ON_STACK;
break;
}
- /* _LOAD_BYTECODE is not a viable micro-op for tier 2 because it uses the 'this_instr' variable */
+ /* _LOAD_BYTECODE is not a viable micro-op for tier 2 because it is replaced */
case _RESUME_CHECK_r00: {
CHECK_CURRENT_CACHED_VALUES(0);
break;
}
+ case _GUARD_TYPE_r01: {
+ CHECK_CURRENT_CACHED_VALUES(0);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef owner;
+ owner = stack_pointer[-1];
+ PyObject *type = (PyObject *)CURRENT_OPERAND0_64();
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
+ if (tp != (PyTypeObject *)type) {
+ UOP_STAT_INC(uopcode, miss);
+ SET_CURRENT_CACHED_VALUES(0);
+ JUMP_TO_JUMP_TARGET();
+ }
+ _tos_cache0 = owner;
+ SET_CURRENT_CACHED_VALUES(1);
+ stack_pointer += -1;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
+ case _GUARD_TYPE_r11: {
+ CHECK_CURRENT_CACHED_VALUES(1);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef owner;
+ _PyStackRef _stack_item_0 = _tos_cache0;
+ owner = _stack_item_0;
+ PyObject *type = (PyObject *)CURRENT_OPERAND0_64();
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
+ if (tp != (PyTypeObject *)type) {
+ UOP_STAT_INC(uopcode, miss);
+ _tos_cache0 = owner;
+ SET_CURRENT_CACHED_VALUES(1);
+ JUMP_TO_JUMP_TARGET();
+ }
+ _tos_cache0 = owner;
+ SET_CURRENT_CACHED_VALUES(1);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
+ case _GUARD_TYPE_r22: {
+ CHECK_CURRENT_CACHED_VALUES(2);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef owner;
+ _PyStackRef _stack_item_0 = _tos_cache0;
+ _PyStackRef _stack_item_1 = _tos_cache1;
+ owner = _stack_item_1;
+ PyObject *type = (PyObject *)CURRENT_OPERAND0_64();
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
+ if (tp != (PyTypeObject *)type) {
+ UOP_STAT_INC(uopcode, miss);
+ _tos_cache1 = owner;
+ _tos_cache0 = _stack_item_0;
+ SET_CURRENT_CACHED_VALUES(2);
+ JUMP_TO_JUMP_TARGET();
+ }
+ _tos_cache1 = owner;
+ _tos_cache0 = _stack_item_0;
+ SET_CURRENT_CACHED_VALUES(2);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
+ case _GUARD_TYPE_r33: {
+ CHECK_CURRENT_CACHED_VALUES(3);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef owner;
+ _PyStackRef _stack_item_0 = _tos_cache0;
+ _PyStackRef _stack_item_1 = _tos_cache1;
+ _PyStackRef _stack_item_2 = _tos_cache2;
+ owner = _stack_item_2;
+ PyObject *type = (PyObject *)CURRENT_OPERAND0_64();
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
+ if (tp != (PyTypeObject *)type) {
+ UOP_STAT_INC(uopcode, miss);
+ _tos_cache2 = owner;
+ _tos_cache1 = _stack_item_1;
+ _tos_cache0 = _stack_item_0;
+ SET_CURRENT_CACHED_VALUES(3);
+ JUMP_TO_JUMP_TARGET();
+ }
+ _tos_cache2 = owner;
+ _tos_cache1 = _stack_item_1;
+ _tos_cache0 = _stack_item_0;
+ SET_CURRENT_CACHED_VALUES(3);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
case _CHECK_MANAGED_OBJECT_HAS_VALUES_r01: {
CHECK_CURRENT_CACHED_VALUES(0);
assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
_PyStackRef _stack_item_0 = _tos_cache0;
oparg = CURRENT_OPARG();
iterable = _stack_item_0;
- #ifdef Py_STATS
- _Py_GatherStats_GetIter(iterable);
- #endif
stack_pointer[0] = iterable;
stack_pointer += 1;
ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
break;
}
+ case _GUARD_ITERATOR_r01: {
+ CHECK_CURRENT_CACHED_VALUES(0);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef iterable;
+ iterable = stack_pointer[-1];
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(iterable));
+ if (tp->tp_iter != PyObject_SelfIter) {
+ UOP_STAT_INC(uopcode, miss);
+ SET_CURRENT_CACHED_VALUES(0);
+ JUMP_TO_JUMP_TARGET();
+ }
+ STAT_INC(GET_ITER, hit);
+ _tos_cache0 = iterable;
+ SET_CURRENT_CACHED_VALUES(1);
+ stack_pointer += -1;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
+ case _GUARD_ITERATOR_r11: {
+ CHECK_CURRENT_CACHED_VALUES(1);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef iterable;
+ _PyStackRef _stack_item_0 = _tos_cache0;
+ iterable = _stack_item_0;
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(iterable));
+ if (tp->tp_iter != PyObject_SelfIter) {
+ UOP_STAT_INC(uopcode, miss);
+ _tos_cache0 = iterable;
+ SET_CURRENT_CACHED_VALUES(1);
+ JUMP_TO_JUMP_TARGET();
+ }
+ STAT_INC(GET_ITER, hit);
+ _tos_cache0 = iterable;
+ SET_CURRENT_CACHED_VALUES(1);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
+ case _GUARD_ITERATOR_r22: {
+ CHECK_CURRENT_CACHED_VALUES(2);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef iterable;
+ _PyStackRef _stack_item_0 = _tos_cache0;
+ _PyStackRef _stack_item_1 = _tos_cache1;
+ iterable = _stack_item_1;
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(iterable));
+ if (tp->tp_iter != PyObject_SelfIter) {
+ UOP_STAT_INC(uopcode, miss);
+ _tos_cache1 = iterable;
+ _tos_cache0 = _stack_item_0;
+ SET_CURRENT_CACHED_VALUES(2);
+ JUMP_TO_JUMP_TARGET();
+ }
+ STAT_INC(GET_ITER, hit);
+ _tos_cache1 = iterable;
+ _tos_cache0 = _stack_item_0;
+ SET_CURRENT_CACHED_VALUES(2);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
+ case _GUARD_ITERATOR_r33: {
+ CHECK_CURRENT_CACHED_VALUES(3);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef iterable;
+ _PyStackRef _stack_item_0 = _tos_cache0;
+ _PyStackRef _stack_item_1 = _tos_cache1;
+ _PyStackRef _stack_item_2 = _tos_cache2;
+ iterable = _stack_item_2;
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(iterable));
+ if (tp->tp_iter != PyObject_SelfIter) {
+ UOP_STAT_INC(uopcode, miss);
+ _tos_cache2 = iterable;
+ _tos_cache1 = _stack_item_1;
+ _tos_cache0 = _stack_item_0;
+ SET_CURRENT_CACHED_VALUES(3);
+ JUMP_TO_JUMP_TARGET();
+ }
+ STAT_INC(GET_ITER, hit);
+ _tos_cache2 = iterable;
+ _tos_cache1 = _stack_item_1;
+ _tos_cache0 = _stack_item_0;
+ SET_CURRENT_CACHED_VALUES(3);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
+ case _GUARD_ITER_VIRTUAL_r01: {
+ CHECK_CURRENT_CACHED_VALUES(0);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef iterable;
+ iterable = stack_pointer[-1];
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(iterable));
+ if (tp->_tp_iteritem == NULL) {
+ UOP_STAT_INC(uopcode, miss);
+ SET_CURRENT_CACHED_VALUES(0);
+ JUMP_TO_JUMP_TARGET();
+ }
+ STAT_INC(GET_ITER, hit);
+ _tos_cache0 = iterable;
+ SET_CURRENT_CACHED_VALUES(1);
+ stack_pointer += -1;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
+ case _GUARD_ITER_VIRTUAL_r11: {
+ CHECK_CURRENT_CACHED_VALUES(1);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef iterable;
+ _PyStackRef _stack_item_0 = _tos_cache0;
+ iterable = _stack_item_0;
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(iterable));
+ if (tp->_tp_iteritem == NULL) {
+ UOP_STAT_INC(uopcode, miss);
+ _tos_cache0 = iterable;
+ SET_CURRENT_CACHED_VALUES(1);
+ JUMP_TO_JUMP_TARGET();
+ }
+ STAT_INC(GET_ITER, hit);
+ _tos_cache0 = iterable;
+ SET_CURRENT_CACHED_VALUES(1);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
+ case _GUARD_ITER_VIRTUAL_r22: {
+ CHECK_CURRENT_CACHED_VALUES(2);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef iterable;
+ _PyStackRef _stack_item_0 = _tos_cache0;
+ _PyStackRef _stack_item_1 = _tos_cache1;
+ iterable = _stack_item_1;
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(iterable));
+ if (tp->_tp_iteritem == NULL) {
+ UOP_STAT_INC(uopcode, miss);
+ _tos_cache1 = iterable;
+ _tos_cache0 = _stack_item_0;
+ SET_CURRENT_CACHED_VALUES(2);
+ JUMP_TO_JUMP_TARGET();
+ }
+ STAT_INC(GET_ITER, hit);
+ _tos_cache1 = iterable;
+ _tos_cache0 = _stack_item_0;
+ SET_CURRENT_CACHED_VALUES(2);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
+ case _GUARD_ITER_VIRTUAL_r33: {
+ CHECK_CURRENT_CACHED_VALUES(3);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef iterable;
+ _PyStackRef _stack_item_0 = _tos_cache0;
+ _PyStackRef _stack_item_1 = _tos_cache1;
+ _PyStackRef _stack_item_2 = _tos_cache2;
+ iterable = _stack_item_2;
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(iterable));
+ if (tp->_tp_iteritem == NULL) {
+ UOP_STAT_INC(uopcode, miss);
+ _tos_cache2 = iterable;
+ _tos_cache1 = _stack_item_1;
+ _tos_cache0 = _stack_item_0;
+ SET_CURRENT_CACHED_VALUES(3);
+ JUMP_TO_JUMP_TARGET();
+ }
+ STAT_INC(GET_ITER, hit);
+ _tos_cache2 = iterable;
+ _tos_cache1 = _stack_item_1;
+ _tos_cache0 = _stack_item_0;
+ SET_CURRENT_CACHED_VALUES(3);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
+ case _PUSH_TAGGED_ZERO_r01: {
+ CHECK_CURRENT_CACHED_VALUES(0);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef zero;
+ zero = PyStackRef_TagInt(0);
+ _tos_cache0 = zero;
+ SET_CURRENT_CACHED_VALUES(1);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
+ case _PUSH_TAGGED_ZERO_r12: {
+ CHECK_CURRENT_CACHED_VALUES(1);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef zero;
+ _PyStackRef _stack_item_0 = _tos_cache0;
+ zero = PyStackRef_TagInt(0);
+ _tos_cache1 = zero;
+ _tos_cache0 = _stack_item_0;
+ SET_CURRENT_CACHED_VALUES(2);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
+ case _PUSH_TAGGED_ZERO_r23: {
+ CHECK_CURRENT_CACHED_VALUES(2);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef zero;
+ _PyStackRef _stack_item_0 = _tos_cache0;
+ _PyStackRef _stack_item_1 = _tos_cache1;
+ zero = PyStackRef_TagInt(0);
+ _tos_cache2 = zero;
+ _tos_cache1 = _stack_item_1;
+ _tos_cache0 = _stack_item_0;
+ SET_CURRENT_CACHED_VALUES(3);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
+ case _GET_ITER_TRAD_r12: {
+ CHECK_CURRENT_CACHED_VALUES(1);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef iterable;
+ _PyStackRef iter;
+ _PyStackRef index_or_null;
+ _PyStackRef _stack_item_0 = _tos_cache0;
+ iterable = _stack_item_0;
+ stack_pointer[0] = iterable;
+ stack_pointer += 1;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ _PyFrame_SetStackPointer(frame, stack_pointer);
+ PyObject *iter_o = PyObject_GetIter(PyStackRef_AsPyObjectBorrow(iterable));
+ stack_pointer = _PyFrame_GetStackPointer(frame);
+ stack_pointer += -1;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ _PyFrame_SetStackPointer(frame, stack_pointer);
+ PyStackRef_CLOSE(iterable);
+ stack_pointer = _PyFrame_GetStackPointer(frame);
+ if (iter_o == NULL) {
+ SET_CURRENT_CACHED_VALUES(0);
+ JUMP_TO_ERROR();
+ }
+ iter = PyStackRef_FromPyObjectSteal(iter_o);
+ index_or_null = PyStackRef_NULL;
+ _tos_cache1 = index_or_null;
+ _tos_cache0 = iter;
+ _tos_cache2 = PyStackRef_ZERO_BITS;
+ SET_CURRENT_CACHED_VALUES(2);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
/* _FOR_ITER is not a viable micro-op for tier 2 because it is replaced */
case _FOR_ITER_TIER_TWO_r23: {
break;
}
+ case _GUARD_NOS_ITER_VIRTUAL_r02: {
+ CHECK_CURRENT_CACHED_VALUES(0);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef iter;
+ iter = stack_pointer[-2];
+ PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
+ if (Py_TYPE(iter_o)->_tp_iteritem == NULL) {
+ UOP_STAT_INC(uopcode, miss);
+ SET_CURRENT_CACHED_VALUES(0);
+ JUMP_TO_JUMP_TARGET();
+ }
+ _tos_cache1 = stack_pointer[-1];
+ _tos_cache0 = iter;
+ SET_CURRENT_CACHED_VALUES(2);
+ stack_pointer += -2;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
+ case _GUARD_NOS_ITER_VIRTUAL_r12: {
+ CHECK_CURRENT_CACHED_VALUES(1);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef iter;
+ _PyStackRef _stack_item_0 = _tos_cache0;
+ iter = stack_pointer[-1];
+ PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
+ if (Py_TYPE(iter_o)->_tp_iteritem == NULL) {
+ UOP_STAT_INC(uopcode, miss);
+ _tos_cache0 = _stack_item_0;
+ SET_CURRENT_CACHED_VALUES(1);
+ JUMP_TO_JUMP_TARGET();
+ }
+ _tos_cache1 = _stack_item_0;
+ _tos_cache0 = iter;
+ SET_CURRENT_CACHED_VALUES(2);
+ stack_pointer += -1;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
+ case _GUARD_NOS_ITER_VIRTUAL_r22: {
+ CHECK_CURRENT_CACHED_VALUES(2);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef iter;
+ _PyStackRef _stack_item_0 = _tos_cache0;
+ _PyStackRef _stack_item_1 = _tos_cache1;
+ iter = _stack_item_0;
+ PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
+ if (Py_TYPE(iter_o)->_tp_iteritem == NULL) {
+ UOP_STAT_INC(uopcode, miss);
+ _tos_cache1 = _stack_item_1;
+ _tos_cache0 = iter;
+ SET_CURRENT_CACHED_VALUES(2);
+ JUMP_TO_JUMP_TARGET();
+ }
+ _tos_cache1 = _stack_item_1;
+ _tos_cache0 = iter;
+ SET_CURRENT_CACHED_VALUES(2);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
+ case _GUARD_NOS_ITER_VIRTUAL_r33: {
+ CHECK_CURRENT_CACHED_VALUES(3);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef iter;
+ _PyStackRef _stack_item_0 = _tos_cache0;
+ _PyStackRef _stack_item_1 = _tos_cache1;
+ _PyStackRef _stack_item_2 = _tos_cache2;
+ iter = _stack_item_1;
+ PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
+ if (Py_TYPE(iter_o)->_tp_iteritem == NULL) {
+ UOP_STAT_INC(uopcode, miss);
+ _tos_cache2 = _stack_item_2;
+ _tos_cache1 = iter;
+ _tos_cache0 = _stack_item_0;
+ SET_CURRENT_CACHED_VALUES(3);
+ JUMP_TO_JUMP_TARGET();
+ }
+ _tos_cache2 = _stack_item_2;
+ _tos_cache1 = iter;
+ _tos_cache0 = _stack_item_0;
+ SET_CURRENT_CACHED_VALUES(3);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
+ /* _FOR_ITER_VIRTUAL is not a viable micro-op for tier 2 because it is replaced */
+
+ case _FOR_ITER_VIRTUAL_TIER_TWO_r23: {
+ CHECK_CURRENT_CACHED_VALUES(2);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ _PyStackRef null_or_index;
+ _PyStackRef iter;
+ _PyStackRef next;
+ _PyStackRef _stack_item_0 = _tos_cache0;
+ _PyStackRef _stack_item_1 = _tos_cache1;
+ null_or_index = _stack_item_1;
+ iter = _stack_item_0;
+ PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
+ Py_ssize_t index = PyStackRef_UntagInt(null_or_index);
+ stack_pointer[0] = iter;
+ stack_pointer[1] = null_or_index;
+ stack_pointer += 2;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ _PyFrame_SetStackPointer(frame, stack_pointer);
+ _PyObjectIndexPair next_index = Py_TYPE(iter_o)->_tp_iteritem(iter_o, index);
+ stack_pointer = _PyFrame_GetStackPointer(frame);
+ PyObject *next_o = next_index.object;
+ index = next_index.index;
+ if (next_o == NULL) {
+ if (index < 0) {
+ SET_CURRENT_CACHED_VALUES(0);
+ JUMP_TO_ERROR();
+ }
+ if (true) {
+ UOP_STAT_INC(uopcode, miss);
+ _tos_cache1 = null_or_index;
+ _tos_cache0 = iter;
+ SET_CURRENT_CACHED_VALUES(2);
+ stack_pointer += -2;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ JUMP_TO_JUMP_TARGET();
+ }
+ }
+ next = PyStackRef_FromPyObjectSteal(next_o);
+ null_or_index = PyStackRef_TagInt(index);
+ _tos_cache2 = next;
+ _tos_cache1 = null_or_index;
+ _tos_cache0 = iter;
+ SET_CURRENT_CACHED_VALUES(3);
+ stack_pointer += -2;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+ break;
+ }
+
/* _INSTRUMENTED_FOR_ITER is not a viable micro-op for tier 2 because it is instrumented */
case _ITER_CHECK_LIST_r02: {
}
else if (instr->i_opcode == RESUME) {
instr->i_except = handler;
- if (instr->i_oparg != RESUME_AT_FUNC_START) {
+ if (instr->i_oparg != RESUME_AT_FUNC_START && instr->i_oparg != RESUME_AT_GEN_EXPR_START) {
assert(last_yield_except_depth >= 0);
if (last_yield_except_depth == 1) {
instr->i_oparg |= RESUME_OPARG_DEPTH1_MASK;
DISPATCH();
}
+ TARGET(FOR_ITER_VIRTUAL) {
+ #if _Py_TAIL_CALL_INTERP
+ int opcode = FOR_ITER_VIRTUAL;
+ (void)(opcode);
+ #endif
+ _Py_CODEUNIT* const this_instr = next_instr;
+ (void)this_instr;
+ frame->instr_ptr = next_instr;
+ next_instr += 2;
+ INSTRUCTION_STATS(FOR_ITER_VIRTUAL);
+ static_assert(INLINE_CACHE_ENTRIES_FOR_ITER == 1, "incorrect cache size");
+ _PyStackRef iter;
+ _PyStackRef null_or_index;
+ _PyStackRef next;
+ /* Skip 1 cache entry */
+ // _GUARD_NOS_ITER_VIRTUAL
+ {
+ iter = stack_pointer[-2];
+ PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
+ if (Py_TYPE(iter_o)->_tp_iteritem == NULL) {
+ UPDATE_MISS_STATS(FOR_ITER);
+ assert(_PyOpcode_Deopt[opcode] == (FOR_ITER));
+ JUMP_TO_PREDICTED(FOR_ITER);
+ }
+ }
+ // _FOR_ITER_VIRTUAL
+ {
+ null_or_index = stack_pointer[-1];
+ PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
+ Py_ssize_t index = PyStackRef_UntagInt(null_or_index);
+ _PyFrame_SetStackPointer(frame, stack_pointer);
+ _PyObjectIndexPair next_index = Py_TYPE(iter_o)->_tp_iteritem(iter_o, index);
+ stack_pointer = _PyFrame_GetStackPointer(frame);
+ PyObject *next_o = next_index.object;
+ index = next_index.index;
+ if (next_o == NULL) {
+ if (index < 0) {
+ JUMP_TO_LABEL(error);
+ }
+ JUMPBY(oparg + 1);
+ DISPATCH();
+ }
+ null_or_index = PyStackRef_TagInt(index);
+ next = PyStackRef_FromPyObjectSteal(next_o);
+ }
+ stack_pointer[-1] = null_or_index;
+ stack_pointer[0] = next;
+ stack_pointer += 1;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ DISPATCH();
+ }
+
TARGET(GET_AITER) {
#if _Py_TAIL_CALL_INTERP
int opcode = GET_AITER;
(void)(opcode);
#endif
frame->instr_ptr = next_instr;
- next_instr += 1;
+ next_instr += 2;
INSTRUCTION_STATS(GET_ITER);
+ PREDICTED_GET_ITER:;
+ _Py_CODEUNIT* const this_instr = next_instr - 2;
+ (void)this_instr;
_PyStackRef iterable;
_PyStackRef iter;
_PyStackRef index_or_null;
- iterable = stack_pointer[-1];
- #ifdef Py_STATS
- _Py_GatherStats_GetIter(iterable);
- #endif
- _PyFrame_SetStackPointer(frame, stack_pointer);
- _PyStackRef result = _PyEval_GetIter(iterable, &index_or_null, oparg);
- stack_pointer = _PyFrame_GetStackPointer(frame);
- if (PyStackRef_IsError(result)) {
- JUMP_TO_LABEL(pop_1_error);
+ // _SPECIALIZE_GET_ITER
+ {
+ iterable = stack_pointer[-1];
+ uint16_t counter = read_u16(&this_instr[1].cache);
+ (void)counter;
+ #if ENABLE_SPECIALIZATION
+ if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
+ next_instr = this_instr;
+ _PyFrame_SetStackPointer(frame, stack_pointer);
+ _Py_Specialize_GetIter(iterable, next_instr);
+ stack_pointer = _PyFrame_GetStackPointer(frame);
+ DISPATCH_SAME_OPARG();
+ }
+ OPCODE_DEFERRED_INC(GET_ITER);
+ ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
+ #endif /* ENABLE_SPECIALIZATION */
+ }
+ // _GET_ITER
+ {
+ _PyFrame_SetStackPointer(frame, stack_pointer);
+ _PyStackRef result = _PyEval_GetIter(iterable, &index_or_null, oparg);
+ stack_pointer = _PyFrame_GetStackPointer(frame);
+ if (PyStackRef_IsError(result)) {
+ JUMP_TO_LABEL(pop_1_error);
+ }
+ iter = result;
}
- iter = result;
stack_pointer[-1] = iter;
stack_pointer[0] = index_or_null;
stack_pointer += 1;
DISPATCH();
}
+ TARGET(GET_ITER_SELF) {
+ #if _Py_TAIL_CALL_INTERP
+ int opcode = GET_ITER_SELF;
+ (void)(opcode);
+ #endif
+ _Py_CODEUNIT* const this_instr = next_instr;
+ (void)this_instr;
+ frame->instr_ptr = next_instr;
+ next_instr += 2;
+ INSTRUCTION_STATS(GET_ITER_SELF);
+ static_assert(INLINE_CACHE_ENTRIES_GET_ITER == 1, "incorrect cache size");
+ _PyStackRef iterable;
+ _PyStackRef res;
+ /* Skip 1 cache entry */
+ // _GUARD_ITERATOR
+ {
+ iterable = stack_pointer[-1];
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(iterable));
+ if (tp->tp_iter != PyObject_SelfIter) {
+ UPDATE_MISS_STATS(GET_ITER);
+ assert(_PyOpcode_Deopt[opcode] == (GET_ITER));
+ JUMP_TO_PREDICTED(GET_ITER);
+ }
+ STAT_INC(GET_ITER, hit);
+ }
+ // _PUSH_NULL
+ {
+ res = PyStackRef_NULL;
+ }
+ stack_pointer[0] = res;
+ stack_pointer += 1;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ DISPATCH();
+ }
+
+ TARGET(GET_ITER_VIRTUAL) {
+ #if _Py_TAIL_CALL_INTERP
+ int opcode = GET_ITER_VIRTUAL;
+ (void)(opcode);
+ #endif
+ _Py_CODEUNIT* const this_instr = next_instr;
+ (void)this_instr;
+ frame->instr_ptr = next_instr;
+ next_instr += 2;
+ INSTRUCTION_STATS(GET_ITER_VIRTUAL);
+ static_assert(INLINE_CACHE_ENTRIES_GET_ITER == 1, "incorrect cache size");
+ _PyStackRef iterable;
+ _PyStackRef zero;
+ /* Skip 1 cache entry */
+ // _GUARD_ITER_VIRTUAL
+ {
+ iterable = stack_pointer[-1];
+ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(iterable));
+ if (tp->_tp_iteritem == NULL) {
+ UPDATE_MISS_STATS(GET_ITER);
+ assert(_PyOpcode_Deopt[opcode] == (GET_ITER));
+ JUMP_TO_PREDICTED(GET_ITER);
+ }
+ STAT_INC(GET_ITER, hit);
+ }
+ // _PUSH_TAGGED_ZERO
+ {
+ zero = PyStackRef_TagInt(0);
+ }
+ stack_pointer[0] = zero;
+ stack_pointer += 1;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ DISPATCH();
+ }
+
TARGET(GET_LEN) {
#if _Py_TAIL_CALL_INTERP
int opcode = GET_LEN;
&&TARGET_FOR_ITER_LIST,
&&TARGET_FOR_ITER_RANGE,
&&TARGET_FOR_ITER_TUPLE,
+ &&TARGET_FOR_ITER_VIRTUAL,
+ &&TARGET_GET_ITER_SELF,
+ &&TARGET_GET_ITER_VIRTUAL,
&&TARGET_JUMP_BACKWARD_JIT,
&&TARGET_JUMP_BACKWARD_NO_JIT,
&&TARGET_LOAD_ATTR_CLASS,
&&_unknown_opcode,
&&_unknown_opcode,
&&_unknown_opcode,
- &&_unknown_opcode,
- &&_unknown_opcode,
- &&_unknown_opcode,
&&TARGET_INSTRUMENTED_END_FOR,
&&TARGET_INSTRUMENTED_POP_ITER,
&&TARGET_INSTRUMENTED_END_SEND,
&&TARGET_TRACE_RECORD,
&&TARGET_TRACE_RECORD,
&&TARGET_TRACE_RECORD,
- &&_unknown_opcode,
- &&_unknown_opcode,
- &&_unknown_opcode,
+ &&TARGET_TRACE_RECORD,
+ &&TARGET_TRACE_RECORD,
+ &&TARGET_TRACE_RECORD,
&&_unknown_opcode,
&&_unknown_opcode,
&&_unknown_opcode,
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_FOR_ITER_LIST(TAIL_CALL_PARAMS);
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_FOR_ITER_RANGE(TAIL_CALL_PARAMS);
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_FOR_ITER_TUPLE(TAIL_CALL_PARAMS);
+static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_FOR_ITER_VIRTUAL(TAIL_CALL_PARAMS);
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_AITER(TAIL_CALL_PARAMS);
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_ANEXT(TAIL_CALL_PARAMS);
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_AWAITABLE(TAIL_CALL_PARAMS);
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_ITER(TAIL_CALL_PARAMS);
+static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_ITER_SELF(TAIL_CALL_PARAMS);
+static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_ITER_VIRTUAL(TAIL_CALL_PARAMS);
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_LEN(TAIL_CALL_PARAMS);
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_IMPORT_FROM(TAIL_CALL_PARAMS);
static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_IMPORT_NAME(TAIL_CALL_PARAMS);
[FOR_ITER_LIST] = _TAIL_CALL_FOR_ITER_LIST,
[FOR_ITER_RANGE] = _TAIL_CALL_FOR_ITER_RANGE,
[FOR_ITER_TUPLE] = _TAIL_CALL_FOR_ITER_TUPLE,
+ [FOR_ITER_VIRTUAL] = _TAIL_CALL_FOR_ITER_VIRTUAL,
[GET_AITER] = _TAIL_CALL_GET_AITER,
[GET_ANEXT] = _TAIL_CALL_GET_ANEXT,
[GET_AWAITABLE] = _TAIL_CALL_GET_AWAITABLE,
[GET_ITER] = _TAIL_CALL_GET_ITER,
+ [GET_ITER_SELF] = _TAIL_CALL_GET_ITER_SELF,
+ [GET_ITER_VIRTUAL] = _TAIL_CALL_GET_ITER_VIRTUAL,
[GET_LEN] = _TAIL_CALL_GET_LEN,
[IMPORT_FROM] = _TAIL_CALL_IMPORT_FROM,
[IMPORT_NAME] = _TAIL_CALL_IMPORT_NAME,
[125] = _TAIL_CALL_UNKNOWN_OPCODE,
[126] = _TAIL_CALL_UNKNOWN_OPCODE,
[127] = _TAIL_CALL_UNKNOWN_OPCODE,
- [214] = _TAIL_CALL_UNKNOWN_OPCODE,
- [215] = _TAIL_CALL_UNKNOWN_OPCODE,
- [216] = _TAIL_CALL_UNKNOWN_OPCODE,
[217] = _TAIL_CALL_UNKNOWN_OPCODE,
[218] = _TAIL_CALL_UNKNOWN_OPCODE,
[219] = _TAIL_CALL_UNKNOWN_OPCODE,
[FOR_ITER_LIST] = _TAIL_CALL_TRACE_RECORD,
[FOR_ITER_RANGE] = _TAIL_CALL_TRACE_RECORD,
[FOR_ITER_TUPLE] = _TAIL_CALL_TRACE_RECORD,
+ [FOR_ITER_VIRTUAL] = _TAIL_CALL_TRACE_RECORD,
[GET_AITER] = _TAIL_CALL_TRACE_RECORD,
[GET_ANEXT] = _TAIL_CALL_TRACE_RECORD,
[GET_AWAITABLE] = _TAIL_CALL_TRACE_RECORD,
[GET_ITER] = _TAIL_CALL_TRACE_RECORD,
+ [GET_ITER_SELF] = _TAIL_CALL_TRACE_RECORD,
+ [GET_ITER_VIRTUAL] = _TAIL_CALL_TRACE_RECORD,
[GET_LEN] = _TAIL_CALL_TRACE_RECORD,
[IMPORT_FROM] = _TAIL_CALL_TRACE_RECORD,
[IMPORT_NAME] = _TAIL_CALL_TRACE_RECORD,
[125] = _TAIL_CALL_UNKNOWN_OPCODE,
[126] = _TAIL_CALL_UNKNOWN_OPCODE,
[127] = _TAIL_CALL_UNKNOWN_OPCODE,
- [214] = _TAIL_CALL_UNKNOWN_OPCODE,
- [215] = _TAIL_CALL_UNKNOWN_OPCODE,
- [216] = _TAIL_CALL_UNKNOWN_OPCODE,
[217] = _TAIL_CALL_UNKNOWN_OPCODE,
[218] = _TAIL_CALL_UNKNOWN_OPCODE,
[219] = _TAIL_CALL_UNKNOWN_OPCODE,
[_ITER_JUMP_LIST] = _GUARD_NOT_EXHAUSTED_LIST,
[_ITER_JUMP_TUPLE] = _GUARD_NOT_EXHAUSTED_TUPLE,
[_FOR_ITER] = _FOR_ITER_TIER_TWO,
+ [_FOR_ITER_VIRTUAL] = _FOR_ITER_VIRTUAL_TIER_TWO,
[_ITER_NEXT_LIST] = _ITER_NEXT_LIST_TIER_TWO,
[_CHECK_PERIODIC_AT_END] = _TIER2_RESUME_CHECK,
+ [_LOAD_BYTECODE] = _NOP,
};
static const uint8_t
}
op(_GET_ITER, (iterable -- iter, index_or_null)) {
- if (sym_matches_type(iterable, &PyTuple_Type) || sym_matches_type(iterable, &PyList_Type)) {
+ bool is_coro = false;
+ bool is_trad = false; // has `tp_iter` slot
+ bool definite = true;
+ PyTypeObject *tp = sym_get_type(iterable);
+ if (tp == NULL) {
+ definite = false;
+ tp = sym_get_probable_type(iterable);
+ }
+ if (oparg == GET_ITER_YIELD_FROM_NO_CHECK) {
+ if (tp == &PyCoro_Type) {
+ if (!definite) {
+ ADD_OP(_GUARD_TYPE, 0, (uintptr_t)tp);
+ sym_set_type(iterable, tp);
+ }
+ ADD_OP(_PUSH_NULL, 0, 0);
+ is_coro = true;
+ }
+ }
+ if (tp != NULL &&
+ tp->_tp_iteritem == NULL &&
+ tp->tp_iter != NULL &&
+ tp->tp_iter != PyObject_SelfIter &&
+ tp->tp_flags & Py_TPFLAGS_IMMUTABLETYPE
+ ) {
+ assert(tp != &PyCoro_Type);
+ is_trad = true;
+ if (!definite) {
+ ADD_OP(_GUARD_TYPE, 0, (uintptr_t)tp);
+ sym_set_type(iterable, tp);
+ }
+ ADD_OP(_GET_ITER_TRAD, 0, 0);
+ }
+ if (is_coro) {
+ assert(!is_trad);
iter = iterable;
- index_or_null = sym_new_not_null(ctx);
+ index_or_null = sym_new_null(ctx);
+ }
+ else if (is_trad) {
+ iter = sym_new_not_null(ctx);
+ index_or_null = sym_new_null(ctx);
}
else {
iter = sym_new_not_null(ctx);
}
}
+ op(_GUARD_ITERATOR, (iterable -- iterable)) {
+ bool definite = true;
+ PyTypeObject *tp = sym_get_type(iterable);
+ if (tp == NULL) {
+ definite = false;
+ tp = sym_get_probable_type(iterable);
+ }
+ if (tp != NULL && tp->tp_iter == PyObject_SelfIter) {
+ if (definite) {
+ ADD_OP(_NOP, 0, 0);
+ }
+ else {
+ ADD_OP(_GUARD_TYPE, 0, (uintptr_t)tp);
+ sym_set_type(iterable, tp);
+ }
+ }
+ }
+
+ op(_GUARD_ITER_VIRTUAL, (iterable -- iterable)) {
+ bool definite = true;
+ PyTypeObject *tp = sym_get_type(iterable);
+ if (tp == NULL) {
+ definite = false;
+ tp = sym_get_probable_type(iterable);
+ }
+ if (tp != NULL && tp->_tp_iteritem != NULL) {
+ if (definite) {
+ ADD_OP(_NOP, 0, 0);
+ }
+ else {
+ ADD_OP(_GUARD_TYPE, 0, (uintptr_t)tp);
+ sym_set_type(iterable, tp);
+ }
+ }
+ }
+
op(_FOR_ITER_GEN_FRAME, (iter, unused -- iter, unused, gen_frame)) {
_Py_UOpsAbstractFrame *new_frame = frame_new_from_symbol(ctx, iter, NULL, 0);
if (new_frame == NULL) {
break;
}
+ case _GUARD_TYPE: {
+ break;
+ }
+
case _CHECK_MANAGED_OBJECT_HAS_VALUES: {
break;
}
JitOptRef iter;
JitOptRef index_or_null;
iterable = stack_pointer[-1];
- if (sym_matches_type(iterable, &PyTuple_Type) || sym_matches_type(iterable, &PyList_Type)) {
+ bool is_coro = false;
+ bool is_trad = false;
+ bool definite = true;
+ PyTypeObject *tp = sym_get_type(iterable);
+ if (tp == NULL) {
+ definite = false;
+ tp = sym_get_probable_type(iterable);
+ }
+ if (oparg == GET_ITER_YIELD_FROM_NO_CHECK) {
+ if (tp == &PyCoro_Type) {
+ if (!definite) {
+ ADD_OP(_GUARD_TYPE, 0, (uintptr_t)tp);
+ sym_set_type(iterable, tp);
+ }
+ ADD_OP(_PUSH_NULL, 0, 0);
+ is_coro = true;
+ }
+ }
+ if (tp != NULL &&
+ tp->_tp_iteritem == NULL &&
+ tp->tp_iter != NULL &&
+ tp->tp_iter != PyObject_SelfIter &&
+ tp->tp_flags & Py_TPFLAGS_IMMUTABLETYPE
+ ) {
+ assert(tp != &PyCoro_Type);
+ is_trad = true;
+ if (!definite) {
+ ADD_OP(_GUARD_TYPE, 0, (uintptr_t)tp);
+ sym_set_type(iterable, tp);
+ }
+ ADD_OP(_GET_ITER_TRAD, 0, 0);
+ }
+ if (is_coro) {
+ assert(!is_trad);
iter = iterable;
- index_or_null = sym_new_not_null(ctx);
+ index_or_null = sym_new_null(ctx);
+ }
+ else if (is_trad) {
+ iter = sym_new_not_null(ctx);
+ index_or_null = sym_new_null(ctx);
}
else {
iter = sym_new_not_null(ctx);
break;
}
+ case _GUARD_ITERATOR: {
+ JitOptRef iterable;
+ iterable = stack_pointer[-1];
+ bool definite = true;
+ PyTypeObject *tp = sym_get_type(iterable);
+ if (tp == NULL) {
+ definite = false;
+ tp = sym_get_probable_type(iterable);
+ }
+ if (tp != NULL && tp->tp_iter == PyObject_SelfIter) {
+ if (definite) {
+ ADD_OP(_NOP, 0, 0);
+ }
+ else {
+ ADD_OP(_GUARD_TYPE, 0, (uintptr_t)tp);
+ sym_set_type(iterable, tp);
+ }
+ }
+ break;
+ }
+
+ case _GUARD_ITER_VIRTUAL: {
+ JitOptRef iterable;
+ iterable = stack_pointer[-1];
+ bool definite = true;
+ PyTypeObject *tp = sym_get_type(iterable);
+ if (tp == NULL) {
+ definite = false;
+ tp = sym_get_probable_type(iterable);
+ }
+ if (tp != NULL && tp->_tp_iteritem != NULL) {
+ if (definite) {
+ ADD_OP(_NOP, 0, 0);
+ }
+ else {
+ ADD_OP(_GUARD_TYPE, 0, (uintptr_t)tp);
+ sym_set_type(iterable, tp);
+ }
+ }
+ break;
+ }
+
+ case _PUSH_TAGGED_ZERO: {
+ JitOptRef zero;
+ zero = sym_new_not_null(ctx);
+ CHECK_STACK_BOUNDS(1);
+ stack_pointer[0] = zero;
+ stack_pointer += 1;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ break;
+ }
+
+ case _GET_ITER_TRAD: {
+ JitOptRef iter;
+ JitOptRef index_or_null;
+ iter = sym_new_not_null(ctx);
+ index_or_null = sym_new_not_null(ctx);
+ CHECK_STACK_BOUNDS(1);
+ stack_pointer[-1] = iter;
+ stack_pointer[0] = index_or_null;
+ stack_pointer += 1;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ break;
+ }
+
/* _FOR_ITER is not a viable micro-op for tier 2 */
case _FOR_ITER_TIER_TWO: {
break;
}
+ case _GUARD_NOS_ITER_VIRTUAL: {
+ break;
+ }
+
+ /* _FOR_ITER_VIRTUAL is not a viable micro-op for tier 2 */
+
+ case _FOR_ITER_VIRTUAL_TIER_TWO: {
+ JitOptRef next;
+ next = sym_new_not_null(ctx);
+ CHECK_STACK_BOUNDS(1);
+ stack_pointer[0] = next;
+ stack_pointer += 1;
+ ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+ break;
+ }
+
/* _INSTRUMENTED_FOR_ITER is not a viable micro-op for tier 2 */
case _ITER_CHECK_LIST: {
[STORE_ATTR_INSTANCE_VALUE] = {1, {_RECORD_TOS_TYPE_INDEX}},
[STORE_ATTR_WITH_HINT] = {1, {_RECORD_TOS_TYPE_INDEX}},
[STORE_ATTR_SLOT] = {1, {_RECORD_TOS_TYPE_INDEX}},
+ [GET_ITER] = {1, {_RECORD_TOS_TYPE_INDEX}},
+ [GET_ITER_SELF] = {1, {_RECORD_TOS_TYPE_INDEX}},
+ [GET_ITER_VIRTUAL] = {1, {_RECORD_TOS_TYPE_INDEX}},
[FOR_ITER_GEN] = {1, {_RECORD_NOS_GEN_FUNC_INDEX}},
[LOAD_SPECIAL] = {1, {_RECORD_TOS_TYPE_INDEX}},
[LOAD_ATTR_METHOD_WITH_VALUES] = {1, {_RECORD_TOS_TYPE_INDEX}},
}
}
else {
- if (tp == &PyList_Type) {
-#ifdef Py_GIL_DISABLED
- // Only specialize for lists owned by this thread or shared
- if (!_Py_IsOwnedByCurrentThread(iter_o) && !_PyObject_GC_IS_SHARED(iter_o)) {
- goto failure;
+ if (tp->_tp_iteritem != NULL) {
+ if (tp == &PyList_Type) {
+ #ifdef Py_GIL_DISABLED
+ // Only specialize for lists owned by this thread or shared
+ if (!_Py_IsOwnedByCurrentThread(iter_o) && !_PyObject_GC_IS_SHARED(iter_o)) {
+ goto failure;
+ }
+ #endif
+ specialize(instr, FOR_ITER_LIST);
+ return;
+ }
+ else if (tp == &PyTuple_Type) {
+ specialize(instr, FOR_ITER_TUPLE);
+ return;
}
-#endif
- specialize(instr, FOR_ITER_LIST);
- return;
- }
- else if (tp == &PyTuple_Type) {
- specialize(instr, FOR_ITER_TUPLE);
- return;
}
+ specialize(instr, FOR_ITER_VIRTUAL);
+ return;
}
failure:
SPECIALIZATION_FAIL(FOR_ITER,
return;
}
+void
+_Py_Specialize_GetIter(_PyStackRef iterable, _Py_CODEUNIT *instr)
+{
+ assert(ENABLE_SPECIALIZATION);
+ PyTypeObject *tp = PyStackRef_TYPE(iterable);
+ if (tp->_tp_iteritem != NULL) {
+ specialize(instr, GET_ITER_VIRTUAL);
+ return;
+ }
+ if (tp->tp_iter == PyObject_SelfIter) {
+ specialize(instr, GET_ITER_SELF);
+ return;
+ }
+ SPECIALIZATION_FAIL(GET_ITER,
+ tp == &PyCoro_Type ? SPEC_FAIL_ITER_COROUTINE : SPEC_FAIL_OTHER);
+ unspecialize(instr);
+}
void
_Py_Specialize_Resume(_Py_CODEUNIT *instr, PyThreadState *tstate, _PyInterpreterFrame *frame)
assert node is not None
result.append(node) # type: ignore[arg-type]
if not psr.eof():
- pprint.pprint(result)
psr.backup()
raise psr.make_syntax_error(
f"Extra stuff at the end of {filename}", psr.next(True)