mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	* Add PRECALL_FUNCTION opcode. * Move 'call shape' varaibles into struct. * Replace CALL_NO_KW and CALL_KW with KW_NAMES and CALL instructions. * Specialize for builtin methods taking using the METH_FASTCALL | METH_KEYWORDS protocol. * Allow kwnames for specialized calls to builtin types. * Specialize calls to tuple(arg) and str(arg).
		
			
				
	
	
		
			241 lines
		
	
	
	
		
			9.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
		
			Generated
		
	
	
			
		
		
	
	
			241 lines
		
	
	
	
		
			9.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
		
			Generated
		
	
	
/* Auto-generated by Tools/scripts/generate_opcode_h.py from Lib/opcode.py */
 | 
						|
#ifndef Py_OPCODE_H
 | 
						|
#define Py_OPCODE_H
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
 | 
						|
/* Instruction opcodes for compiled code */
 | 
						|
#define POP_TOP                           1
 | 
						|
#define NOP                               9
 | 
						|
#define UNARY_POSITIVE                   10
 | 
						|
#define UNARY_NEGATIVE                   11
 | 
						|
#define UNARY_NOT                        12
 | 
						|
#define UNARY_INVERT                     15
 | 
						|
#define BINARY_SUBSCR                    25
 | 
						|
#define GET_LEN                          30
 | 
						|
#define MATCH_MAPPING                    31
 | 
						|
#define MATCH_SEQUENCE                   32
 | 
						|
#define MATCH_KEYS                       33
 | 
						|
#define PUSH_EXC_INFO                    35
 | 
						|
#define WITH_EXCEPT_START                49
 | 
						|
#define GET_AITER                        50
 | 
						|
#define GET_ANEXT                        51
 | 
						|
#define BEFORE_ASYNC_WITH                52
 | 
						|
#define BEFORE_WITH                      53
 | 
						|
#define END_ASYNC_FOR                    54
 | 
						|
#define STORE_SUBSCR                     60
 | 
						|
#define DELETE_SUBSCR                    61
 | 
						|
#define GET_ITER                         68
 | 
						|
#define GET_YIELD_FROM_ITER              69
 | 
						|
#define PRINT_EXPR                       70
 | 
						|
#define LOAD_BUILD_CLASS                 71
 | 
						|
#define GET_AWAITABLE                    73
 | 
						|
#define LOAD_ASSERTION_ERROR             74
 | 
						|
#define RETURN_GENERATOR                 75
 | 
						|
#define LIST_TO_TUPLE                    82
 | 
						|
#define RETURN_VALUE                     83
 | 
						|
#define IMPORT_STAR                      84
 | 
						|
#define SETUP_ANNOTATIONS                85
 | 
						|
#define YIELD_VALUE                      86
 | 
						|
#define ASYNC_GEN_WRAP                   87
 | 
						|
#define PREP_RERAISE_STAR                88
 | 
						|
#define POP_EXCEPT                       89
 | 
						|
#define HAVE_ARGUMENT                    90
 | 
						|
#define STORE_NAME                       90
 | 
						|
#define DELETE_NAME                      91
 | 
						|
#define UNPACK_SEQUENCE                  92
 | 
						|
#define FOR_ITER                         93
 | 
						|
#define UNPACK_EX                        94
 | 
						|
#define STORE_ATTR                       95
 | 
						|
#define DELETE_ATTR                      96
 | 
						|
#define STORE_GLOBAL                     97
 | 
						|
#define DELETE_GLOBAL                    98
 | 
						|
#define SWAP                             99
 | 
						|
#define LOAD_CONST                      100
 | 
						|
#define LOAD_NAME                       101
 | 
						|
#define BUILD_TUPLE                     102
 | 
						|
#define BUILD_LIST                      103
 | 
						|
#define BUILD_SET                       104
 | 
						|
#define BUILD_MAP                       105
 | 
						|
#define LOAD_ATTR                       106
 | 
						|
#define COMPARE_OP                      107
 | 
						|
#define IMPORT_NAME                     108
 | 
						|
#define IMPORT_FROM                     109
 | 
						|
#define JUMP_FORWARD                    110
 | 
						|
#define JUMP_IF_FALSE_OR_POP            111
 | 
						|
#define JUMP_IF_TRUE_OR_POP             112
 | 
						|
#define JUMP_ABSOLUTE                   113
 | 
						|
#define POP_JUMP_IF_FALSE               114
 | 
						|
#define POP_JUMP_IF_TRUE                115
 | 
						|
#define LOAD_GLOBAL                     116
 | 
						|
#define IS_OP                           117
 | 
						|
#define CONTAINS_OP                     118
 | 
						|
#define RERAISE                         119
 | 
						|
#define COPY                            120
 | 
						|
#define JUMP_IF_NOT_EXC_MATCH           121
 | 
						|
