mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
GH-128685: Specialize (rather than quicken) LOAD_CONST into LOAD_CONST_[IM]MORTAL (GH-128708)
This commit is contained in:
parent
29fe8072cf
commit
ddd959987c
14 changed files with 121 additions and 65 deletions
16
Include/internal/pycore_opcode_metadata.h
generated
16
Include/internal/pycore_opcode_metadata.h
generated
|
@ -321,6 +321,8 @@ int _PyOpcode_num_popped(int opcode, int oparg) {
|
|||
return 0;
|
||||
case LOAD_CONST_IMMORTAL:
|
||||
return 0;
|
||||
case LOAD_CONST_MORTAL:
|
||||
return 0;
|
||||
case LOAD_DEREF:
|
||||
return 0;
|
||||
case LOAD_FAST:
|
||||
|
@ -788,6 +790,8 @@ int _PyOpcode_num_pushed(int opcode, int oparg) {
|
|||
return 1;
|
||||
case LOAD_CONST_IMMORTAL:
|
||||
return 1;
|
||||
case LOAD_CONST_MORTAL:
|
||||
return 1;
|
||||
case LOAD_DEREF:
|
||||
return 1;
|
||||
case LOAD_FAST:
|
||||
|
@ -1559,6 +1563,10 @@ int _PyOpcode_max_stack_effect(int opcode, int oparg, int *effect) {
|
|||
*effect = 1;
|
||||
return 0;
|
||||
}
|
||||
case LOAD_CONST_MORTAL: {
|
||||
*effect = 1;
|
||||
return 0;
|
||||
}
|
||||
case LOAD_DEREF: {
|
||||
*effect = 1;
|
||||
return 0;
|
||||
|
@ -2109,8 +2117,9 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[266] = {
|
|||
[LOAD_ATTR_WITH_HINT] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
|
||||
[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] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_CONST_FLAG },
|
||||
[LOAD_CONST_IMMORTAL] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_CONST_FLAG },
|
||||
[LOAD_CONST_MORTAL] = { 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 },
|
||||
|
@ -2317,8 +2326,8 @@ _PyOpcode_macro_expansion[256] = {
|
|||
[LOAD_ATTR_WITH_HINT] = { .nuops = 3, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _CHECK_ATTR_WITH_HINT, 0, 0 }, { _LOAD_ATTR_WITH_HINT, 1, 3 } } },
|
||||
[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_CONST_MORTAL] = { .nuops = 1, .uops = { { _LOAD_CONST_MORTAL, 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 } } },
|
||||
|
@ -2541,6 +2550,7 @@ const char *_PyOpcode_OpName[266] = {
|
|||
[LOAD_COMMON_CONSTANT] = "LOAD_COMMON_CONSTANT",
|
||||
[LOAD_CONST] = "LOAD_CONST",
|
||||
[LOAD_CONST_IMMORTAL] = "LOAD_CONST_IMMORTAL",
|
||||
[LOAD_CONST_MORTAL] = "LOAD_CONST_MORTAL",
|
||||
[LOAD_DEREF] = "LOAD_DEREF",
|
||||
[LOAD_FAST] = "LOAD_FAST",
|
||||
[LOAD_FAST_AND_CLEAR] = "LOAD_FAST_AND_CLEAR",
|
||||
|
@ -2796,6 +2806,7 @@ const uint8_t _PyOpcode_Deopt[256] = {
|
|||
[LOAD_COMMON_CONSTANT] = LOAD_COMMON_CONSTANT,
|
||||
[LOAD_CONST] = LOAD_CONST,
|
||||
[LOAD_CONST_IMMORTAL] = LOAD_CONST,
|
||||
[LOAD_CONST_MORTAL] = LOAD_CONST,
|
||||
[LOAD_DEREF] = LOAD_DEREF,
|
||||
[LOAD_FAST] = LOAD_FAST,
|
||||
[LOAD_FAST_AND_CLEAR] = LOAD_FAST_AND_CLEAR,
|
||||
|
@ -2912,7 +2923,6 @@ const uint8_t _PyOpcode_Deopt[256] = {
|
|||
case 146: \
|
||||
case 147: \
|
||||
case 148: \
|
||||
case 228: \
|
||||
case 229: \
|
||||
case 230: \
|
||||
case 231: \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue