summaryrefslogtreecommitdiffstats
path: root/contrib/tools/python3/src/Include/opcode.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/tools/python3/src/Include/opcode.h')
-rw-r--r--contrib/tools/python3/src/Include/opcode.h229
1 files changed, 132 insertions, 97 deletions
diff --git a/contrib/tools/python3/src/Include/opcode.h b/contrib/tools/python3/src/Include/opcode.h
index 084d34b8c73..9806511ba42 100644
--- a/contrib/tools/python3/src/Include/opcode.h
+++ b/contrib/tools/python3/src/Include/opcode.h
@@ -1,4 +1,4 @@
-// Auto-generated by Tools/scripts/generate_opcode_h.py from Lib/opcode.py
+// Auto-generated by Tools/build/generate_opcode_h.py from Lib/opcode.py
#ifndef Py_OPCODE_H
#define Py_OPCODE_H
@@ -11,12 +11,17 @@ extern "C" {
#define CACHE 0
#define POP_TOP 1
#define PUSH_NULL 2
+#define INTERPRETER_EXIT 3
+#define END_FOR 4
+#define END_SEND 5
#define NOP 9
-#define UNARY_POSITIVE 10
#define UNARY_NEGATIVE 11
#define UNARY_NOT 12
#define UNARY_INVERT 15
+#define RESERVED 17
#define BINARY_SUBSCR 25
+#define BINARY_SLICE 26
+#define STORE_SLICE 27
#define GET_LEN 30
#define MATCH_MAPPING 31
#define MATCH_SEQUENCE 32
@@ -30,21 +35,17 @@ extern "C" {
#define BEFORE_ASYNC_WITH 52
#define BEFORE_WITH 53
#define END_ASYNC_FOR 54
+#define CLEANUP_THROW 55
#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 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 LOAD_LOCALS 87
#define POP_EXCEPT 89
#define HAVE_ARGUMENT 90
#define STORE_NAME 90
@@ -68,22 +69,22 @@ extern "C" {
#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 POP_JUMP_FORWARD_IF_FALSE 114
-#define POP_JUMP_FORWARD_IF_TRUE 115
+#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 RETURN_CONST 121
#define BINARY_OP 122
#define SEND 123
#define LOAD_FAST 124
#define STORE_FAST 125
#define DELETE_FAST 126
-#define POP_JUMP_FORWARD_IF_NOT_NONE 128
-#define POP_JUMP_FORWARD_IF_NONE 129
+#define LOAD_FAST_CHECK 127
+#define POP_JUMP_IF_NOT_NONE 128
+#define POP_JUMP_IF_NONE 129
#define RAISE_VARARGS 130
#define GET_AWAITABLE 131
#define MAKE_FUNCTION 132
@@ -95,106 +96,141 @@ extern "C" {
#define STORE_DEREF 138
#define DELETE_DEREF 139
#define JUMP_BACKWARD 140
+#define LOAD_SUPER_ATTR 141
#define CALL_FUNCTION_EX 142
+#define LOAD_FAST_AND_CLEAR 143
#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 YIELD_VALUE 150
#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 166
#define CALL 171
#define KW_NAMES 172
-#define POP_JUMP_BACKWARD_IF_NOT_NONE 173
-#define POP_JUMP_BACKWARD_IF_NONE 174
-#define POP_JUMP_BACKWARD_IF_FALSE 175
-#define POP_JUMP_BACKWARD_IF_TRUE 176
-#define BINARY_OP_ADAPTIVE 3
-#define BINARY_OP_ADD_FLOAT 4
-#define BINARY_OP_ADD_INT 5
-#define BINARY_OP_ADD_UNICODE 6
-#define BINARY_OP_INPLACE_ADD_UNICODE 7
-#define BINARY_OP_MULTIPLY_FLOAT 8
-#define BINARY_OP_MULTIPLY_INT 13
-#define BINARY_OP_SUBTRACT_FLOAT 14
-#define BINARY_OP_SUBTRACT_INT 16
-#define BINARY_SUBSCR_ADAPTIVE 17
-#define BINARY_SUBSCR_DICT 18
-#define BINARY_SUBSCR_GETITEM 19
-#define BINARY_SUBSCR_LIST_INT 20
-#define BINARY_SUBSCR_TUPLE_INT 21
-#define CALL_ADAPTIVE 22
+#define CALL_INTRINSIC_1 173
+#define CALL_INTRINSIC_2 174
+#define LOAD_FROM_DICT_OR_GLOBALS 175
+#define LOAD_FROM_DICT_OR_DEREF 176
+#define MIN_INSTRUMENTED_OPCODE 237
+#define INSTRUMENTED_LOAD_SUPER_ATTR 237
+#define INSTRUMENTED_POP_JUMP_IF_NONE 238
+#define INSTRUMENTED_POP_JUMP_IF_NOT_NONE 239
+#define INSTRUMENTED_RESUME 240
+#define INSTRUMENTED_CALL 241
+#define INSTRUMENTED_RETURN_VALUE 242
+#define INSTRUMENTED_YIELD_VALUE 243
+#define INSTRUMENTED_CALL_FUNCTION_EX 244
+#define INSTRUMENTED_JUMP_FORWARD 245
+#define INSTRUMENTED_JUMP_BACKWARD 246
+#define INSTRUMENTED_RETURN_CONST 247
+#define INSTRUMENTED_FOR_ITER 248
+#define INSTRUMENTED_POP_JUMP_IF_FALSE 249
+#define INSTRUMENTED_POP_JUMP_IF_TRUE 250
+#define INSTRUMENTED_END_FOR 251
+#define INSTRUMENTED_END_SEND 252
+#define INSTRUMENTED_INSTRUCTION 253
+#define INSTRUMENTED_LINE 254
+#define MIN_PSEUDO_OPCODE 256
+#define SETUP_FINALLY 256
+#define SETUP_CLEANUP 257
+#define SETUP_WITH 258
+#define POP_BLOCK 259
+#define JUMP 260
+#define JUMP_NO_INTERRUPT 261
+#define LOAD_METHOD 262
+#define LOAD_SUPER_METHOD 263
+#define LOAD_ZERO_SUPER_METHOD 264
+#define LOAD_ZERO_SUPER_ATTR 265
+#define STORE_FAST_MAYBE_NULL 266
+#define MAX_PSEUDO_OPCODE 266
+#define BINARY_OP_ADD_FLOAT 6
+#define BINARY_OP_ADD_INT 7
+#define BINARY_OP_ADD_UNICODE 8
+#define BINARY_OP_INPLACE_ADD_UNICODE 10
+#define BINARY_OP_MULTIPLY_FLOAT 13
+#define BINARY_OP_MULTIPLY_INT 14
+#define BINARY_OP_SUBTRACT_FLOAT 16
+#define BINARY_OP_SUBTRACT_INT 18
+#define BINARY_SUBSCR_DICT 19
+#define BINARY_SUBSCR_GETITEM 20
+#define BINARY_SUBSCR_LIST_INT 21
+#define BINARY_SUBSCR_TUPLE_INT 22
#define CALL_PY_EXACT_ARGS 23
#define CALL_PY_WITH_DEFAULTS 24
-#define COMPARE_OP_ADAPTIVE 26
-#define COMPARE_OP_FLOAT_JUMP 27
-#define COMPARE_OP_INT_JUMP 28
-#define COMPARE_OP_STR_JUMP 29
-#define EXTENDED_ARG_QUICK 34
-#define JUMP_BACKWARD_QUICK 38
-#define LOAD_ATTR_ADAPTIVE 39
-#define LOAD_ATTR_INSTANCE_VALUE 40
-#define LOAD_ATTR_MODULE 41
-#define LOAD_ATTR_SLOT 42
-#define LOAD_ATTR_WITH_HINT 43
-#define LOAD_CONST__LOAD_FAST 44
-#define LOAD_FAST__LOAD_CONST 45
-#define LOAD_FAST__LOAD_FAST 46
-#define LOAD_GLOBAL_ADAPTIVE 47
-#define LOAD_GLOBAL_BUILTIN 48
-#define LOAD_GLOBAL_MODULE 55
-#define LOAD_METHOD_ADAPTIVE 56
-#define LOAD_METHOD_CLASS 57
-#define LOAD_METHOD_MODULE 58
-#define LOAD_METHOD_NO_DICT 59
-#define LOAD_METHOD_WITH_DICT 62
-#define LOAD_METHOD_WITH_VALUES 63
-#define PRECALL_ADAPTIVE 64
-#define PRECALL_BOUND_METHOD 65
-#define PRECALL_BUILTIN_CLASS 66
-#define PRECALL_BUILTIN_FAST_WITH_KEYWORDS 67
-#define PRECALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 72
-#define PRECALL_NO_KW_BUILTIN_FAST 73
-#define PRECALL_NO_KW_BUILTIN_O 76
-#define PRECALL_NO_KW_ISINSTANCE 77
-#define PRECALL_NO_KW_LEN 78
-#define PRECALL_NO_KW_LIST_APPEND 79
-#define PRECALL_NO_KW_METHOD_DESCRIPTOR_FAST 80
-#define PRECALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 81
-#define PRECALL_NO_KW_METHOD_DESCRIPTOR_O 113
-#define PRECALL_NO_KW_STR_1 121
-#define PRECALL_NO_KW_TUPLE_1 127
-#define PRECALL_NO_KW_TYPE_1 141
-#define PRECALL_PYFUNC 143
-#define RESUME_QUICK 150
-#define STORE_ATTR_ADAPTIVE 153
-#define STORE_ATTR_INSTANCE_VALUE 154
-#define STORE_ATTR_SLOT 158
-#define STORE_ATTR_WITH_HINT 159
-#define STORE_FAST__LOAD_FAST 161
-#define STORE_FAST__STORE_FAST 167
-#define STORE_SUBSCR_ADAPTIVE 168
-#define STORE_SUBSCR_DICT 169
-#define STORE_SUBSCR_LIST_INT 170
-#define UNPACK_SEQUENCE_ADAPTIVE 177
-#define UNPACK_SEQUENCE_LIST 178
-#define UNPACK_SEQUENCE_TUPLE 179
-#define UNPACK_SEQUENCE_TWO_TUPLE 180
-#define DO_TRACING 255
+#define CALL_BOUND_METHOD_EXACT_ARGS 28
+#define CALL_BUILTIN_CLASS 29
+#define CALL_BUILTIN_FAST_WITH_KEYWORDS 34
+#define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 38
+#define CALL_NO_KW_BUILTIN_FAST 39
+#define CALL_NO_KW_BUILTIN_O 40
+#define CALL_NO_KW_ISINSTANCE 41
+#define CALL_NO_KW_LEN 42
+#define CALL_NO_KW_LIST_APPEND 43
+#define CALL_NO_KW_METHOD_DESCRIPTOR_FAST 44
+#define CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 45
+#define CALL_NO_KW_METHOD_DESCRIPTOR_O 46
+#define CALL_NO_KW_STR_1 47
+#define CALL_NO_KW_TUPLE_1 48
+#define CALL_NO_KW_TYPE_1 56
+#define COMPARE_OP_FLOAT 57
+#define COMPARE_OP_INT 58
+#define COMPARE_OP_STR 59
+#define FOR_ITER_LIST 62
+#define FOR_ITER_TUPLE 63
+#define FOR_ITER_RANGE 64
+#define FOR_ITER_GEN 65
+#define LOAD_SUPER_ATTR_ATTR 66
+#define LOAD_SUPER_ATTR_METHOD 67
+#define LOAD_ATTR_CLASS 70
+#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN 72
+#define LOAD_ATTR_INSTANCE_VALUE 73
+#define LOAD_ATTR_MODULE 76
+#define LOAD_ATTR_PROPERTY 77
+#define LOAD_ATTR_SLOT 78
+#define LOAD_ATTR_WITH_HINT 79
+#define LOAD_ATTR_METHOD_LAZY_DICT 80
+#define LOAD_ATTR_METHOD_NO_DICT 81
+#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 HAS_ARG(op) ((((op) >= HAVE_ARGUMENT) && (!IS_PSEUDO_OPCODE(op)))\
+ || ((op) == JUMP) \
+ || ((op) == JUMP_NO_INTERRUPT) \
+ || ((op) == LOAD_METHOD) \
+ || ((op) == LOAD_SUPER_METHOD) \
+ || ((op) == LOAD_ZERO_SUPER_METHOD) \
+ || ((op) == LOAD_ZERO_SUPER_ATTR) \
+ || ((op) == STORE_FAST_MAYBE_NULL) \
+ )
#define HAS_CONST(op) (false\
- || ((op) == 100) \
- || ((op) == 172) \
+ || ((op) == LOAD_CONST) \
+ || ((op) == RETURN_CONST) \
+ || ((op) == KW_NAMES) \
)
#define NB_ADD 0
@@ -224,11 +260,10 @@ extern "C" {
#define NB_INPLACE_TRUE_DIVIDE 24
#define NB_INPLACE_XOR 25
-#define HAS_ARG(op) ((op) >= HAVE_ARGUMENT)
+/* Defined in Lib/opcode.py */
+#define ENABLE_SPECIALIZATION 1
-/* Reserve some bytecodes for internal use in the compiler.
- * The value of 240 is arbitrary. */
-#define IS_ARTIFICIAL(op) ((op) > 240)
+#define IS_PSEUDO_OPCODE(op) (((op) >= MIN_PSEUDO_OPCODE) && ((op) <= MAX_PSEUDO_OPCODE))
#ifdef __cplusplus
}