#define BINARY_OP                       122
 | 
						|
#define SEND                            123
 | 
						|
#define LOAD_FAST                       124
 | 
						|
#define STORE_FAST                      125
 | 
						|
#define DELETE_FAST                     126
 | 
						|
#define JUMP_IF_NOT_EG_MATCH            127
 | 
						|
#define POP_JUMP_IF_NOT_NONE            128
 | 
						|
#define POP_JUMP_IF_NONE                129
 | 
						|
#define RAISE_VARARGS                   130
 | 
						|
#define MAKE_FUNCTION                   132
 | 
						|
#define BUILD_SLICE                     133
 | 
						|
#define JUMP_NO_INTERRUPT               134
 | 
						|
#define MAKE_CELL                       135
 | 
						|
#define LOAD_CLOSURE                    136
 | 
						|
#define LOAD_DEREF                      137
 | 
						|
#define STORE_DEREF                     138
 | 
						|
#define DELETE_DEREF                    139
 | 
						|
#define CALL_FUNCTION_EX                142
 | 
						|
#define EXTENDED_ARG                    144
 | 
						|
#define LIST_APPEND                     145
 | 
						|
#define SET_ADD                         146
 | 
						|
#define MAP_ADD                         147
 | 
						|
#define LOAD_CLASSDEREF                 148
 | 
						|
#define COPY_FREE_VARS                  149
 | 
						|
#define RESUME                          151
 | 
						|
#define MATCH_CLASS                     152
 | 
						|
#define FORMAT_VALUE                    155
 | 
						|
#define BUILD_CONST_KEY_MAP             156
 | 
						|
#define BUILD_STRING                    157
 | 
						|
#define LOAD_METHOD                     160
 | 
						|
#define LIST_EXTEND                     162
 | 
						|
#define SET_UPDATE                      163
 | 
						|
#define DICT_MERGE                      164
 | 
						|
#define DICT_UPDATE                     165
 | 
						|
#define PRECALL_FUNCTION                167
 | 
						|
#define PRECALL_METHOD                  168
 | 
						|
#define CALL                            171
 | 
						|
#define KW_NAMES                        172
 | 
						|
#define BINARY_OP_ADAPTIVE                2
 | 
						|
#define BINARY_OP_ADD_INT                 3
 | 
						|
#define BINARY_OP_ADD_FLOAT               4
 | 
						|
#define BINARY_OP_ADD_UNICODE             5
 | 
						|
#define BINARY_OP_INPLACE_ADD_UNICODE     6
 | 
						|
#define BINARY_OP_MULTIPLY_INT            7
 | 
						|
#define BINARY_OP_MULTIPLY_FLOAT          8
 | 
						|
#define BINARY_OP_SUBTRACT_INT           13
 | 
						|
#define BINARY_OP_SUBTRACT_FLOAT         14
 | 
						|
#define COMPARE_OP_ADAPTIVE              16
 | 
						|
#define COMPARE_OP_FLOAT_JUMP            17
 | 
						|
#define COMPARE_OP_INT_JUMP              18
 | 
						|
#define COMPARE_OP_STR_JUMP              19
 | 
						|
#define BINARY_SUBSCR_ADAPTIVE           20
 | 
						|
#define BINARY_SUBSCR_GETITEM            21
 | 
						|
#define BINARY_SUBSCR_LIST_INT           22
 | 
						|
#define BINARY_SUBSCR_TUPLE_INT          23
 | 
						|
#define BINARY_SUBSCR_DICT               24
 | 
						|
#define STORE_SUBSCR_ADAPTIVE            26
 | 
						|
#define STORE_SUBSCR_LIST_INT            27
 | 
						|
#define STORE_SUBSCR_DICT                28
 | 
						|
#define CALL_ADAPTIVE                    29
 | 
						|
#define CALL_BUILTIN_CLASS               34
 | 
						|
#define CALL_NO_KW_BUILTIN_O             36
 | 
						|
#define CALL_NO_KW_BUILTIN_FAST          37
 | 
						|
#define CALL_BUILTIN_FAST_WITH_KEYWORDS  38
 | 
						|
#define CALL_NO_KW_LEN                   39
 | 
						|
#define CALL_NO_KW_ISINSTANCE            40
 | 
						|
#define CALL_PY_EXACT_ARGS               41
 | 
						|
#define CALL_PY_WITH_DEFAULTS            42
 | 
						|
#define CALL_NO_KW_LIST_APPEND           43
 | 
						|
#define CALL_NO_KW_METHOD_DESCRIPTOR_O   44
 | 
						|
#define CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS  45
 | 
						|
#define CALL_NO_KW_STR_1                 46
 | 
						|
#define CALL_NO_KW_TUPLE_1               47
 | 
						|
#define CALL_NO_KW_TYPE_1                48
 | 
						|
