aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/_opcode_metadata.py
diff options
context:
space:
mode:
authorIrit Katriel <1055913+iritkatriel@users.noreply.github.com>2023-08-16 23:25:18 +0100
committerGitHub <noreply@github.com>2023-08-16 22:25:18 +0000
commit665a4391e10167dad1c854fb604c86f336fcd331 (patch)
treee1d55069486dd67e6857a13fafc12b6e865cacf7 /Lib/_opcode_metadata.py
parente88eb3775ecdcb3af6c6d694a935b7fa5f41e5ce (diff)
downloadcpython-665a4391e10167dad1c854fb604c86f336fcd331.tar.gz
cpython-665a4391e10167dad1c854fb604c86f336fcd331.zip
gh-105481: generate op IDs from bytecode.c instead of hard coding them in opcode.py (#107971)
Diffstat (limited to 'Lib/_opcode_metadata.py')
-rw-r--r--Lib/_opcode_metadata.py226
1 files changed, 225 insertions, 1 deletions
diff --git a/Lib/_opcode_metadata.py b/Lib/_opcode_metadata.py
index 17101d1d947..b02aa771c34 100644
--- a/Lib/_opcode_metadata.py
+++ b/Lib/_opcode_metadata.py
@@ -103,4 +103,228 @@ _specializations = {
# An irregular case:
_specializations["BINARY_OP"].append("BINARY_OP_INPLACE_ADD_UNICODE")
-_specialized_instructions = [opcode for family in _specializations.values() for opcode in family]
+_specialized_opmap = {
+ 'BINARY_OP_ADD_FLOAT': 3,
+ 'BINARY_OP_ADD_INT': 4,
+ 'BINARY_OP_ADD_UNICODE': 5,
+ 'BINARY_OP_INPLACE_ADD_UNICODE': 6,
+ 'BINARY_OP_MULTIPLY_FLOAT': 7,
+ 'BINARY_OP_MULTIPLY_INT': 8,
+ 'BINARY_OP_SUBTRACT_FLOAT': 9,
+ 'BINARY_OP_SUBTRACT_INT': 10,
+ 'BINARY_SUBSCR_DICT': 13,
+ 'BINARY_SUBSCR_GETITEM': 14,
+ 'BINARY_SUBSCR_LIST_INT': 15,
+ 'BINARY_SUBSCR_STR_INT': 16,
+ 'BINARY_SUBSCR_TUPLE_INT': 18,
+ 'STORE_ATTR_INSTANCE_VALUE': 50,
+ 'STORE_ATTR_SLOT': 51,
+ 'STORE_SUBSCR_DICT': 54,
+ 'STORE_SUBSCR_LIST_INT': 55,
+ 'TO_BOOL_ALWAYS_TRUE': 57,
+ 'TO_BOOL_BOOL': 58,
+ 'TO_BOOL_INT': 59,
+ 'TO_BOOL_LIST': 60,
+ 'TO_BOOL_NONE': 61,
+ 'TO_BOOL_STR': 62,
+ 'CALL_BOUND_METHOD_EXACT_ARGS': 76,
+ 'CALL_BUILTIN_CLASS': 77,
+ 'CALL_BUILTIN_FAST_WITH_KEYWORDS': 78,
+ 'CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS': 82,
+ 'CALL_NO_KW_ALLOC_AND_ENTER_INIT': 83,
+ 'CALL_NO_KW_BUILTIN_FAST': 84,
+ 'CALL_NO_KW_BUILTIN_O': 85,
+ 'CALL_NO_KW_ISINSTANCE': 86,
+ 'CALL_NO_KW_LEN': 87,
+ 'CALL_NO_KW_LIST_APPEND': 88,
+ 'CALL_NO_KW_METHOD_DESCRIPTOR_FAST': 89,
+ 'CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS': 90,
+ 'CALL_NO_KW_METHOD_DESCRIPTOR_O': 91,
+ 'CALL_NO_KW_STR_1': 92,
+ 'CALL_NO_KW_TUPLE_1': 93,
+ 'CALL_NO_KW_TYPE_1': 94,
+ 'CALL_PY_EXACT_ARGS': 95,
+ 'CALL_PY_WITH_DEFAULTS': 96,
+ 'COMPARE_OP_FLOAT': 98,
+ 'COMPARE_OP_INT': 99,
+ 'COMPARE_OP_STR': 100,
+ 'FOR_ITER_GEN': 115,
+ 'FOR_ITER_LIST': 116,
+ 'FOR_ITER_RANGE': 117,
+ 'FOR_ITER_TUPLE': 118,
+ 'LOAD_ATTR_CLASS': 130,
+ 'LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN': 131,
+ 'LOAD_ATTR_INSTANCE_VALUE': 132,
+ 'LOAD_ATTR_METHOD_LAZY_DICT': 133,
+ 'LOAD_ATTR_METHOD_NO_DICT': 134,
+ 'LOAD_ATTR_METHOD_WITH_VALUES': 135,
+ 'LOAD_ATTR_MODULE': 136,
+ 'LOAD_ATTR_NONDESCRIPTOR_NO_DICT': 137,
+ 'LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES': 138,
+ 'LOAD_ATTR_PROPERTY': 139,
+ 'LOAD_ATTR_SLOT': 140,
+ 'LOAD_ATTR_WITH_HINT': 141,
+ 'LOAD_GLOBAL_BUILTIN': 151,
+ 'LOAD_GLOBAL_MODULE': 152,
+ 'LOAD_SUPER_ATTR_ATTR': 155,
+ 'LOAD_SUPER_ATTR_METHOD': 156,
+ 'SEND_GEN': 169,
+ 'STORE_ATTR_WITH_HINT': 174,
+ 'UNPACK_SEQUENCE_LIST': 184,
+ 'UNPACK_SEQUENCE_TUPLE': 185,
+ 'UNPACK_SEQUENCE_TWO_TUPLE': 186,
+}
+
+opmap = {
+ 'CACHE': 0,
+ 'BEFORE_ASYNC_WITH': 1,
+ 'BEFORE_WITH': 2,
+ 'BINARY_SLICE': 11,
+ 'BINARY_SUBSCR': 12,
+ 'RESERVED': 17,
+ 'CHECK_EG_MATCH': 19,
+ 'CHECK_EXC_MATCH': 20,
+ 'CLEANUP_THROW': 21,
+ 'DELETE_SUBSCR': 22,
+ 'END_ASYNC_FOR': 23,
+ 'END_FOR': 24,
+ 'END_SEND': 25,
+ 'EXIT_INIT_CHECK': 26,
+ 'FORMAT_SIMPLE': 27,
+ 'FORMAT_WITH_SPEC': 28,
+ 'GET_AITER': 29,
+ 'GET_ANEXT': 30,
+ 'GET_ITER': 31,
+ 'GET_LEN': 32,
+ 'GET_YIELD_FROM_ITER': 33,
+ 'INTERPRETER_EXIT': 34,
+ 'LOAD_ASSERTION_ERROR': 35,
+ 'LOAD_BUILD_CLASS': 36,
+ 'LOAD_LOCALS': 37,
+ 'MAKE_FUNCTION': 38,
+ 'MATCH_KEYS': 39,
+ 'MATCH_MAPPING': 40,
+ 'MATCH_SEQUENCE': 41,
+ 'NOP': 42,
+ 'POP_EXCEPT': 43,
+ 'POP_TOP': 44,
+ 'PUSH_EXC_INFO': 45,
+ 'PUSH_NULL': 46,
+ 'RETURN_GENERATOR': 47,
+ 'RETURN_VALUE': 48,
+ 'SETUP_ANNOTATIONS': 49,
+ 'STORE_SLICE': 52,
+ 'STORE_SUBSCR': 53,
+ 'TO_BOOL': 56,
+ 'UNARY_INVERT': 63,
+ 'UNARY_NEGATIVE': 64,
+ 'UNARY_NOT': 65,
+ 'WITH_EXCEPT_START': 66,
+ 'BINARY_OP': 67,
+ 'BUILD_CONST_KEY_MAP': 68,
+ 'BUILD_LIST': 69,
+ 'BUILD_MAP': 70,
+ 'BUILD_SET': 71,
+ 'BUILD_SLICE': 72,
+ 'BUILD_STRING': 73,
+ 'BUILD_TUPLE': 74,
+ 'CALL': 75,
+ 'CALL_FUNCTION_EX': 79,
+ 'CALL_INTRINSIC_1': 80,
+ 'CALL_INTRINSIC_2': 81,
+ 'COMPARE_OP': 97,
+ 'CONTAINS_OP': 101,
+ 'CONVERT_VALUE': 102,
+ 'COPY': 103,
+ 'COPY_FREE_VARS': 104,
+ 'DELETE_ATTR': 105,
+ 'DELETE_DEREF': 106,
+ 'DELETE_FAST': 107,
+ 'DELETE_GLOBAL': 108,
+ 'DELETE_NAME': 109,
+ 'DICT_MERGE': 110,
+ 'DICT_UPDATE': 111,
+ 'ENTER_EXECUTOR': 112,
+ 'EXTENDED_ARG': 113,
+ 'FOR_ITER': 114,
+ 'GET_AWAITABLE': 119,
+ 'IMPORT_FROM': 120,
+ 'IMPORT_NAME': 121,
+ 'IS_OP': 122,
+ 'JUMP_BACKWARD': 123,
+ 'JUMP_BACKWARD_NO_INTERRUPT': 124,
+ 'JUMP_FORWARD': 125,
+ 'KW_NAMES': 126,
+ 'LIST_APPEND': 127,
+ 'LIST_EXTEND': 128,
+ 'LOAD_ATTR': 129,
+ 'LOAD_CONST': 142,
+ 'LOAD_DEREF': 143,
+ 'LOAD_FAST': 144,
+ 'LOAD_FAST_AND_CLEAR': 145,
+ 'LOAD_FAST_CHECK': 146,
+ 'LOAD_FAST_LOAD_FAST': 147,
+ 'LOAD_FROM_DICT_OR_DEREF': 148,
+ 'LOAD_FROM_DICT_OR_GLOBALS': 149,
+ 'LOAD_GLOBAL': 150,
+ 'LOAD_NAME': 153,
+ 'LOAD_SUPER_ATTR': 154,
+ 'MAKE_CELL': 157,
+ 'MAP_ADD': 158,
+ 'MATCH_CLASS': 159,
+ 'POP_JUMP_IF_FALSE': 160,
+ 'POP_JUMP_IF_NONE': 161,
+ 'POP_JUMP_IF_NOT_NONE': 162,
+ 'POP_JUMP_IF_TRUE': 163,
+ 'RAISE_VARARGS': 164,
+ 'RERAISE': 165,
+ 'RESUME': 166,
+ 'RETURN_CONST': 167,
+ 'SEND': 168,
+ 'SET_ADD': 170,
+ 'SET_FUNCTION_ATTRIBUTE': 171,
+ 'SET_UPDATE': 172,
+ 'STORE_ATTR': 173,
+ 'STORE_DEREF': 175,
+ 'STORE_FAST': 176,
+ 'STORE_FAST_LOAD_FAST': 177,
+ 'STORE_FAST_STORE_FAST': 178,
+ 'STORE_GLOBAL': 179,
+ 'STORE_NAME': 180,
+ 'SWAP': 181,
+ 'UNPACK_EX': 182,
+ 'UNPACK_SEQUENCE': 183,
+ 'YIELD_VALUE': 187,
+ 'INSTRUMENTED_RESUME': 237,
+ 'INSTRUMENTED_END_FOR': 238,
+ 'INSTRUMENTED_END_SEND': 239,
+ 'INSTRUMENTED_RETURN_VALUE': 240,
+ 'INSTRUMENTED_RETURN_CONST': 241,
+ 'INSTRUMENTED_YIELD_VALUE': 242,
+ 'INSTRUMENTED_LOAD_SUPER_ATTR': 243,
+ 'INSTRUMENTED_FOR_ITER': 244,
+ 'INSTRUMENTED_CALL': 245,
+ 'INSTRUMENTED_CALL_FUNCTION_EX': 246,
+ 'INSTRUMENTED_INSTRUCTION': 247,
+ 'INSTRUMENTED_JUMP_FORWARD': 248,
+ 'INSTRUMENTED_JUMP_BACKWARD': 249,
+ 'INSTRUMENTED_POP_JUMP_IF_TRUE': 250,
+ 'INSTRUMENTED_POP_JUMP_IF_FALSE': 251,
+ 'INSTRUMENTED_POP_JUMP_IF_NONE': 252,
+ 'INSTRUMENTED_POP_JUMP_IF_NOT_NONE': 253,
+ 'INSTRUMENTED_LINE': 254,
+ 'JUMP': 256,
+ 'JUMP_NO_INTERRUPT': 257,
+ 'LOAD_CLOSURE': 258,
+ 'LOAD_METHOD': 259,
+ 'LOAD_SUPER_METHOD': 260,
+ 'LOAD_ZERO_SUPER_ATTR': 261,
+ 'LOAD_ZERO_SUPER_METHOD': 262,
+ 'POP_BLOCK': 263,
+ 'SETUP_CLEANUP': 264,
+ 'SETUP_FINALLY': 265,
+ 'SETUP_WITH': 266,
+ 'STORE_FAST_MAYBE_NULL': 267,
+}
+MIN_INSTRUMENTED_OPCODE = 237
+HAVE_ARGUMENT = 67