summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2024-10-29 11:15:42 (GMT)
committerGitHub <noreply@github.com>2024-10-29 11:15:42 (GMT)
commitfaa3272fb8d63d481a136cc0467a0cba6ed7b264 (patch)
tree474ac9edbff637a8edb280846a1d3d9b113915c4 /Include
parent67f5c5bd6fcc956a785edef3be67e8cbe470cd31 (diff)
downloadcpython-faa3272fb8d63d481a136cc0467a0cba6ed7b264.zip
cpython-faa3272fb8d63d481a136cc0467a0cba6ed7b264.tar.gz
cpython-faa3272fb8d63d481a136cc0467a0cba6ed7b264.tar.bz2
GH-125837: Split `LOAD_CONST` into three. (GH-125972)
* Add LOAD_CONST_IMMORTAL opcode * Add LOAD_SMALL_INT opcode * Remove RETURN_CONST opcode
Diffstat (limited to 'Include')
-rw-r--r--Include/internal/pycore_magic_number.h3
-rw-r--r--Include/internal/pycore_opcode_metadata.h33
-rw-r--r--Include/internal/pycore_opcode_utils.h1
-rw-r--r--Include/internal/pycore_uop_ids.h82
-rw-r--r--Include/internal/pycore_uop_metadata.h25
-rw-r--r--Include/opcode_ids.h96
6 files changed, 136 insertions, 104 deletions
diff --git a/Include/internal/pycore_magic_number.h b/Include/internal/pycore_magic_number.h
index 4aa89f3..14e2957 100644
--- a/Include/internal/pycore_magic_number.h
+++ b/Include/internal/pycore_magic_number.h
@@ -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 \
diff --git a/Include/internal/pycore_opcode_metadata.h b/Include/internal/pycore_opcode_metadata.h
index 93c9e71..58e583e 100644
--- a/Include/internal/pycore_opcode_metadata.h
+++ b/Include/internal/pycore_opcode_metadata.h
@@ -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;
diff --git a/Include/internal/pycore_opcode_utils.h b/Include/internal/pycore_opcode_utils.h
index e76f484..c6ce7e6 100644
--- a/Include/internal/pycore_opcode_utils.h
+++ b/Include/internal/pycore_opcode_utils.h
@@ -47,7 +47,6 @@ extern "C" {
#define IS_SCOPE_EXIT_OPCODE(opcode) \
((opcode) == RETURN_VALUE || \
- (opcode) == RETURN_CONST || \
(opcode) == RAISE_VARARGS || \
(opcode) == RERAISE)
diff --git a/Include/internal/pycore_uop_ids.h b/Include/internal/pycore_uop_ids.h
index 1951c65..de628d2 100644
--- a/Include/internal/pycore_uop_ids.h
+++ b/Include/internal/pycore_uop_ids.h
@@ -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
}
diff --git a/Include/internal/pycore_uop_metadata.h b/Include/internal/pycore_uop_metadata.h
index 2f0a7fb..4cfdece 100644
--- a/Include/internal/pycore_uop_metadata.h
+++ b/Include/internal/pycore_uop_metadata.h
@@ -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:
diff --git a/Include/opcode_ids.h b/Include/opcode_ids.h
index 327bdb7..ce3d23e 100644
--- a/Include/opcode_ids.h
+++ b/Include/opcode_ids.h
@@ -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
}