#define CALL_NO_KW_METHOD_DESCRIPTOR_FAST  55
 | 
						|
#define JUMP_ABSOLUTE_QUICK              56
 | 
						|
#define LOAD_ATTR_ADAPTIVE               57
 | 
						|
#define LOAD_ATTR_INSTANCE_VALUE         58
 | 
						|
#define LOAD_ATTR_WITH_HINT              59
 | 
						|
#define LOAD_ATTR_SLOT                   62
 | 
						|
#define LOAD_ATTR_MODULE                 63
 | 
						|
#define LOAD_GLOBAL_ADAPTIVE             64
 | 
						|
#define LOAD_GLOBAL_MODULE               65
 | 
						|
#define LOAD_GLOBAL_BUILTIN              66
 | 
						|
#define LOAD_METHOD_ADAPTIVE             67
 | 
						|
#define LOAD_METHOD_CACHED               72
 | 
						|
#define LOAD_METHOD_CLASS                76
 | 
						|
#define LOAD_METHOD_MODULE               77
 | 
						|
#define LOAD_METHOD_NO_DICT              78
 | 
						|
#define STORE_ATTR_ADAPTIVE              79
 | 
						|
#define STORE_ATTR_INSTANCE_VALUE        80
 | 
						|
#define STORE_ATTR_SLOT                  81
 | 
						|
#define STORE_ATTR_WITH_HINT            131
 | 
						|
#define LOAD_FAST__LOAD_FAST            140
 | 
						|
#define STORE_FAST__LOAD_FAST           141
 | 
						|
#define LOAD_FAST__LOAD_CONST           143
 | 
						|
#define LOAD_CONST__LOAD_FAST           150
 | 
						|
#define STORE_FAST__STORE_FAST          153
 | 
						|
#define DO_TRACING                      255
 | 
						|
#ifdef NEED_OPCODE_JUMP_TABLES
 | 
						|
static uint32_t _PyOpcode_RelativeJump[8] = {
 | 
						|
    0U,
 | 
						|
    0U,
 | 
						|
    536870912U,
 | 
						|
    134234112U,
 | 
						|
    0U,
 | 
						|
    0U,
 | 
						|
    0U,
 | 
						|
    0U,
 | 
						|
};
 | 
						|
static uint32_t _PyOpcode_Jump[8] = {
 | 
						|
    0U,
 | 
						|
    0U,
 | 
						|
    536870912U,
 | 
						|
    2316288000U,
 | 
						|
    67U,
 | 
						|
    0U,
 | 
						|
    0U,
 | 
						|
    0U,
 | 
						|
};
 | 
						|
#endif /* OPCODE_TABLES */
 | 
						|
 | 
						|
#define HAS_CONST(op) (false\
 | 
						|
    || ((op) == 100) \
 | 
						|
    || ((op) == 172) \
 | 
						|
    )
 | 
						|
 | 
						|
#define NB_ADD                            0
 | 
						|
#define NB_AND                            1
 | 
						|
#define NB_FLOOR_DIVIDE                   2
 | 
						|
#define NB_LSHIFT                         3
 | 
						|
#define NB_MATRIX_MULTIPLY                4
 | 
						|
#define NB_MULTIPLY                       5
 | 
						|
#define NB_REMAINDER                      6
 | 
						|
#define NB_OR                             7
 | 
						|
#define NB_POWER                          8
 | 
						|
#define NB_RSHIFT                         9
 | 
						|
#define NB_SUBTRACT                      10
 | 
						|
#define NB_TRUE_DIVIDE                   11
 | 
						|
#define NB_XOR                           12
 | 
						|
#define NB_INPLACE_ADD                   13
 | 
						|
#define NB_INPLACE_AND                   14
 | 
						|
#define NB_INPLACE_FLOOR_DIVIDE          15
 | 
						|
#define NB_INPLACE_LSHIFT                16
 | 
						|
#define NB_INPLACE_MATRIX_MULTIPLY       17
 | 
						|
#define NB_INPLACE_MULTIPLY              18
 | 
						|
#define NB_INPLACE_REMAINDER             19
 | 
						|
#define NB_INPLACE_OR                    20
 | 
						|
#define NB_INPLACE_POWER                 21
 | 
						|
#define NB_INPLACE_RSHIFT                22
 | 
						|
#define NB_INPLACE_SUBTRACT              23
 | 
						|
#define NB_INPLACE_TRUE_DIVIDE           24
 | 
						|
#define NB_INPLACE_XOR                   25
 | 
						|
 | 
						|
#define HAS_ARG(op) ((op) >= HAVE_ARGUMENT)
 | 
						|
 | 
						|
/* Reserve some bytecodes for internal use in the compiler.
 | 
						|
 * The value of 240 is arbitrary. */
 | 
						|
#define IS_ARTIFICIAL(op) ((op) > 240)
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
#endif /* !Py_OPCODE_H */
 |