summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2023-06-05 10:07:04 (GMT)
committerGitHub <noreply@github.com>2023-06-05 10:07:04 (GMT)
commit06893403668961fdbd5d9ece18162eb3470fc8dd (patch)
treeb7aeda20407a014944b7044b81e451a50e9f6924 /Include
parente8ecb9ee6bec03d0c4490f3e7f1524e56e2f6a0f (diff)
downloadcpython-06893403668961fdbd5d9ece18162eb3470fc8dd.zip
cpython-06893403668961fdbd5d9ece18162eb3470fc8dd.tar.gz
cpython-06893403668961fdbd5d9ece18162eb3470fc8dd.tar.bz2
GH-105229: Replace some superinstructions with single instruction equivalent. (GH-105230)
Diffstat (limited to 'Include')
-rw-r--r--Include/internal/pycore_opcode.h36
-rw-r--r--Include/internal/pycore_opcode_utils.h7
-rw-r--r--Include/opcode.h28
3 files changed, 34 insertions, 37 deletions
diff --git a/Include/internal/pycore_opcode.h b/Include/internal/pycore_opcode.h
index 15c8dcf..784b86e 100644
--- a/Include/internal/pycore_opcode.h
+++ b/Include/internal/pycore_opcode.h
@@ -177,8 +177,8 @@ const uint8_t _PyOpcode_Deopt[256] = {
[LOAD_FAST] = LOAD_FAST,
[LOAD_FAST_AND_CLEAR] = LOAD_FAST_AND_CLEAR,
[LOAD_FAST_CHECK] = LOAD_FAST_CHECK,
+ [LOAD_FAST_LOAD_FAST] = LOAD_FAST_LOAD_FAST,
[LOAD_FAST__LOAD_CONST] = LOAD_FAST,
- [LOAD_FAST__LOAD_FAST] = LOAD_FAST,
[LOAD_FROM_DICT_OR_DEREF] = LOAD_FROM_DICT_OR_DEREF,
[LOAD_FROM_DICT_OR_GLOBALS] = LOAD_FROM_DICT_OR_GLOBALS,
[LOAD_GLOBAL] = LOAD_GLOBAL,
@@ -223,8 +223,8 @@ const uint8_t _PyOpcode_Deopt[256] = {
[STORE_ATTR_WITH_HINT] = STORE_ATTR,
[STORE_DEREF] = STORE_DEREF,
[STORE_FAST] = STORE_FAST,
- [STORE_FAST__LOAD_FAST] = STORE_FAST,
- [STORE_FAST__STORE_FAST] = STORE_FAST,
+ [STORE_FAST_LOAD_FAST] = STORE_FAST_LOAD_FAST,
+ [STORE_FAST_STORE_FAST] = STORE_FAST_STORE_FAST,
[STORE_GLOBAL] = STORE_GLOBAL,
[STORE_NAME] = STORE_NAME,
[STORE_SLICE] = STORE_SLICE,
@@ -335,7 +335,7 @@ static const char *const _PyOpcode_OpName[267] = {
[SETUP_ANNOTATIONS] = "SETUP_ANNOTATIONS",
[LOAD_FAST__LOAD_CONST] = "LOAD_FAST__LOAD_CONST",
[LOAD_LOCALS] = "LOAD_LOCALS",
- [LOAD_FAST__LOAD_FAST] = "LOAD_FAST__LOAD_FAST",
+ [LOAD_GLOBAL_BUILTIN] = "LOAD_GLOBAL_BUILTIN",
[POP_EXCEPT] = "POP_EXCEPT",
[STORE_NAME] = "STORE_NAME",
[DELETE_NAME] = "DELETE_NAME",
@@ -358,9 +358,9 @@ static const char *const _PyOpcode_OpName[267] = {
[IMPORT_NAME] = "IMPORT_NAME",
[IMPORT_FROM] = "IMPORT_FROM",
[JUMP_FORWARD] = "JUMP_FORWARD",
- [LOAD_GLOBAL_BUILTIN] = "LOAD_GLOBAL_BUILTIN",
[LOAD_GLOBAL_MODULE] = "LOAD_GLOBAL_MODULE",
[STORE_ATTR_INSTANCE_VALUE] = "STORE_ATTR_INSTANCE_VALUE",
+ [STORE_ATTR_SLOT] = "STORE_ATTR_SLOT",
[POP_JUMP_IF_FALSE] = "POP_JUMP_IF_FALSE",
[POP_JUMP_IF_TRUE] = "POP_JUMP_IF_TRUE",
[LOAD_GLOBAL] = "LOAD_GLOBAL",
@@ -395,29 +395,29 @@ static const char *const _PyOpcode_OpName[267] = {
[LIST_APPEND] = "LIST_APPEND",
[SET_ADD] = "SET_ADD",
[MAP_ADD] = "MAP_ADD",
- [STORE_ATTR_SLOT] = "STORE_ATTR_SLOT",
+ [STORE_ATTR_WITH_HINT] = "STORE_ATTR_WITH_HINT",
[COPY_FREE_VARS] = "COPY_FREE_VARS",
[YIELD_VALUE] = "YIELD_VALUE",
[RESUME] = "RESUME",
[MATCH_CLASS] = "MATCH_CLASS",
- [STORE_ATTR_WITH_HINT] = "STORE_ATTR_WITH_HINT",
- [STORE_FAST__LOAD_FAST] = "STORE_FAST__LOAD_FAST",
+ [STORE_SUBSCR_DICT] = "STORE_SUBSCR_DICT",
+ [STORE_SUBSCR_LIST_INT] = "STORE_SUBSCR_LIST_INT",
[FORMAT_VALUE] = "FORMAT_VALUE",
[BUILD_CONST_KEY_MAP] = "BUILD_CONST_KEY_MAP",
[BUILD_STRING] = "BUILD_STRING",
- [STORE_FAST__STORE_FAST] = "STORE_FAST__STORE_FAST",
- [STORE_SUBSCR_DICT] = "STORE_SUBSCR_DICT",
- [STORE_SUBSCR_LIST_INT] = "STORE_SUBSCR_LIST_INT",
[UNPACK_SEQUENCE_LIST] = "UNPACK_SEQUENCE_LIST",
+ [UNPACK_SEQUENCE_TUPLE] = "UNPACK_SEQUENCE_TUPLE",
+ [UNPACK_SEQUENCE_TWO_TUPLE] = "UNPACK_SEQUENCE_TWO_TUPLE",
+ [SEND_GEN] = "SEND_GEN",
[LIST_EXTEND] = "LIST_EXTEND",
[SET_UPDATE] = "SET_UPDATE",
[DICT_MERGE] = "DICT_MERGE",
[DICT_UPDATE] = "DICT_UPDATE",
- [UNPACK_SEQUENCE_TUPLE] = "UNPACK_SEQUENCE_TUPLE",
- [UNPACK_SEQUENCE_TWO_TUPLE] = "UNPACK_SEQUENCE_TWO_TUPLE",
- [SEND_GEN] = "SEND_GEN",
- [169] = "<169>",
- [170] = "<170>",
+ [166] = "<166>",
+ [167] = "<167>",
+ [LOAD_FAST_LOAD_FAST] = "LOAD_FAST_LOAD_FAST",
+ [STORE_FAST_LOAD_FAST] = "STORE_FAST_LOAD_FAST",
+ [STORE_FAST_STORE_FAST] = "STORE_FAST_STORE_FAST",
[CALL] = "CALL",
[KW_NAMES] = "KW_NAMES",
[CALL_INTRINSIC_1] = "CALL_INTRINSIC_1",
@@ -518,8 +518,8 @@ static const char *const _PyOpcode_OpName[267] = {
#endif
#define EXTRA_CASES \
- case 169: \
- case 170: \
+ case 166: \
+ case 167: \
case 177: \
case 178: \
case 179: \
diff --git a/Include/internal/pycore_opcode_utils.h b/Include/internal/pycore_opcode_utils.h
index 9dfe775..e6a8a8e 100644
--- a/Include/internal/pycore_opcode_utils.h
+++ b/Include/internal/pycore_opcode_utils.h
@@ -56,11 +56,8 @@ extern "C" {
(opcode) == RERAISE)
#define IS_SUPERINSTRUCTION_OPCODE(opcode) \
- ((opcode) == LOAD_FAST__LOAD_FAST || \
- (opcode) == LOAD_FAST__LOAD_CONST || \
- (opcode) == LOAD_CONST__LOAD_FAST || \
- (opcode) == STORE_FAST__LOAD_FAST || \
- (opcode) == STORE_FAST__STORE_FAST)
+ ((opcode) == LOAD_FAST__LOAD_CONST || \
+ (opcode) == LOAD_CONST__LOAD_FAST)
#define LOG_BITS_PER_INT 5
diff --git a/Include/opcode.h b/Include/opcode.h
index bbf5756..7aa6f84 100644
--- a/Include/opcode.h
+++ b/Include/opcode.h
@@ -114,6 +114,9 @@ extern "C" {
#define SET_UPDATE 163
#define DICT_MERGE 164
#define DICT_UPDATE 165
+#define LOAD_FAST_LOAD_FAST 168
+#define STORE_FAST_LOAD_FAST 169
+#define STORE_FAST_STORE_FAST 170
#define CALL 171
#define KW_NAMES 172
#define CALL_INTRINSIC_1 173
@@ -203,20 +206,17 @@ extern "C" {
#define LOAD_ATTR_METHOD_WITH_VALUES 82
#define LOAD_CONST__LOAD_FAST 84
#define LOAD_FAST__LOAD_CONST 86
-#define LOAD_FAST__LOAD_FAST 88
-#define LOAD_GLOBAL_BUILTIN 111
-#define LOAD_GLOBAL_MODULE 112
-#define STORE_ATTR_INSTANCE_VALUE 113
-#define STORE_ATTR_SLOT 148
-#define STORE_ATTR_WITH_HINT 153
-#define STORE_FAST__LOAD_FAST 154
-#define STORE_FAST__STORE_FAST 158
-#define STORE_SUBSCR_DICT 159
-#define STORE_SUBSCR_LIST_INT 160
-#define UNPACK_SEQUENCE_LIST 161
-#define UNPACK_SEQUENCE_TUPLE 166
-#define UNPACK_SEQUENCE_TWO_TUPLE 167
-#define SEND_GEN 168
+#define LOAD_GLOBAL_BUILTIN 88
+#define LOAD_GLOBAL_MODULE 111
+#define STORE_ATTR_INSTANCE_VALUE 112
+#define STORE_ATTR_SLOT 113
+#define STORE_ATTR_WITH_HINT 148
+#define STORE_SUBSCR_DICT 153
+#define STORE_SUBSCR_LIST_INT 154
+#define UNPACK_SEQUENCE_LIST 158
+#define UNPACK_SEQUENCE_TUPLE 159
+#define UNPACK_SEQUENCE_TWO_TUPLE 160
+#define SEND_GEN 161
#define HAS_ARG(op) ((((op) >= HAVE_ARGUMENT) && (!IS_PSEUDO_OPCODE(op)))\
|| ((op) == JUMP) \