mirror of
https://github.com/python/cpython.git
synced 2025-10-17 20:28:43 +00:00
GH-125837: Split LOAD_CONST
into three. (GH-125972)
* Add LOAD_CONST_IMMORTAL opcode * Add LOAD_SMALL_INT opcode * Remove RETURN_CONST opcode
This commit is contained in:
parent
67f5c5bd6f
commit
faa3272fb8
33 changed files with 706 additions and 538 deletions
|
@ -261,6 +261,7 @@ Known values:
|
|||
Python 3.14a1 3606 (Specialize CALL_KW)
|
||||
Python 3.14a1 3607 (Add pseudo instructions JUMP_IF_TRUE/FALSE)
|
||||
Python 3.14a1 3608 (Add support for slices)
|
||||
Python 3.14a2 3609 (Add LOAD_SMALL_INT and LOAD_CONST_IMMORTAL instructions, remove RETURN_CONST)
|
||||
|
||||
Python 3.15 will start with 3650
|
||||
|
||||
|
@ -273,7 +274,7 @@ PC/launcher.c must also be updated.
|
|||
|
||||
*/
|
||||
|
||||
#define PYC_MAGIC_NUMBER 3608
|
||||
#define PYC_MAGIC_NUMBER 3609
|
||||
/* This is equivalent to converting PYC_MAGIC_NUMBER to 2 bytes
|
||||
(little-endian) and then appending b'\r\n'. */
|
||||
#define PYC_MAGIC_NUMBER_TOKEN \
|
||||
|
|
33
Include/internal/pycore_opcode_metadata.h
generated
33
Include/internal/pycore_opcode_metadata.h
generated
|
@ -253,8 +253,6 @@ int _PyOpcode_num_popped(int opcode, int oparg) {
|
|||
return 0;
|
||||
case INSTRUMENTED_RESUME:
|
||||
return 0;
|
||||
case INSTRUMENTED_RETURN_CONST:
|
||||
return 0;
|
||||
case INSTRUMENTED_RETURN_VALUE:
|
||||
return 1;
|
||||
case INSTRUMENTED_YIELD_VALUE:
|
||||
|
@ -317,6 +315,8 @@ int _PyOpcode_num_popped(int opcode, int oparg) {
|
|||
return 0;
|
||||
case LOAD_CONST:
|
||||
return 0;
|
||||
case LOAD_CONST_IMMORTAL:
|
||||
return 0;
|
||||
case LOAD_DEREF:
|
||||
return 0;
|
||||
case LOAD_FAST:
|
||||
|
@ -341,6 +341,8 @@ int _PyOpcode_num_popped(int opcode, int oparg) {
|
|||
return 0;
|
||||
case LOAD_NAME:
|
||||
return 0;
|
||||
case LOAD_SMALL_INT:
|
||||
return 0;
|
||||
case LOAD_SPECIAL:
|
||||
return 1;
|
||||
case LOAD_SUPER_ATTR:
|
||||
|
@ -393,8 +395,6 @@ int _PyOpcode_num_popped(int opcode, int oparg) {
|
|||
return 0;
|
||||
case RESUME_CHECK:
|
||||
return 0;
|
||||
case RETURN_CONST:
|
||||
return 0;
|
||||
case RETURN_GENERATOR:
|
||||
return 0;
|
||||
case RETURN_VALUE:
|
||||
|
@ -712,8 +712,6 @@ int _PyOpcode_num_pushed(int opcode, int oparg) {
|
|||
return 0;
|
||||
case INSTRUMENTED_RESUME:
|
||||
return 0;
|
||||
case INSTRUMENTED_RETURN_CONST:
|
||||
return 1;
|
||||
case INSTRUMENTED_RETURN_VALUE:
|
||||
return 1;
|
||||
case INSTRUMENTED_YIELD_VALUE:
|
||||
|
@ -776,6 +774,8 @@ int _PyOpcode_num_pushed(int opcode, int oparg) {
|
|||
return 1;
|
||||
case LOAD_CONST:
|
||||
return 1;
|
||||
case LOAD_CONST_IMMORTAL:
|
||||
return 1;
|
||||
case LOAD_DEREF:
|
||||
return 1;
|
||||
case LOAD_FAST:
|
||||
|
@ -800,6 +800,8 @@ int _PyOpcode_num_pushed(int opcode, int oparg) {
|
|||
return 1;
|
||||
case LOAD_NAME:
|
||||
return 1;
|
||||
case LOAD_SMALL_INT:
|
||||
return 1;
|
||||
case LOAD_SPECIAL:
|
||||
return 2;
|
||||
case LOAD_SUPER_ATTR:
|
||||
|
@ -852,8 +854,6 @@ int _PyOpcode_num_pushed(int opcode, int oparg) {
|
|||
return 0;
|
||||
case RESUME_CHECK:
|
||||
return 0;
|
||||
case RETURN_CONST:
|
||||
return 1;
|
||||
case RETURN_GENERATOR:
|
||||
return 1;
|
||||
case RETURN_VALUE:
|
||||
|
@ -1123,7 +1123,6 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[266] = {
|
|||
[INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },
|
||||
[INSTRUMENTED_POP_JUMP_IF_TRUE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },
|
||||
[INSTRUMENTED_RESUME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
|
||||
[INSTRUMENTED_RETURN_CONST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_CONST_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
|
||||
[INSTRUMENTED_RETURN_VALUE] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
|
||||
[INSTRUMENTED_YIELD_VALUE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
|
||||
[INTERPRETER_EXIT] = { true, INSTR_FMT_IX, 0 },
|
||||
|
@ -1150,6 +1149,7 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[266] = {
|
|||
[LOAD_BUILD_CLASS] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
|
||||
[LOAD_COMMON_CONSTANT] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },
|
||||
[LOAD_CONST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_CONST_FLAG | HAS_PURE_FLAG },
|
||||
[LOAD_CONST_IMMORTAL] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_CONST_FLAG },
|
||||
[LOAD_DEREF] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_FREE_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
|
||||
[LOAD_FAST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_PURE_FLAG },
|
||||
[LOAD_FAST_AND_CLEAR] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG },
|
||||
|
@ -1162,6 +1162,7 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[266] = {
|
|||
[LOAD_GLOBAL_MODULE] = { true, INSTR_FMT_IBC000, HAS_ARG_FLAG | HAS_DEOPT_FLAG },
|
||||
[LOAD_LOCALS] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
|
||||
[LOAD_NAME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
|
||||
[LOAD_SMALL_INT] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },
|
||||
[LOAD_SPECIAL] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
|
||||
[LOAD_SUPER_ATTR] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
|
||||
[LOAD_SUPER_ATTR_ATTR] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
|
||||
|
@ -1187,7 +1188,6 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[266] = {
|
|||
[RESERVED] = { true, INSTR_FMT_IX, 0 },
|
||||
[RESUME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
|
||||
[RESUME_CHECK] = { true, INSTR_FMT_IX, HAS_DEOPT_FLAG },
|
||||
[RETURN_CONST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_CONST_FLAG },
|
||||
[RETURN_GENERATOR] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
|
||||
[RETURN_VALUE] = { true, INSTR_FMT_IX, 0 },
|
||||
[SEND] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
|
||||
|
@ -1355,6 +1355,7 @@ _PyOpcode_macro_expansion[256] = {
|
|||
[LOAD_BUILD_CLASS] = { .nuops = 1, .uops = { { _LOAD_BUILD_CLASS, 0, 0 } } },
|
||||
[LOAD_COMMON_CONSTANT] = { .nuops = 1, .uops = { { _LOAD_COMMON_CONSTANT, 0, 0 } } },
|
||||
[LOAD_CONST] = { .nuops = 1, .uops = { { _LOAD_CONST, 0, 0 } } },
|
||||
[LOAD_CONST_IMMORTAL] = { .nuops = 1, .uops = { { _LOAD_CONST_IMMORTAL, 0, 0 } } },
|
||||
[LOAD_DEREF] = { .nuops = 1, .uops = { { _LOAD_DEREF, 0, 0 } } },
|
||||
[LOAD_FAST] = { .nuops = 1, .uops = { { _LOAD_FAST, 0, 0 } } },
|
||||
[LOAD_FAST_AND_CLEAR] = { .nuops = 1, .uops = { { _LOAD_FAST_AND_CLEAR, 0, 0 } } },
|
||||
|
@ -1366,6 +1367,7 @@ _PyOpcode_macro_expansion[256] = {
|
|||
[LOAD_GLOBAL_MODULE] = { .nuops = 2, .uops = { { _GUARD_GLOBALS_VERSION_PUSH_KEYS, 1, 1 }, { _LOAD_GLOBAL_MODULE_FROM_KEYS, 1, 3 } } },
|
||||
[LOAD_LOCALS] = { .nuops = 1, .uops = { { _LOAD_LOCALS, 0, 0 } } },
|
||||
[LOAD_NAME] = { .nuops = 1, .uops = { { _LOAD_NAME, 0, 0 } } },
|
||||
[LOAD_SMALL_INT] = { .nuops = 1, .uops = { { _LOAD_SMALL_INT, 0, 0 } } },
|
||||
[LOAD_SPECIAL] = { .nuops = 1, .uops = { { _LOAD_SPECIAL, 0, 0 } } },
|
||||
[LOAD_SUPER_ATTR_ATTR] = { .nuops = 1, .uops = { { _LOAD_SUPER_ATTR_ATTR, 0, 0 } } },
|
||||
[LOAD_SUPER_ATTR_METHOD] = { .nuops = 1, .uops = { { _LOAD_SUPER_ATTR_METHOD, 0, 0 } } },
|
||||
|
@ -1386,7 +1388,6 @@ _PyOpcode_macro_expansion[256] = {
|
|||
[PUSH_EXC_INFO] = { .nuops = 1, .uops = { { _PUSH_EXC_INFO, 0, 0 } } },
|
||||
[PUSH_NULL] = { .nuops = 1, .uops = { { _PUSH_NULL, 0, 0 } } },
|
||||
[RESUME_CHECK] = { .nuops = 1, .uops = { { _RESUME_CHECK, 0, 0 } } },
|
||||
[RETURN_CONST] = { .nuops = 2, .uops = { { _LOAD_CONST, 0, 0 }, { _RETURN_VALUE, 0, 0 } } },
|
||||
[RETURN_GENERATOR] = { .nuops = 1, .uops = { { _RETURN_GENERATOR, 0, 0 } } },
|
||||
[RETURN_VALUE] = { .nuops = 1, .uops = { { _RETURN_VALUE, 0, 0 } } },
|
||||
[SEND_GEN] = { .nuops = 3, .uops = { { _CHECK_PEP_523, 0, 0 }, { _SEND_GEN_FRAME, 0, 0 }, { _PUSH_FRAME, 0, 0 } } },
|
||||
|
@ -1541,7 +1542,6 @@ const char *_PyOpcode_OpName[266] = {
|
|||
[INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = "INSTRUMENTED_POP_JUMP_IF_NOT_NONE",
|
||||
[INSTRUMENTED_POP_JUMP_IF_TRUE] = "INSTRUMENTED_POP_JUMP_IF_TRUE",
|
||||
[INSTRUMENTED_RESUME] = "INSTRUMENTED_RESUME",
|
||||
[INSTRUMENTED_RETURN_CONST] = "INSTRUMENTED_RETURN_CONST",
|
||||
[INSTRUMENTED_RETURN_VALUE] = "INSTRUMENTED_RETURN_VALUE",
|
||||
[INSTRUMENTED_YIELD_VALUE] = "INSTRUMENTED_YIELD_VALUE",
|
||||
[INTERPRETER_EXIT] = "INTERPRETER_EXIT",
|
||||
|
@ -1573,6 +1573,7 @@ const char *_PyOpcode_OpName[266] = {
|
|||
[LOAD_CLOSURE] = "LOAD_CLOSURE",
|
||||
[LOAD_COMMON_CONSTANT] = "LOAD_COMMON_CONSTANT",
|
||||
[LOAD_CONST] = "LOAD_CONST",
|
||||
[LOAD_CONST_IMMORTAL] = "LOAD_CONST_IMMORTAL",
|
||||
[LOAD_DEREF] = "LOAD_DEREF",
|
||||
[LOAD_FAST] = "LOAD_FAST",
|
||||
[LOAD_FAST_AND_CLEAR] = "LOAD_FAST_AND_CLEAR",
|
||||
|
@ -1585,6 +1586,7 @@ const char *_PyOpcode_OpName[266] = {
|
|||
[LOAD_GLOBAL_MODULE] = "LOAD_GLOBAL_MODULE",
|
||||
[LOAD_LOCALS] = "LOAD_LOCALS",
|
||||
[LOAD_NAME] = "LOAD_NAME",
|
||||
[LOAD_SMALL_INT] = "LOAD_SMALL_INT",
|
||||
[LOAD_SPECIAL] = "LOAD_SPECIAL",
|
||||
[LOAD_SUPER_ATTR] = "LOAD_SUPER_ATTR",
|
||||
[LOAD_SUPER_ATTR_ATTR] = "LOAD_SUPER_ATTR_ATTR",
|
||||
|
@ -1611,7 +1613,6 @@ const char *_PyOpcode_OpName[266] = {
|
|||
[RESERVED] = "RESERVED",
|
||||
[RESUME] = "RESUME",
|
||||
[RESUME_CHECK] = "RESUME_CHECK",
|
||||
[RETURN_CONST] = "RETURN_CONST",
|
||||
[RETURN_GENERATOR] = "RETURN_GENERATOR",
|
||||
[RETURN_VALUE] = "RETURN_VALUE",
|
||||
[SEND] = "SEND",
|
||||
|
@ -1797,7 +1798,6 @@ const uint8_t _PyOpcode_Deopt[256] = {
|
|||
[INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = INSTRUMENTED_POP_JUMP_IF_NOT_NONE,
|
||||
[INSTRUMENTED_POP_JUMP_IF_TRUE] = INSTRUMENTED_POP_JUMP_IF_TRUE,
|
||||
[INSTRUMENTED_RESUME] = INSTRUMENTED_RESUME,
|
||||
[INSTRUMENTED_RETURN_CONST] = INSTRUMENTED_RETURN_CONST,
|
||||
[INSTRUMENTED_RETURN_VALUE] = INSTRUMENTED_RETURN_VALUE,
|
||||
[INSTRUMENTED_YIELD_VALUE] = INSTRUMENTED_YIELD_VALUE,
|
||||
[INTERPRETER_EXIT] = INTERPRETER_EXIT,
|
||||
|
@ -1824,6 +1824,7 @@ const uint8_t _PyOpcode_Deopt[256] = {
|
|||
[LOAD_BUILD_CLASS] = LOAD_BUILD_CLASS,
|
||||
[LOAD_COMMON_CONSTANT] = LOAD_COMMON_CONSTANT,
|
||||
[LOAD_CONST] = LOAD_CONST,
|
||||
[LOAD_CONST_IMMORTAL] = LOAD_CONST,
|
||||
[LOAD_DEREF] = LOAD_DEREF,
|
||||
[LOAD_FAST] = LOAD_FAST,
|
||||
[LOAD_FAST_AND_CLEAR] = LOAD_FAST_AND_CLEAR,
|
||||
|
@ -1836,6 +1837,7 @@ const uint8_t _PyOpcode_Deopt[256] = {
|
|||
[LOAD_GLOBAL_MODULE] = LOAD_GLOBAL,
|
||||
[LOAD_LOCALS] = LOAD_LOCALS,
|
||||
[LOAD_NAME] = LOAD_NAME,
|
||||
[LOAD_SMALL_INT] = LOAD_SMALL_INT,
|
||||
[LOAD_SPECIAL] = LOAD_SPECIAL,
|
||||
[LOAD_SUPER_ATTR] = LOAD_SUPER_ATTR,
|
||||
[LOAD_SUPER_ATTR_ATTR] = LOAD_SUPER_ATTR,
|
||||
|
@ -1861,7 +1863,6 @@ const uint8_t _PyOpcode_Deopt[256] = {
|
|||
[RESERVED] = RESERVED,
|
||||
[RESUME] = RESUME,
|
||||
[RESUME_CHECK] = RESUME,
|
||||
[RETURN_CONST] = RETURN_CONST,
|
||||
[RETURN_GENERATOR] = RETURN_GENERATOR,
|
||||
[RETURN_VALUE] = RETURN_VALUE,
|
||||
[SEND] = SEND,
|
||||
|
@ -1940,7 +1941,6 @@ const uint8_t _PyOpcode_Deopt[256] = {
|
|||
case 146: \
|
||||
case 147: \
|
||||
case 148: \
|
||||
case 227: \
|
||||
case 228: \
|
||||
case 229: \
|
||||
case 230: \
|
||||
|
@ -1949,6 +1949,7 @@ const uint8_t _PyOpcode_Deopt[256] = {
|
|||
case 233: \
|
||||
case 234: \
|
||||
case 235: \
|
||||
case 236: \
|
||||
;
|
||||
struct pseudo_targets {
|
||||
uint8_t as_sequence;
|
||||
|
|
|
@ -47,7 +47,6 @@ extern "C" {
|
|||
|
||||
#define IS_SCOPE_EXIT_OPCODE(opcode) \
|
||||
((opcode) == RETURN_VALUE || \
|
||||
(opcode) == RETURN_CONST || \
|
||||
(opcode) == RAISE_VARARGS || \
|
||||
(opcode) == RERAISE)
|
||||
|
||||
|
|
82
Include/internal/pycore_uop_ids.h
generated
82
Include/internal/pycore_uop_ids.h
generated
|
@ -195,6 +195,7 @@ extern "C" {
|
|||
#define _LOAD_BUILD_CLASS LOAD_BUILD_CLASS
|
||||
#define _LOAD_COMMON_CONSTANT LOAD_COMMON_CONSTANT
|
||||
#define _LOAD_CONST LOAD_CONST
|
||||
#define _LOAD_CONST_IMMORTAL LOAD_CONST_IMMORTAL
|
||||
#define _LOAD_CONST_INLINE 425
|
||||
#define _LOAD_CONST_INLINE_BORROW 426
|
||||
#define _LOAD_CONST_INLINE_BORROW_WITH_NULL 427
|
||||
|
@ -221,72 +222,77 @@ extern "C" {
|
|||
#define _LOAD_GLOBAL_MODULE_FROM_KEYS 442
|
||||
#define _LOAD_LOCALS LOAD_LOCALS
|
||||
#define _LOAD_NAME LOAD_NAME
|
||||
#define _LOAD_SMALL_INT 443
|
||||
#define _LOAD_SMALL_INT_0 444
|
||||
#define _LOAD_SMALL_INT_1 445
|
||||
#define _LOAD_SMALL_INT_2 446
|
||||
#define _LOAD_SMALL_INT_3 447
|
||||
#define _LOAD_SPECIAL LOAD_SPECIAL
|
||||
#define _LOAD_SUPER_ATTR_ATTR LOAD_SUPER_ATTR_ATTR
|
||||
#define _LOAD_SUPER_ATTR_METHOD LOAD_SUPER_ATTR_METHOD
|
||||
#define _MAKE_CALLARGS_A_TUPLE 443
|
||||
#define _MAKE_CALLARGS_A_TUPLE 448
|
||||
#define _MAKE_CELL MAKE_CELL
|
||||
#define _MAKE_FUNCTION MAKE_FUNCTION
|
||||
#define _MAKE_WARM 444
|
||||
#define _MAKE_WARM 449
|
||||
#define _MAP_ADD MAP_ADD
|
||||
#define _MATCH_CLASS MATCH_CLASS
|
||||
#define _MATCH_KEYS MATCH_KEYS
|
||||
#define _MATCH_MAPPING MATCH_MAPPING
|
||||
#define _MATCH_SEQUENCE MATCH_SEQUENCE
|
||||
#define _MAYBE_EXPAND_METHOD 445
|
||||
#define _MAYBE_EXPAND_METHOD_KW 446
|
||||
#define _MONITOR_CALL 447
|
||||
#define _MONITOR_JUMP_BACKWARD 448
|
||||
#define _MONITOR_RESUME 449
|
||||
#define _MAYBE_EXPAND_METHOD 450
|
||||
#define _MAYBE_EXPAND_METHOD_KW 451
|
||||
#define _MONITOR_CALL 452
|
||||
#define _MONITOR_JUMP_BACKWARD 453
|
||||
#define _MONITOR_RESUME 454
|
||||
#define _NOP NOP
|
||||
#define _POP_EXCEPT POP_EXCEPT
|
||||
#define _POP_JUMP_IF_FALSE 450
|
||||
#define _POP_JUMP_IF_TRUE 451
|
||||
#define _POP_JUMP_IF_FALSE 455
|
||||
#define _POP_JUMP_IF_TRUE 456
|
||||
#define _POP_TOP POP_TOP
|
||||
#define _POP_TOP_LOAD_CONST_INLINE_BORROW 452
|
||||
#define _POP_TOP_LOAD_CONST_INLINE_BORROW 457
|
||||
#define _PUSH_EXC_INFO PUSH_EXC_INFO
|
||||
#define _PUSH_FRAME 453
|
||||
#define _PUSH_FRAME 458
|
||||
#define _PUSH_NULL PUSH_NULL
|
||||
#define _PY_FRAME_GENERAL 454
|
||||
#define _PY_FRAME_KW 455
|
||||
#define _QUICKEN_RESUME 456
|
||||
#define _REPLACE_WITH_TRUE 457
|
||||
#define _PY_FRAME_GENERAL 459
|
||||
#define _PY_FRAME_KW 460
|
||||
#define _QUICKEN_RESUME 461
|
||||
#define _REPLACE_WITH_TRUE 462
|
||||
#define _RESUME_CHECK RESUME_CHECK
|
||||
#define _RETURN_GENERATOR RETURN_GENERATOR
|
||||
#define _RETURN_VALUE RETURN_VALUE
|
||||
#define _SAVE_RETURN_OFFSET 458
|
||||
#define _SEND 459
|
||||
#define _SEND_GEN_FRAME 460
|
||||
#define _SAVE_RETURN_OFFSET 463
|
||||
#define _SEND 464
|
||||
#define _SEND_GEN_FRAME 465
|
||||
#define _SETUP_ANNOTATIONS SETUP_ANNOTATIONS
|
||||
#define _SET_ADD SET_ADD
|
||||
#define _SET_FUNCTION_ATTRIBUTE SET_FUNCTION_ATTRIBUTE
|
||||
#define _SET_UPDATE SET_UPDATE
|
||||
#define _START_EXECUTOR 461
|
||||
#define _STORE_ATTR 462
|
||||
#define _STORE_ATTR_INSTANCE_VALUE 463
|
||||
#define _STORE_ATTR_SLOT 464
|
||||
#define _STORE_ATTR_WITH_HINT 465
|
||||
#define _START_EXECUTOR 466
|
||||
#define _STORE_ATTR 467
|
||||
#define _STORE_ATTR_INSTANCE_VALUE 468
|
||||
#define _STORE_ATTR_SLOT 469
|
||||
#define _STORE_ATTR_WITH_HINT 470
|
||||
#define _STORE_DEREF STORE_DEREF
|
||||
#define _STORE_FAST 466
|
||||
#define _STORE_FAST_0 467
|
||||
#define _STORE_FAST_1 468
|
||||
#define _STORE_FAST_2 469
|
||||
#define _STORE_FAST_3 470
|
||||
#define _STORE_FAST_4 471
|
||||
#define _STORE_FAST_5 472
|
||||
#define _STORE_FAST_6 473
|
||||
#define _STORE_FAST_7 474
|
||||
#define _STORE_FAST 471
|
||||
#define _STORE_FAST_0 472
|
||||
#define _STORE_FAST_1 473
|
||||
#define _STORE_FAST_2 474
|
||||
#define _STORE_FAST_3 475
|
||||
#define _STORE_FAST_4 476
|
||||
#define _STORE_FAST_5 477
|
||||
#define _STORE_FAST_6 478
|
||||
#define _STORE_FAST_7 479
|
||||
#define _STORE_FAST_LOAD_FAST STORE_FAST_LOAD_FAST
|
||||
#define _STORE_FAST_STORE_FAST STORE_FAST_STORE_FAST
|
||||
#define _STORE_GLOBAL STORE_GLOBAL
|
||||
#define _STORE_NAME STORE_NAME
|
||||
#define _STORE_SLICE 475
|
||||
#define _STORE_SUBSCR 476
|
||||
#define _STORE_SLICE 480
|
||||
#define _STORE_SUBSCR 481
|
||||
#define _STORE_SUBSCR_DICT STORE_SUBSCR_DICT
|
||||
#define _STORE_SUBSCR_LIST_INT STORE_SUBSCR_LIST_INT
|
||||
#define _SWAP SWAP
|
||||
#define _TIER2_RESUME_CHECK 477
|
||||
#define _TO_BOOL 478
|
||||
#define _TIER2_RESUME_CHECK 482
|
||||
#define _TO_BOOL 483
|
||||
#define _TO_BOOL_BOOL TO_BOOL_BOOL
|
||||
#define _TO_BOOL_INT TO_BOOL_INT
|
||||
#define _TO_BOOL_LIST TO_BOOL_LIST
|
||||
|
@ -296,13 +302,13 @@ extern "C" {
|
|||
#define _UNARY_NEGATIVE UNARY_NEGATIVE
|
||||
#define _UNARY_NOT UNARY_NOT
|
||||
#define _UNPACK_EX UNPACK_EX
|
||||
#define _UNPACK_SEQUENCE 479
|
||||
#define _UNPACK_SEQUENCE 484
|
||||
#define _UNPACK_SEQUENCE_LIST UNPACK_SEQUENCE_LIST
|
||||
#define _UNPACK_SEQUENCE_TUPLE UNPACK_SEQUENCE_TUPLE
|
||||
#define _UNPACK_SEQUENCE_TWO_TUPLE UNPACK_SEQUENCE_TWO_TUPLE
|
||||
#define _WITH_EXCEPT_START WITH_EXCEPT_START
|
||||
#define _YIELD_VALUE YIELD_VALUE
|
||||
#define MAX_UOP_ID 479
|
||||
#define MAX_UOP_ID 484
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
25
Include/internal/pycore_uop_metadata.h
generated
25
Include/internal/pycore_uop_metadata.h
generated
|
@ -36,6 +36,12 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = {
|
|||
[_LOAD_FAST_AND_CLEAR] = HAS_ARG_FLAG | HAS_LOCAL_FLAG,
|
||||
[_LOAD_FAST_LOAD_FAST] = HAS_ARG_FLAG | HAS_LOCAL_FLAG,
|
||||
[_LOAD_CONST] = HAS_ARG_FLAG | HAS_CONST_FLAG | HAS_PURE_FLAG,
|
||||
[_LOAD_CONST_IMMORTAL] = HAS_ARG_FLAG | HAS_CONST_FLAG,
|
||||
[_LOAD_SMALL_INT_0] = 0,
|
||||
[_LOAD_SMALL_INT_1] = 0,
|
||||
[_LOAD_SMALL_INT_2] = 0,
|
||||
[_LOAD_SMALL_INT_3] = 0,
|
||||
[_LOAD_SMALL_INT] = HAS_ARG_FLAG,
|
||||
[_STORE_FAST_0] = HAS_LOCAL_FLAG,
|
||||
[_STORE_FAST_1] = HAS_LOCAL_FLAG,
|
||||
[_STORE_FAST_2] = HAS_LOCAL_FLAG,
|
||||
|
@ -289,6 +295,7 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = {
|
|||
|
||||
const uint8_t _PyUop_Replication[MAX_UOP_ID+1] = {
|
||||
[_LOAD_FAST] = 8,
|
||||
[_LOAD_SMALL_INT] = 4,
|
||||
[_STORE_FAST] = 8,
|
||||
[_INIT_CALL_PY_EXACT_ARGS] = 5,
|
||||
};
|
||||
|
@ -460,6 +467,7 @@ const char *const _PyOpcode_uop_name[MAX_UOP_ID+1] = {
|
|||
[_LOAD_BUILD_CLASS] = "_LOAD_BUILD_CLASS",
|
||||
[_LOAD_COMMON_CONSTANT] = "_LOAD_COMMON_CONSTANT",
|
||||
[_LOAD_CONST] = "_LOAD_CONST",
|
||||
[_LOAD_CONST_IMMORTAL] = "_LOAD_CONST_IMMORTAL",
|
||||
[_LOAD_CONST_INLINE] = "_LOAD_CONST_INLINE",
|
||||
[_LOAD_CONST_INLINE_BORROW] = "_LOAD_CONST_INLINE_BORROW",
|
||||
[_LOAD_CONST_INLINE_BORROW_WITH_NULL] = "_LOAD_CONST_INLINE_BORROW_WITH_NULL",
|
||||
|
@ -485,6 +493,11 @@ const char *const _PyOpcode_uop_name[MAX_UOP_ID+1] = {
|
|||
[_LOAD_GLOBAL_MODULE_FROM_KEYS] = "_LOAD_GLOBAL_MODULE_FROM_KEYS",
|
||||
[_LOAD_LOCALS] = "_LOAD_LOCALS",
|
||||
[_LOAD_NAME] = "_LOAD_NAME",
|
||||
[_LOAD_SMALL_INT] = "_LOAD_SMALL_INT",
|
||||
[_LOAD_SMALL_INT_0] = "_LOAD_SMALL_INT_0",
|
||||
[_LOAD_SMALL_INT_1] = "_LOAD_SMALL_INT_1",
|
||||
[_LOAD_SMALL_INT_2] = "_LOAD_SMALL_INT_2",
|
||||
[_LOAD_SMALL_INT_3] = "_LOAD_SMALL_INT_3",
|
||||
[_LOAD_SPECIAL] = "_LOAD_SPECIAL",
|
||||
[_LOAD_SUPER_ATTR_ATTR] = "_LOAD_SUPER_ATTR_ATTR",
|
||||
[_LOAD_SUPER_ATTR_METHOD] = "_LOAD_SUPER_ATTR_METHOD",
|
||||
|
@ -598,6 +611,18 @@ int _PyUop_num_popped(int opcode, int oparg)
|
|||
return 0;
|
||||
case _LOAD_CONST:
|
||||
return 0;
|
||||
case _LOAD_CONST_IMMORTAL:
|
||||
return 0;
|
||||
case _LOAD_SMALL_INT_0:
|
||||
return 0;
|
||||
case _LOAD_SMALL_INT_1:
|
||||
return 0;
|
||||
case _LOAD_SMALL_INT_2:
|
||||
return 0;
|
||||
case _LOAD_SMALL_INT_3:
|
||||
return 0;
|
||||
case _LOAD_SMALL_INT:
|
||||
return 0;
|
||||
case _STORE_FAST_0:
|
||||
return 1;
|
||||
case _STORE_FAST_1:
|
||||
|
|
96
Include/opcode_ids.h
generated
96
Include/opcode_ids.h
generated
|
@ -99,18 +99,18 @@ extern "C" {
|
|||
#define LOAD_FROM_DICT_OR_GLOBALS 86
|
||||
#define LOAD_GLOBAL 87
|
||||
#define LOAD_NAME 88
|
||||
#define LOAD_SPECIAL 89
|
||||
#define LOAD_SUPER_ATTR 90
|
||||
#define MAKE_CELL 91
|
||||
#define MAP_ADD 92
|
||||
#define MATCH_CLASS 93
|
||||
#define POP_JUMP_IF_FALSE 94
|
||||
#define POP_JUMP_IF_NONE 95
|
||||
#define POP_JUMP_IF_NOT_NONE 96
|
||||
#define POP_JUMP_IF_TRUE 97
|
||||
#define RAISE_VARARGS 98
|
||||
#define RERAISE 99
|
||||
#define RETURN_CONST 100
|
||||
#define LOAD_SMALL_INT 89
|
||||
#define LOAD_SPECIAL 90
|
||||
#define LOAD_SUPER_ATTR 91
|
||||
#define MAKE_CELL 92
|
||||
#define MAP_ADD 93
|
||||
#define MATCH_CLASS 94
|
||||
#define POP_JUMP_IF_FALSE 95
|
||||
#define POP_JUMP_IF_NONE 96
|
||||
#define POP_JUMP_IF_NOT_NONE 97
|
||||
#define POP_JUMP_IF_TRUE 98
|
||||
#define RAISE_VARARGS 99
|
||||
#define RERAISE 100
|
||||
#define SEND 101
|
||||
#define SET_ADD 102
|
||||
#define SET_FUNCTION_ATTRIBUTE 103
|
||||
|
@ -184,41 +184,41 @@ extern "C" {
|
|||
#define LOAD_ATTR_PROPERTY 204
|
||||
#define LOAD_ATTR_SLOT 205
|
||||
#define LOAD_ATTR_WITH_HINT 206
|
||||
#define LOAD_GLOBAL_BUILTIN 207
|
||||
#define LOAD_GLOBAL_MODULE 208
|
||||
#define LOAD_SUPER_ATTR_ATTR 209
|
||||
#define LOAD_SUPER_ATTR_METHOD 210
|
||||
#define RESUME_CHECK 211
|
||||
#define SEND_GEN 212
|
||||
#define STORE_ATTR_INSTANCE_VALUE 213
|
||||
#define STORE_ATTR_SLOT 214
|
||||
#define STORE_ATTR_WITH_HINT 215
|
||||
#define STORE_SUBSCR_DICT 216
|
||||
#define STORE_SUBSCR_LIST_INT 217
|
||||
#define TO_BOOL_ALWAYS_TRUE 218
|
||||
#define TO_BOOL_BOOL 219
|
||||
#define TO_BOOL_INT 220
|
||||
#define TO_BOOL_LIST 221
|
||||
#define TO_BOOL_NONE 222
|
||||
#define TO_BOOL_STR 223
|
||||
#define UNPACK_SEQUENCE_LIST 224
|
||||
#define UNPACK_SEQUENCE_TUPLE 225
|
||||
#define UNPACK_SEQUENCE_TWO_TUPLE 226
|
||||
#define INSTRUMENTED_END_FOR 236
|
||||
#define INSTRUMENTED_END_SEND 237
|
||||
#define INSTRUMENTED_LOAD_SUPER_ATTR 238
|
||||
#define INSTRUMENTED_FOR_ITER 239
|
||||
#define INSTRUMENTED_CALL_KW 240
|
||||
#define INSTRUMENTED_CALL_FUNCTION_EX 241
|
||||
#define INSTRUMENTED_INSTRUCTION 242
|
||||
#define INSTRUMENTED_JUMP_FORWARD 243
|
||||
#define INSTRUMENTED_POP_JUMP_IF_TRUE 244
|
||||
#define INSTRUMENTED_POP_JUMP_IF_FALSE 245
|
||||
#define INSTRUMENTED_POP_JUMP_IF_NONE 246
|
||||
#define INSTRUMENTED_POP_JUMP_IF_NOT_NONE 247
|
||||
#define INSTRUMENTED_RESUME 248
|
||||
#define INSTRUMENTED_RETURN_VALUE 249
|
||||
#define INSTRUMENTED_RETURN_CONST 250
|
||||
#define LOAD_CONST_IMMORTAL 207
|
||||
#define LOAD_GLOBAL_BUILTIN 208
|
||||
#define LOAD_GLOBAL_MODULE 209
|
||||
#define LOAD_SUPER_ATTR_ATTR 210
|
||||
#define LOAD_SUPER_ATTR_METHOD 211
|
||||
#define RESUME_CHECK 212
|
||||
#define SEND_GEN 213
|
||||
#define STORE_ATTR_INSTANCE_VALUE 214
|
||||
#define STORE_ATTR_SLOT 215
|
||||
#define STORE_ATTR_WITH_HINT 216
|
||||
#define STORE_SUBSCR_DICT 217
|
||||
#define STORE_SUBSCR_LIST_INT 218
|
||||
#define TO_BOOL_ALWAYS_TRUE 219
|
||||
#define TO_BOOL_BOOL 220
|
||||
#define TO_BOOL_INT 221
|
||||
#define TO_BOOL_LIST 222
|
||||
#define TO_BOOL_NONE 223
|
||||
#define TO_BOOL_STR 224
|
||||
#define UNPACK_SEQUENCE_LIST 225
|
||||
#define UNPACK_SEQUENCE_TUPLE 226
|
||||
#define UNPACK_SEQUENCE_TWO_TUPLE 227
|
||||
#define INSTRUMENTED_END_FOR 237
|
||||
#define INSTRUMENTED_END_SEND 238
|
||||
#define INSTRUMENTED_LOAD_SUPER_ATTR 239
|
||||
#define INSTRUMENTED_FOR_ITER 240
|
||||
#define INSTRUMENTED_CALL_KW 241
|
||||
#define INSTRUMENTED_CALL_FUNCTION_EX 242
|
||||
#define INSTRUMENTED_INSTRUCTION 243
|
||||
#define INSTRUMENTED_JUMP_FORWARD 244
|
||||
#define INSTRUMENTED_POP_JUMP_IF_TRUE 245
|
||||
#define INSTRUMENTED_POP_JUMP_IF_FALSE 246
|
||||
#define INSTRUMENTED_POP_JUMP_IF_NONE 247
|
||||
#define INSTRUMENTED_POP_JUMP_IF_NOT_NONE 248
|
||||
#define INSTRUMENTED_RESUME 249
|
||||
#define INSTRUMENTED_RETURN_VALUE 250
|
||||
#define INSTRUMENTED_YIELD_VALUE 251
|
||||
#define INSTRUMENTED_CALL 252
|
||||
#define INSTRUMENTED_JUMP_BACKWARD 253
|
||||
|
@ -237,7 +237,7 @@ extern "C" {
|
|||
|
||||
#define HAVE_ARGUMENT 41
|
||||
#define MIN_SPECIALIZED_OPCODE 150
|
||||
#define MIN_INSTRUMENTED_OPCODE 236
|
||||
#define MIN_INSTRUMENTED_OPCODE 237
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue