mirror of
https://github.com/python/cpython.git
synced 2025-11-02 11:08:57 +00:00
gh-105775: Convert LOAD_CLOSURE to a pseudo-op (#106059)
This enables super-instruction formation, removal of checks for uninitialized variables, and frees up an instruction.
This commit is contained in:
parent
3c70d467c1
commit
8bff940ad6
16 changed files with 733 additions and 702 deletions
15
Include/internal/pycore_opcode.h
generated
15
Include/internal/pycore_opcode.h
generated
|
|
@ -161,7 +161,6 @@ const uint8_t _PyOpcode_Deopt[256] = {
|
|||
[LOAD_ATTR_SLOT] = LOAD_ATTR,
|
||||
[LOAD_ATTR_WITH_HINT] = LOAD_ATTR,
|
||||
[LOAD_BUILD_CLASS] = LOAD_BUILD_CLASS,
|
||||
[LOAD_CLOSURE] = LOAD_CLOSURE,
|
||||
[LOAD_CONST] = LOAD_CONST,
|
||||
[LOAD_DEREF] = LOAD_DEREF,
|
||||
[LOAD_FAST] = LOAD_FAST,
|
||||
|
|
@ -236,7 +235,7 @@ const uint8_t _PyOpcode_Deopt[256] = {
|
|||
#endif // NEED_OPCODE_TABLES
|
||||
|
||||
#ifdef Py_DEBUG
|
||||
static const char *const _PyOpcode_OpName[267] = {
|
||||
static const char *const _PyOpcode_OpName[268] = {
|
||||
[CACHE] = "CACHE",
|
||||
[POP_TOP] = "POP_TOP",
|
||||
[PUSH_NULL] = "PUSH_NULL",
|
||||
|
|
@ -373,7 +372,7 @@ static const char *const _PyOpcode_OpName[267] = {
|
|||
[BUILD_SLICE] = "BUILD_SLICE",
|
||||
[JUMP_BACKWARD_NO_INTERRUPT] = "JUMP_BACKWARD_NO_INTERRUPT",
|
||||
[MAKE_CELL] = "MAKE_CELL",
|
||||
[LOAD_CLOSURE] = "LOAD_CLOSURE",
|
||||
[CALL_BUILTIN_FAST_WITH_KEYWORDS] = "CALL_BUILTIN_FAST_WITH_KEYWORDS",
|
||||
[LOAD_DEREF] = "LOAD_DEREF",
|
||||
[STORE_DEREF] = "STORE_DEREF",
|
||||
[DELETE_DEREF] = "DELETE_DEREF",
|
||||
|
|
@ -385,26 +384,26 @@ static const char *const _PyOpcode_OpName[267] = {
|
|||
[LIST_APPEND] = "LIST_APPEND",
|
||||
[SET_ADD] = "SET_ADD",
|
||||
[MAP_ADD] = "MAP_ADD",
|
||||
[CALL_BUILTIN_FAST_WITH_KEYWORDS] = "CALL_BUILTIN_FAST_WITH_KEYWORDS",
|
||||
[CALL_NO_KW_LEN] = "CALL_NO_KW_LEN",
|
||||
[COPY_FREE_VARS] = "COPY_FREE_VARS",
|
||||
[YIELD_VALUE] = "YIELD_VALUE",
|
||||
[RESUME] = "RESUME",
|
||||
[MATCH_CLASS] = "MATCH_CLASS",
|
||||
[CALL_NO_KW_LEN] = "CALL_NO_KW_LEN",
|
||||
[CALL_NO_KW_ISINSTANCE] = "CALL_NO_KW_ISINSTANCE",
|
||||
[CALL_NO_KW_LIST_APPEND] = "CALL_NO_KW_LIST_APPEND",
|
||||
[CALL_NO_KW_METHOD_DESCRIPTOR_O] = "CALL_NO_KW_METHOD_DESCRIPTOR_O",
|
||||
[BUILD_CONST_KEY_MAP] = "BUILD_CONST_KEY_MAP",
|
||||
[BUILD_STRING] = "BUILD_STRING",
|
||||
[CONVERT_VALUE] = "CONVERT_VALUE",
|
||||
[CALL_NO_KW_METHOD_DESCRIPTOR_O] = "CALL_NO_KW_METHOD_DESCRIPTOR_O",
|
||||
[CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = "CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS",
|
||||
[CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS] = "CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS",
|
||||
[CALL_NO_KW_METHOD_DESCRIPTOR_FAST] = "CALL_NO_KW_METHOD_DESCRIPTOR_FAST",
|
||||
[LIST_EXTEND] = "LIST_EXTEND",
|
||||
[SET_UPDATE] = "SET_UPDATE",
|
||||
[DICT_MERGE] = "DICT_MERGE",
|
||||
[DICT_UPDATE] = "DICT_UPDATE",
|
||||
[CALL_NO_KW_METHOD_DESCRIPTOR_FAST] = "CALL_NO_KW_METHOD_DESCRIPTOR_FAST",
|
||||
[CALL_NO_KW_ALLOC_AND_ENTER_INIT] = "CALL_NO_KW_ALLOC_AND_ENTER_INIT",
|
||||
[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",
|
||||
|
|
@ -504,10 +503,12 @@ static const char *const _PyOpcode_OpName[267] = {
|
|||
[LOAD_ZERO_SUPER_METHOD] = "LOAD_ZERO_SUPER_METHOD",
|
||||
[LOAD_ZERO_SUPER_ATTR] = "LOAD_ZERO_SUPER_ATTR",
|
||||
[STORE_FAST_MAYBE_NULL] = "STORE_FAST_MAYBE_NULL",
|
||||
[LOAD_CLOSURE] = "LOAD_CLOSURE",
|
||||
};
|
||||
#endif
|
||||
|
||||
#define EXTRA_CASES \
|
||||
case 167: \
|
||||
case 178: \
|
||||
case 179: \
|
||||
case 180: \
|
||||
|
|
|
|||
22
Include/opcode.h
generated
22
Include/opcode.h
generated
|
|
@ -93,7 +93,6 @@ extern "C" {
|
|||
#define BUILD_SLICE 133
|
||||
#define JUMP_BACKWARD_NO_INTERRUPT 134
|
||||
#define MAKE_CELL 135
|
||||
#define LOAD_CLOSURE 136
|
||||
#define LOAD_DEREF 137
|
||||
#define STORE_DEREF 138
|
||||
#define DELETE_DEREF 139
|
||||
|
|
@ -158,7 +157,8 @@ extern "C" {
|
|||
#define LOAD_ZERO_SUPER_METHOD 264
|
||||
#define LOAD_ZERO_SUPER_ATTR 265
|
||||
#define STORE_FAST_MAYBE_NULL 266
|
||||
#define MAX_PSEUDO_OPCODE 266
|
||||
#define LOAD_CLOSURE 267
|
||||
#define MAX_PSEUDO_OPCODE 267
|
||||
#define BINARY_OP_MULTIPLY_INT 6
|
||||
#define BINARY_OP_ADD_INT 7
|
||||
#define BINARY_OP_SUBTRACT_INT 8
|
||||
|
|
@ -210,15 +210,15 @@ extern "C" {
|
|||
#define CALL_BUILTIN_CLASS 112
|
||||
#define CALL_NO_KW_BUILTIN_O 113
|
||||
#define CALL_NO_KW_BUILTIN_FAST 132
|
||||
#define CALL_BUILTIN_FAST_WITH_KEYWORDS 148
|
||||
#define CALL_NO_KW_LEN 153
|
||||
#define CALL_NO_KW_ISINSTANCE 154
|
||||
#define CALL_NO_KW_LIST_APPEND 155
|
||||
#define CALL_NO_KW_METHOD_DESCRIPTOR_O 159
|
||||
#define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 160
|
||||
#define CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 161
|
||||
#define CALL_NO_KW_METHOD_DESCRIPTOR_FAST 166
|
||||
#define CALL_NO_KW_ALLOC_AND_ENTER_INIT 167
|
||||
#define CALL_BUILTIN_FAST_WITH_KEYWORDS 136
|
||||
#define CALL_NO_KW_LEN 148
|
||||
#define CALL_NO_KW_ISINSTANCE 153
|
||||
#define CALL_NO_KW_LIST_APPEND 154
|
||||
#define CALL_NO_KW_METHOD_DESCRIPTOR_O 155
|
||||
#define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 159
|
||||
#define CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 160
|
||||
#define CALL_NO_KW_METHOD_DESCRIPTOR_FAST 161
|
||||
#define CALL_NO_KW_ALLOC_AND_ENTER_INIT 166
|
||||
|
||||
#define NB_ADD 0
|
||||
#define NB_AND 1
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue