mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
GH-108614: Add RESUME_CHECK
instruction (GH-108630)
This commit is contained in:
parent
d485551c9d
commit
0858328ca2
16 changed files with 519 additions and 482 deletions
10
Include/internal/pycore_opcode_metadata.h
generated
10
Include/internal/pycore_opcode_metadata.h
generated
|
@ -82,6 +82,8 @@ int _PyOpcode_num_popped(int opcode, int oparg, bool jump) {
|
||||||
return 0;
|
return 0;
|
||||||
case RESUME:
|
case RESUME:
|
||||||
return 0;
|
return 0;
|
||||||
|
case RESUME_CHECK:
|
||||||
|
return 0;
|
||||||
case INSTRUMENTED_RESUME:
|
case INSTRUMENTED_RESUME:
|
||||||
return 0;
|
return 0;
|
||||||
case LOAD_CLOSURE:
|
case LOAD_CLOSURE:
|
||||||
|
@ -614,6 +616,8 @@ int _PyOpcode_num_pushed(int opcode, int oparg, bool jump) {
|
||||||
return 0;
|
return 0;
|
||||||
case RESUME:
|
case RESUME:
|
||||||
return 0;
|
return 0;
|
||||||
|
case RESUME_CHECK:
|
||||||
|
return 0;
|
||||||
case INSTRUMENTED_RESUME:
|
case INSTRUMENTED_RESUME:
|
||||||
return 0;
|
return 0;
|
||||||
case LOAD_CLOSURE:
|
case LOAD_CLOSURE:
|
||||||
|
@ -1207,6 +1211,7 @@ extern const struct opcode_metadata _PyOpcode_opcode_metadata[OPCODE_METADATA_SI
|
||||||
const struct opcode_metadata _PyOpcode_opcode_metadata[OPCODE_METADATA_SIZE] = {
|
const struct opcode_metadata _PyOpcode_opcode_metadata[OPCODE_METADATA_SIZE] = {
|
||||||
[NOP] = { true, INSTR_FMT_IX, 0 },
|
[NOP] = { true, INSTR_FMT_IX, 0 },
|
||||||
[RESUME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG },
|
[RESUME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG },
|
||||||
|
[RESUME_CHECK] = { true, INSTR_FMT_IX, HAS_DEOPT_FLAG },
|
||||||
[INSTRUMENTED_RESUME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG },
|
[INSTRUMENTED_RESUME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG },
|
||||||
[LOAD_CLOSURE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG },
|
[LOAD_CLOSURE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG },
|
||||||
[LOAD_FAST_CHECK] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ERROR_FLAG },
|
[LOAD_FAST_CHECK] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ERROR_FLAG },
|
||||||
|
@ -1477,7 +1482,7 @@ extern const struct opcode_macro_expansion _PyOpcode_macro_expansion[OPCODE_MACR
|
||||||
#ifdef NEED_OPCODE_METADATA
|
#ifdef NEED_OPCODE_METADATA
|
||||||
const struct opcode_macro_expansion _PyOpcode_macro_expansion[OPCODE_MACRO_EXPANSION_SIZE] = {
|
const struct opcode_macro_expansion _PyOpcode_macro_expansion[OPCODE_MACRO_EXPANSION_SIZE] = {
|
||||||
[NOP] = { .nuops = 1, .uops = { { NOP, 0, 0 } } },
|
[NOP] = { .nuops = 1, .uops = { { NOP, 0, 0 } } },
|
||||||
[RESUME] = { .nuops = 1, .uops = { { RESUME, 0, 0 } } },
|
[RESUME_CHECK] = { .nuops = 1, .uops = { { RESUME_CHECK, 0, 0 } } },
|
||||||
[LOAD_FAST_CHECK] = { .nuops = 1, .uops = { { LOAD_FAST_CHECK, 0, 0 } } },
|
[LOAD_FAST_CHECK] = { .nuops = 1, .uops = { { LOAD_FAST_CHECK, 0, 0 } } },
|
||||||
[LOAD_FAST] = { .nuops = 1, .uops = { { LOAD_FAST, 0, 0 } } },
|
[LOAD_FAST] = { .nuops = 1, .uops = { { LOAD_FAST, 0, 0 } } },
|
||||||
[LOAD_FAST_AND_CLEAR] = { .nuops = 1, .uops = { { LOAD_FAST_AND_CLEAR, 0, 0 } } },
|
[LOAD_FAST_AND_CLEAR] = { .nuops = 1, .uops = { { LOAD_FAST_AND_CLEAR, 0, 0 } } },
|
||||||
|
@ -1716,6 +1721,7 @@ const char *const _PyOpcode_OpName[268] = {
|
||||||
[POP_TOP] = "POP_TOP",
|
[POP_TOP] = "POP_TOP",
|
||||||
[PUSH_EXC_INFO] = "PUSH_EXC_INFO",
|
[PUSH_EXC_INFO] = "PUSH_EXC_INFO",
|
||||||
[PUSH_NULL] = "PUSH_NULL",
|
[PUSH_NULL] = "PUSH_NULL",
|
||||||
|
[RESUME_CHECK] = "RESUME_CHECK",
|
||||||
[RETURN_GENERATOR] = "RETURN_GENERATOR",
|
[RETURN_GENERATOR] = "RETURN_GENERATOR",
|
||||||
[RETURN_VALUE] = "RETURN_VALUE",
|
[RETURN_VALUE] = "RETURN_VALUE",
|
||||||
[SETUP_ANNOTATIONS] = "SETUP_ANNOTATIONS",
|
[SETUP_ANNOTATIONS] = "SETUP_ANNOTATIONS",
|
||||||
|
@ -2077,6 +2083,7 @@ const uint8_t _PyOpcode_Deopt[256] = {
|
||||||
[RERAISE] = RERAISE,
|
[RERAISE] = RERAISE,
|
||||||
[RESERVED] = RESERVED,
|
[RESERVED] = RESERVED,
|
||||||
[RESUME] = RESUME,
|
[RESUME] = RESUME,
|
||||||
|
[RESUME_CHECK] = RESUME,
|
||||||
[RETURN_CONST] = RETURN_CONST,
|
[RETURN_CONST] = RETURN_CONST,
|
||||||
[RETURN_GENERATOR] = RETURN_GENERATOR,
|
[RETURN_GENERATOR] = RETURN_GENERATOR,
|
||||||
[RETURN_VALUE] = RETURN_VALUE,
|
[RETURN_VALUE] = RETURN_VALUE,
|
||||||
|
@ -2122,7 +2129,6 @@ const uint8_t _PyOpcode_Deopt[256] = {
|
||||||
#endif // NEED_OPCODE_METADATA
|
#endif // NEED_OPCODE_METADATA
|
||||||
|
|
||||||
#define EXTRA_CASES \
|
#define EXTRA_CASES \
|
||||||
case 188: \
|
|
||||||
case 189: \
|
case 189: \
|
||||||
case 190: \
|
case 190: \
|
||||||
case 191: \
|
case 191: \
|
||||||
|
|
283
Include/opcode_ids.h
generated
283
Include/opcode_ids.h
generated
|
@ -57,148 +57,149 @@ extern "C" {
|
||||||
#define POP_TOP 44
|
#define POP_TOP 44
|
||||||
#define PUSH_EXC_INFO 45
|
#define PUSH_EXC_INFO 45
|
||||||
#define PUSH_NULL 46
|
#define PUSH_NULL 46
|
||||||
#define RETURN_GENERATOR 47
|
#define RESUME_CHECK 47
|
||||||
#define RETURN_VALUE 48
|
#define RETURN_GENERATOR 48
|
||||||
#define SETUP_ANNOTATIONS 49
|
#define RETURN_VALUE 49
|
||||||
#define STORE_ATTR_INSTANCE_VALUE 50
|
#define SETUP_ANNOTATIONS 50
|
||||||
#define STORE_ATTR_SLOT 51
|
#define STORE_ATTR_INSTANCE_VALUE 51
|
||||||
#define STORE_SLICE 52
|
#define STORE_ATTR_SLOT 52
|
||||||
#define STORE_SUBSCR 53
|
#define STORE_SLICE 53
|
||||||
#define STORE_SUBSCR_DICT 54
|
#define STORE_SUBSCR 54
|
||||||
#define STORE_SUBSCR_LIST_INT 55
|
#define STORE_SUBSCR_DICT 55
|
||||||
#define TO_BOOL 56
|
#define STORE_SUBSCR_LIST_INT 56
|
||||||
#define TO_BOOL_ALWAYS_TRUE 57
|
#define TO_BOOL 57
|
||||||
#define TO_BOOL_BOOL 58
|
#define TO_BOOL_ALWAYS_TRUE 58
|
||||||
#define TO_BOOL_INT 59
|
#define TO_BOOL_BOOL 59
|
||||||
#define TO_BOOL_LIST 60
|
#define TO_BOOL_INT 60
|
||||||
#define TO_BOOL_NONE 61
|
#define TO_BOOL_LIST 61
|
||||||
#define TO_BOOL_STR 62
|
#define TO_BOOL_NONE 62
|
||||||
#define UNARY_INVERT 63
|
#define TO_BOOL_STR 63
|
||||||
#define UNARY_NEGATIVE 64
|
#define UNARY_INVERT 64
|
||||||
#define UNARY_NOT 65
|
#define UNARY_NEGATIVE 65
|
||||||
#define WITH_EXCEPT_START 66
|
#define UNARY_NOT 66
|
||||||
#define HAVE_ARGUMENT 67
|
#define WITH_EXCEPT_START 67
|
||||||
#define BINARY_OP 67
|
#define HAVE_ARGUMENT 68
|
||||||
#define BUILD_CONST_KEY_MAP 68
|
#define BINARY_OP 68
|
||||||
#define BUILD_LIST 69
|
#define BUILD_CONST_KEY_MAP 69
|
||||||
#define BUILD_MAP 70
|
#define BUILD_LIST 70
|
||||||
#define BUILD_SET 71
|
#define BUILD_MAP 71
|
||||||
#define BUILD_SLICE 72
|
#define BUILD_SET 72
|
||||||
#define BUILD_STRING 73
|
#define BUILD_SLICE 73
|
||||||
#define BUILD_TUPLE 74
|
#define BUILD_STRING 74
|
||||||
#define CALL 75
|
#define BUILD_TUPLE 75
|
||||||
#define CALL_BOUND_METHOD_EXACT_ARGS 76
|
#define CALL 76
|
||||||
#define CALL_BUILTIN_CLASS 77
|
#define CALL_BOUND_METHOD_EXACT_ARGS 77
|
||||||
#define CALL_BUILTIN_FAST_WITH_KEYWORDS 78
|
#define CALL_BUILTIN_CLASS 78
|
||||||
#define CALL_FUNCTION_EX 79
|
#define CALL_BUILTIN_FAST_WITH_KEYWORDS 79
|
||||||
#define CALL_INTRINSIC_1 80
|
#define CALL_FUNCTION_EX 80
|
||||||
#define CALL_INTRINSIC_2 81
|
#define CALL_INTRINSIC_1 81
|
||||||
#define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 82
|
#define CALL_INTRINSIC_2 82
|
||||||
#define CALL_NO_KW_ALLOC_AND_ENTER_INIT 83
|
#define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 83
|
||||||
#define CALL_NO_KW_BUILTIN_FAST 84
|
#define CALL_NO_KW_ALLOC_AND_ENTER_INIT 84
|
||||||
#define CALL_NO_KW_BUILTIN_O 85
|
#define CALL_NO_KW_BUILTIN_FAST 85
|
||||||
#define CALL_NO_KW_ISINSTANCE 86
|
#define CALL_NO_KW_BUILTIN_O 86
|
||||||
#define CALL_NO_KW_LEN 87
|
#define CALL_NO_KW_ISINSTANCE 87
|
||||||
#define CALL_NO_KW_LIST_APPEND 88
|
#define CALL_NO_KW_LEN 88
|
||||||
#define CALL_NO_KW_METHOD_DESCRIPTOR_FAST 89
|
#define CALL_NO_KW_LIST_APPEND 89
|
||||||
#define CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 90
|
#define CALL_NO_KW_METHOD_DESCRIPTOR_FAST 90
|
||||||
#define CALL_NO_KW_METHOD_DESCRIPTOR_O 91
|
#define CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 91
|
||||||
#define CALL_NO_KW_STR_1 92
|
#define CALL_NO_KW_METHOD_DESCRIPTOR_O 92
|
||||||
#define CALL_NO_KW_TUPLE_1 93
|
#define CALL_NO_KW_STR_1 93
|
||||||
#define CALL_NO_KW_TYPE_1 94
|
#define CALL_NO_KW_TUPLE_1 94
|
||||||
#define CALL_PY_EXACT_ARGS 95
|
#define CALL_NO_KW_TYPE_1 95
|
||||||
#define CALL_PY_WITH_DEFAULTS 96
|
#define CALL_PY_EXACT_ARGS 96
|
||||||
#define COMPARE_OP 97
|
#define CALL_PY_WITH_DEFAULTS 97
|
||||||
#define COMPARE_OP_FLOAT 98
|
#define COMPARE_OP 98
|
||||||
#define COMPARE_OP_INT 99
|
#define COMPARE_OP_FLOAT 99
|
||||||
#define COMPARE_OP_STR 100
|
#define COMPARE_OP_INT 100
|
||||||
#define CONTAINS_OP 101
|
#define COMPARE_OP_STR 101
|
||||||
#define CONVERT_VALUE 102
|
#define CONTAINS_OP 102
|
||||||
#define COPY 103
|
#define CONVERT_VALUE 103
|
||||||
#define COPY_FREE_VARS 104
|
#define COPY 104
|
||||||
#define DELETE_ATTR 105
|
#define COPY_FREE_VARS 105
|
||||||
#define DELETE_DEREF 106
|
#define DELETE_ATTR 106
|
||||||
#define DELETE_FAST 107
|
#define DELETE_DEREF 107
|
||||||
#define DELETE_GLOBAL 108
|
#define DELETE_FAST 108
|
||||||
#define DELETE_NAME 109
|
#define DELETE_GLOBAL 109
|
||||||
#define DICT_MERGE 110
|
#define DELETE_NAME 110
|
||||||
#define DICT_UPDATE 111
|
#define DICT_MERGE 111
|
||||||
#define ENTER_EXECUTOR 112
|
#define DICT_UPDATE 112
|
||||||
#define EXTENDED_ARG 113
|
#define ENTER_EXECUTOR 113
|
||||||
#define FOR_ITER 114
|
#define EXTENDED_ARG 114
|
||||||
#define FOR_ITER_GEN 115
|
#define FOR_ITER 115
|
||||||
#define FOR_ITER_LIST 116
|
#define FOR_ITER_GEN 116
|
||||||
#define FOR_ITER_RANGE 117
|
#define FOR_ITER_LIST 117
|
||||||
#define FOR_ITER_TUPLE 118
|
#define FOR_ITER_RANGE 118
|
||||||
#define GET_AWAITABLE 119
|
#define FOR_ITER_TUPLE 119
|
||||||
#define IMPORT_FROM 120
|
#define GET_AWAITABLE 120
|
||||||
#define IMPORT_NAME 121
|
#define IMPORT_FROM 121
|
||||||
#define IS_OP 122
|
#define IMPORT_NAME 122
|
||||||
#define JUMP_BACKWARD 123
|
#define IS_OP 123
|
||||||
#define JUMP_BACKWARD_NO_INTERRUPT 124
|
#define JUMP_BACKWARD 124
|
||||||
#define JUMP_FORWARD 125
|
#define JUMP_BACKWARD_NO_INTERRUPT 125
|
||||||
#define KW_NAMES 126
|
#define JUMP_FORWARD 126
|
||||||
#define LIST_APPEND 127
|
#define KW_NAMES 127
|
||||||
#define LIST_EXTEND 128
|
#define LIST_APPEND 128
|
||||||
#define LOAD_ATTR 129
|
#define LIST_EXTEND 129
|
||||||
#define LOAD_ATTR_CLASS 130
|
#define LOAD_ATTR 130
|
||||||
#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN 131
|
#define LOAD_ATTR_CLASS 131
|
||||||
#define LOAD_ATTR_INSTANCE_VALUE 132
|
#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN 132
|
||||||
#define LOAD_ATTR_METHOD_LAZY_DICT 133
|
#define LOAD_ATTR_INSTANCE_VALUE 133
|
||||||
#define LOAD_ATTR_METHOD_NO_DICT 134
|
#define LOAD_ATTR_METHOD_LAZY_DICT 134
|
||||||
#define LOAD_ATTR_METHOD_WITH_VALUES 135
|
#define LOAD_ATTR_METHOD_NO_DICT 135
|
||||||
#define LOAD_ATTR_MODULE 136
|
#define LOAD_ATTR_METHOD_WITH_VALUES 136
|
||||||
#define LOAD_ATTR_NONDESCRIPTOR_NO_DICT 137
|
#define LOAD_ATTR_MODULE 137
|
||||||
#define LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 138
|
#define LOAD_ATTR_NONDESCRIPTOR_NO_DICT 138
|
||||||
#define LOAD_ATTR_PROPERTY 139
|
#define LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 139
|
||||||
#define LOAD_ATTR_SLOT 140
|
#define LOAD_ATTR_PROPERTY 140
|
||||||
#define LOAD_ATTR_WITH_HINT 141
|
#define LOAD_ATTR_SLOT 141
|
||||||
#define LOAD_CONST 142
|
#define LOAD_ATTR_WITH_HINT 142
|
||||||
#define LOAD_DEREF 143
|
#define LOAD_CONST 143
|
||||||
#define LOAD_FAST 144
|
#define LOAD_DEREF 144
|
||||||
#define LOAD_FAST_AND_CLEAR 145
|
#define LOAD_FAST 145
|
||||||
#define LOAD_FAST_CHECK 146
|
#define LOAD_FAST_AND_CLEAR 146
|
||||||
#define LOAD_FAST_LOAD_FAST 147
|
#define LOAD_FAST_CHECK 147
|
||||||
#define LOAD_FROM_DICT_OR_DEREF 148
|
#define LOAD_FAST_LOAD_FAST 148
|
||||||
#define LOAD_FROM_DICT_OR_GLOBALS 149
|
#define LOAD_FROM_DICT_OR_DEREF 149
|
||||||
#define LOAD_GLOBAL 150
|
#define LOAD_FROM_DICT_OR_GLOBALS 150
|
||||||
#define LOAD_GLOBAL_BUILTIN 151
|
#define LOAD_GLOBAL 151
|
||||||
#define LOAD_GLOBAL_MODULE 152
|
#define LOAD_GLOBAL_BUILTIN 152
|
||||||
#define LOAD_NAME 153
|
#define LOAD_GLOBAL_MODULE 153
|
||||||
#define LOAD_SUPER_ATTR 154
|
#define LOAD_NAME 154
|
||||||
#define LOAD_SUPER_ATTR_ATTR 155
|
#define LOAD_SUPER_ATTR 155
|
||||||
#define LOAD_SUPER_ATTR_METHOD 156
|
#define LOAD_SUPER_ATTR_ATTR 156
|
||||||
#define MAKE_CELL 157
|
#define LOAD_SUPER_ATTR_METHOD 157
|
||||||
#define MAP_ADD 158
|
#define MAKE_CELL 158
|
||||||
#define MATCH_CLASS 159
|
#define MAP_ADD 159
|
||||||
#define POP_JUMP_IF_FALSE 160
|
#define MATCH_CLASS 160
|
||||||
#define POP_JUMP_IF_NONE 161
|
#define POP_JUMP_IF_FALSE 161
|
||||||
#define POP_JUMP_IF_NOT_NONE 162
|
#define POP_JUMP_IF_NONE 162
|
||||||
#define POP_JUMP_IF_TRUE 163
|
#define POP_JUMP_IF_NOT_NONE 163
|
||||||
#define RAISE_VARARGS 164
|
#define POP_JUMP_IF_TRUE 164
|
||||||
#define RERAISE 165
|
#define RAISE_VARARGS 165
|
||||||
#define RESUME 166
|
#define RESUME 166
|
||||||
#define RETURN_CONST 167
|
#define RERAISE 167
|
||||||
#define SEND 168
|
#define RETURN_CONST 168
|
||||||
#define SEND_GEN 169
|
#define SEND 169
|
||||||
#define SET_ADD 170
|
#define SEND_GEN 170
|
||||||
#define SET_FUNCTION_ATTRIBUTE 171
|
#define SET_ADD 171
|
||||||
#define SET_UPDATE 172
|
#define SET_FUNCTION_ATTRIBUTE 172
|
||||||
#define STORE_ATTR 173
|
#define SET_UPDATE 173
|
||||||
#define STORE_ATTR_WITH_HINT 174
|
#define STORE_ATTR 174
|
||||||
#define STORE_DEREF 175
|
#define STORE_ATTR_WITH_HINT 175
|
||||||
#define STORE_FAST 176
|
#define STORE_DEREF 176
|
||||||
#define STORE_FAST_LOAD_FAST 177
|
#define STORE_FAST 177
|
||||||
#define STORE_FAST_STORE_FAST 178
|
#define STORE_FAST_LOAD_FAST 178
|
||||||
#define STORE_GLOBAL 179
|
#define STORE_FAST_STORE_FAST 179
|
||||||
#define STORE_NAME 180
|
#define STORE_GLOBAL 180
|
||||||
#define SWAP 181
|
#define STORE_NAME 181
|
||||||
#define UNPACK_EX 182
|
#define SWAP 182
|
||||||
#define UNPACK_SEQUENCE 183
|
#define UNPACK_EX 183
|
||||||
#define UNPACK_SEQUENCE_LIST 184
|
#define UNPACK_SEQUENCE 184
|
||||||
#define UNPACK_SEQUENCE_TUPLE 185
|
#define UNPACK_SEQUENCE_LIST 185
|
||||||
#define UNPACK_SEQUENCE_TWO_TUPLE 186
|
#define UNPACK_SEQUENCE_TUPLE 186
|
||||||
#define YIELD_VALUE 187
|
#define UNPACK_SEQUENCE_TWO_TUPLE 187
|
||||||
|
#define YIELD_VALUE 188
|
||||||
#define MIN_INSTRUMENTED_OPCODE 237
|
#define MIN_INSTRUMENTED_OPCODE 237
|
||||||
#define INSTRUMENTED_RESUME 237
|
#define INSTRUMENTED_RESUME 237
|
||||||
#define INSTRUMENTED_END_FOR 238
|
#define INSTRUMENTED_END_FOR 238
|
||||||
|
|
286
Lib/_opcode_metadata.py
generated
286
Lib/_opcode_metadata.py
generated
|
@ -4,6 +4,9 @@
|
||||||
# Do not edit!
|
# Do not edit!
|
||||||
|
|
||||||
_specializations = {
|
_specializations = {
|
||||||
|
"RESUME": [
|
||||||
|
"RESUME_CHECK",
|
||||||
|
],
|
||||||
"TO_BOOL": [
|
"TO_BOOL": [
|
||||||
"TO_BOOL_ALWAYS_TRUE",
|
"TO_BOOL_ALWAYS_TRUE",
|
||||||
"TO_BOOL_BOOL",
|
"TO_BOOL_BOOL",
|
||||||
|
@ -117,62 +120,63 @@ _specialized_opmap = {
|
||||||
'BINARY_SUBSCR_LIST_INT': 15,
|
'BINARY_SUBSCR_LIST_INT': 15,
|
||||||
'BINARY_SUBSCR_STR_INT': 16,
|
'BINARY_SUBSCR_STR_INT': 16,
|
||||||
'BINARY_SUBSCR_TUPLE_INT': 18,
|
'BINARY_SUBSCR_TUPLE_INT': 18,
|
||||||
'STORE_ATTR_INSTANCE_VALUE': 50,
|
'RESUME_CHECK': 47,
|
||||||
'STORE_ATTR_SLOT': 51,
|
'STORE_ATTR_INSTANCE_VALUE': 51,
|
||||||
'STORE_SUBSCR_DICT': 54,
|
'STORE_ATTR_SLOT': 52,
|
||||||
'STORE_SUBSCR_LIST_INT': 55,
|
'STORE_SUBSCR_DICT': 55,
|
||||||
'TO_BOOL_ALWAYS_TRUE': 57,
|
'STORE_SUBSCR_LIST_INT': 56,
|
||||||
'TO_BOOL_BOOL': 58,
|
'TO_BOOL_ALWAYS_TRUE': 58,
|
||||||
'TO_BOOL_INT': 59,
|
'TO_BOOL_BOOL': 59,
|
||||||
'TO_BOOL_LIST': 60,
|
'TO_BOOL_INT': 60,
|
||||||
'TO_BOOL_NONE': 61,
|
'TO_BOOL_LIST': 61,
|
||||||
'TO_BOOL_STR': 62,
|
'TO_BOOL_NONE': 62,
|
||||||
'CALL_BOUND_METHOD_EXACT_ARGS': 76,
|
'TO_BOOL_STR': 63,
|
||||||
'CALL_BUILTIN_CLASS': 77,
|
'CALL_BOUND_METHOD_EXACT_ARGS': 77,
|
||||||
'CALL_BUILTIN_FAST_WITH_KEYWORDS': 78,
|
'CALL_BUILTIN_CLASS': 78,
|
||||||
'CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS': 82,
|
'CALL_BUILTIN_FAST_WITH_KEYWORDS': 79,
|
||||||
'CALL_NO_KW_ALLOC_AND_ENTER_INIT': 83,
|
'CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS': 83,
|
||||||
'CALL_NO_KW_BUILTIN_FAST': 84,
|
'CALL_NO_KW_ALLOC_AND_ENTER_INIT': 84,
|
||||||
'CALL_NO_KW_BUILTIN_O': 85,
|
'CALL_NO_KW_BUILTIN_FAST': 85,
|
||||||
'CALL_NO_KW_ISINSTANCE': 86,
|
'CALL_NO_KW_BUILTIN_O': 86,
|
||||||
'CALL_NO_KW_LEN': 87,
|
'CALL_NO_KW_ISINSTANCE': 87,
|
||||||
'CALL_NO_KW_LIST_APPEND': 88,
|
'CALL_NO_KW_LEN': 88,
|
||||||
'CALL_NO_KW_METHOD_DESCRIPTOR_FAST': 89,
|
'CALL_NO_KW_LIST_APPEND': 89,
|
||||||
'CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS': 90,
|
'CALL_NO_KW_METHOD_DESCRIPTOR_FAST': 90,
|
||||||
'CALL_NO_KW_METHOD_DESCRIPTOR_O': 91,
|
'CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS': 91,
|
||||||
'CALL_NO_KW_STR_1': 92,
|
'CALL_NO_KW_METHOD_DESCRIPTOR_O': 92,
|
||||||
'CALL_NO_KW_TUPLE_1': 93,
|
'CALL_NO_KW_STR_1': 93,
|
||||||
'CALL_NO_KW_TYPE_1': 94,
|
'CALL_NO_KW_TUPLE_1': 94,
|
||||||
'CALL_PY_EXACT_ARGS': 95,
|
'CALL_NO_KW_TYPE_1': 95,
|
||||||
'CALL_PY_WITH_DEFAULTS': 96,
|
'CALL_PY_EXACT_ARGS': 96,
|
||||||
'COMPARE_OP_FLOAT': 98,
|
'CALL_PY_WITH_DEFAULTS': 97,
|
||||||
'COMPARE_OP_INT': 99,
|
'COMPARE_OP_FLOAT': 99,
|
||||||
'COMPARE_OP_STR': 100,
|
'COMPARE_OP_INT': 100,
|
||||||
'FOR_ITER_GEN': 115,
|
'COMPARE_OP_STR': 101,
|
||||||
'FOR_ITER_LIST': 116,
|
'FOR_ITER_GEN': 116,
|
||||||
'FOR_ITER_RANGE': 117,
|
'FOR_ITER_LIST': 117,
|
||||||
'FOR_ITER_TUPLE': 118,
|
'FOR_ITER_RANGE': 118,
|
||||||
'LOAD_ATTR_CLASS': 130,
|
'FOR_ITER_TUPLE': 119,
|
||||||
'LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN': 131,
|
'LOAD_ATTR_CLASS': 131,
|
||||||
'LOAD_ATTR_INSTANCE_VALUE': 132,
|
'LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN': 132,
|
||||||
'LOAD_ATTR_METHOD_LAZY_DICT': 133,
|
'LOAD_ATTR_INSTANCE_VALUE': 133,
|
||||||
'LOAD_ATTR_METHOD_NO_DICT': 134,
|
'LOAD_ATTR_METHOD_LAZY_DICT': 134,
|
||||||
'LOAD_ATTR_METHOD_WITH_VALUES': 135,
|
'LOAD_ATTR_METHOD_NO_DICT': 135,
|
||||||
'LOAD_ATTR_MODULE': 136,
|
'LOAD_ATTR_METHOD_WITH_VALUES': 136,
|
||||||
'LOAD_ATTR_NONDESCRIPTOR_NO_DICT': 137,
|
'LOAD_ATTR_MODULE': 137,
|
||||||
'LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES': 138,
|
'LOAD_ATTR_NONDESCRIPTOR_NO_DICT': 138,
|
||||||
'LOAD_ATTR_PROPERTY': 139,
|
'LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES': 139,
|
||||||
'LOAD_ATTR_SLOT': 140,
|
'LOAD_ATTR_PROPERTY': 140,
|
||||||
'LOAD_ATTR_WITH_HINT': 141,
|
'LOAD_ATTR_SLOT': 141,
|
||||||
'LOAD_GLOBAL_BUILTIN': 151,
|
'LOAD_ATTR_WITH_HINT': 142,
|
||||||
'LOAD_GLOBAL_MODULE': 152,
|
'LOAD_GLOBAL_BUILTIN': 152,
|
||||||
'LOAD_SUPER_ATTR_ATTR': 155,
|
'LOAD_GLOBAL_MODULE': 153,
|
||||||
'LOAD_SUPER_ATTR_METHOD': 156,
|
'LOAD_SUPER_ATTR_ATTR': 156,
|
||||||
'SEND_GEN': 169,
|
'LOAD_SUPER_ATTR_METHOD': 157,
|
||||||
'STORE_ATTR_WITH_HINT': 174,
|
'SEND_GEN': 170,
|
||||||
'UNPACK_SEQUENCE_LIST': 184,
|
'STORE_ATTR_WITH_HINT': 175,
|
||||||
'UNPACK_SEQUENCE_TUPLE': 185,
|
'UNPACK_SEQUENCE_LIST': 185,
|
||||||
'UNPACK_SEQUENCE_TWO_TUPLE': 186,
|
'UNPACK_SEQUENCE_TUPLE': 186,
|
||||||
|
'UNPACK_SEQUENCE_TWO_TUPLE': 187,
|
||||||
}
|
}
|
||||||
|
|
||||||
opmap = {
|
opmap = {
|
||||||
|
@ -210,91 +214,91 @@ opmap = {
|
||||||
'POP_TOP': 44,
|
'POP_TOP': 44,
|
||||||
'PUSH_EXC_INFO': 45,
|
'PUSH_EXC_INFO': 45,
|
||||||
'PUSH_NULL': 46,
|
'PUSH_NULL': 46,
|
||||||
'RETURN_GENERATOR': 47,
|
'RETURN_GENERATOR': 48,
|
||||||
'RETURN_VALUE': 48,
|
'RETURN_VALUE': 49,
|
||||||
'SETUP_ANNOTATIONS': 49,
|
'SETUP_ANNOTATIONS': 50,
|
||||||
'STORE_SLICE': 52,
|
'STORE_SLICE': 53,
|
||||||
'STORE_SUBSCR': 53,
|
'STORE_SUBSCR': 54,
|
||||||
'TO_BOOL': 56,
|
'TO_BOOL': 57,
|
||||||
'UNARY_INVERT': 63,
|
'UNARY_INVERT': 64,
|
||||||
'UNARY_NEGATIVE': 64,
|
'UNARY_NEGATIVE': 65,
|
||||||
'UNARY_NOT': 65,
|
'UNARY_NOT': 66,
|
||||||
'WITH_EXCEPT_START': 66,
|
'WITH_EXCEPT_START': 67,
|
||||||
'BINARY_OP': 67,
|
'BINARY_OP': 68,
|
||||||
'BUILD_CONST_KEY_MAP': 68,
|
'BUILD_CONST_KEY_MAP': 69,
|
||||||
'BUILD_LIST': 69,
|
'BUILD_LIST': 70,
|
||||||
'BUILD_MAP': 70,
|
'BUILD_MAP': 71,
|
||||||
'BUILD_SET': 71,
|
'BUILD_SET': 72,
|
||||||
'BUILD_SLICE': 72,
|
'BUILD_SLICE': 73,
|
||||||
'BUILD_STRING': 73,
|
'BUILD_STRING': 74,
|
||||||
'BUILD_TUPLE': 74,
|
'BUILD_TUPLE': 75,
|
||||||
'CALL': 75,
|
'CALL': 76,
|
||||||
'CALL_FUNCTION_EX': 79,
|
'CALL_FUNCTION_EX': 80,
|
||||||
'CALL_INTRINSIC_1': 80,
|
'CALL_INTRINSIC_1': 81,
|
||||||
'CALL_INTRINSIC_2': 81,
|
'CALL_INTRINSIC_2': 82,
|
||||||
'COMPARE_OP': 97,
|
'COMPARE_OP': 98,
|
||||||
'CONTAINS_OP': 101,
|
'CONTAINS_OP': 102,
|
||||||
'CONVERT_VALUE': 102,
|
'CONVERT_VALUE': 103,
|
||||||
'COPY': 103,
|
'COPY': 104,
|
||||||
'COPY_FREE_VARS': 104,
|
'COPY_FREE_VARS': 105,
|
||||||
'DELETE_ATTR': 105,
|
'DELETE_ATTR': 106,
|
||||||
'DELETE_DEREF': 106,
|
'DELETE_DEREF': 107,
|
||||||
'DELETE_FAST': 107,
|
'DELETE_FAST': 108,
|
||||||
'DELETE_GLOBAL': 108,
|
'DELETE_GLOBAL': 109,
|
||||||
'DELETE_NAME': 109,
|
'DELETE_NAME': 110,
|
||||||
'DICT_MERGE': 110,
|
'DICT_MERGE': 111,
|
||||||
'DICT_UPDATE': 111,
|
'DICT_UPDATE': 112,
|
||||||
'ENTER_EXECUTOR': 112,
|
'ENTER_EXECUTOR': 113,
|
||||||
'EXTENDED_ARG': 113,
|
'EXTENDED_ARG': 114,
|
||||||
'FOR_ITER': 114,
|
'FOR_ITER': 115,
|
||||||
'GET_AWAITABLE': 119,
|
'GET_AWAITABLE': 120,
|
||||||
'IMPORT_FROM': 120,
|
'IMPORT_FROM': 121,
|
||||||
'IMPORT_NAME': 121,
|
'IMPORT_NAME': 122,
|
||||||
'IS_OP': 122,
|
'IS_OP': 123,
|
||||||
'JUMP_BACKWARD': 123,
|
'JUMP_BACKWARD': 124,
|
||||||
'JUMP_BACKWARD_NO_INTERRUPT': 124,
|
'JUMP_BACKWARD_NO_INTERRUPT': 125,
|
||||||
'JUMP_FORWARD': 125,
|
'JUMP_FORWARD': 126,
|
||||||
'KW_NAMES': 126,
|
'KW_NAMES': 127,
|
||||||
'LIST_APPEND': 127,
|
'LIST_APPEND': 128,
|
||||||
'LIST_EXTEND': 128,
|
'LIST_EXTEND': 129,
|
||||||
'LOAD_ATTR': 129,
|
'LOAD_ATTR': 130,
|
||||||
'LOAD_CONST': 142,
|
'LOAD_CONST': 143,
|
||||||
'LOAD_DEREF': 143,
|
'LOAD_DEREF': 144,
|
||||||
'LOAD_FAST': 144,
|
'LOAD_FAST': 145,
|
||||||
'LOAD_FAST_AND_CLEAR': 145,
|
'LOAD_FAST_AND_CLEAR': 146,
|
||||||
'LOAD_FAST_CHECK': 146,
|
'LOAD_FAST_CHECK': 147,
|
||||||
'LOAD_FAST_LOAD_FAST': 147,
|
'LOAD_FAST_LOAD_FAST': 148,
|
||||||
'LOAD_FROM_DICT_OR_DEREF': 148,
|
'LOAD_FROM_DICT_OR_DEREF': 149,
|
||||||
'LOAD_FROM_DICT_OR_GLOBALS': 149,
|
'LOAD_FROM_DICT_OR_GLOBALS': 150,
|
||||||
'LOAD_GLOBAL': 150,
|
'LOAD_GLOBAL': 151,
|
||||||
'LOAD_NAME': 153,
|
'LOAD_NAME': 154,
|
||||||
'LOAD_SUPER_ATTR': 154,
|
'LOAD_SUPER_ATTR': 155,
|
||||||
'MAKE_CELL': 157,
|
'MAKE_CELL': 158,
|
||||||
'MAP_ADD': 158,
|
'MAP_ADD': 159,
|
||||||
'MATCH_CLASS': 159,
|
'MATCH_CLASS': 160,
|
||||||
'POP_JUMP_IF_FALSE': 160,
|
'POP_JUMP_IF_FALSE': 161,
|
||||||
'POP_JUMP_IF_NONE': 161,
|
'POP_JUMP_IF_NONE': 162,
|
||||||
'POP_JUMP_IF_NOT_NONE': 162,
|
'POP_JUMP_IF_NOT_NONE': 163,
|
||||||
'POP_JUMP_IF_TRUE': 163,
|
'POP_JUMP_IF_TRUE': 164,
|
||||||
'RAISE_VARARGS': 164,
|
'RAISE_VARARGS': 165,
|
||||||
'RERAISE': 165,
|
|
||||||
'RESUME': 166,
|
'RESUME': 166,
|
||||||
'RETURN_CONST': 167,
|
'RERAISE': 167,
|
||||||
'SEND': 168,
|
'RETURN_CONST': 168,
|
||||||
'SET_ADD': 170,
|
'SEND': 169,
|
||||||
'SET_FUNCTION_ATTRIBUTE': 171,
|
'SET_ADD': 171,
|
||||||
'SET_UPDATE': 172,
|
'SET_FUNCTION_ATTRIBUTE': 172,
|
||||||
'STORE_ATTR': 173,
|
'SET_UPDATE': 173,
|
||||||
'STORE_DEREF': 175,
|
'STORE_ATTR': 174,
|
||||||
'STORE_FAST': 176,
|
'STORE_DEREF': 176,
|
||||||
'STORE_FAST_LOAD_FAST': 177,
|
'STORE_FAST': 177,
|
||||||
'STORE_FAST_STORE_FAST': 178,
|
'STORE_FAST_LOAD_FAST': 178,
|
||||||
'STORE_GLOBAL': 179,
|
'STORE_FAST_STORE_FAST': 179,
|
||||||
'STORE_NAME': 180,
|
'STORE_GLOBAL': 180,
|
||||||
'SWAP': 181,
|
'STORE_NAME': 181,
|
||||||
'UNPACK_EX': 182,
|
'SWAP': 182,
|
||||||
'UNPACK_SEQUENCE': 183,
|
'UNPACK_EX': 183,
|
||||||
'YIELD_VALUE': 187,
|
'UNPACK_SEQUENCE': 184,
|
||||||
|
'YIELD_VALUE': 188,
|
||||||
'INSTRUMENTED_RESUME': 237,
|
'INSTRUMENTED_RESUME': 237,
|
||||||
'INSTRUMENTED_END_FOR': 238,
|
'INSTRUMENTED_END_FOR': 238,
|
||||||
'INSTRUMENTED_END_SEND': 239,
|
'INSTRUMENTED_END_SEND': 239,
|
||||||
|
@ -327,4 +331,4 @@ opmap = {
|
||||||
'STORE_FAST_MAYBE_NULL': 267,
|
'STORE_FAST_MAYBE_NULL': 267,
|
||||||
}
|
}
|
||||||
MIN_INSTRUMENTED_OPCODE = 237
|
MIN_INSTRUMENTED_OPCODE = 237
|
||||||
HAVE_ARGUMENT = 67
|
HAVE_ARGUMENT = 68
|
||||||
|
|
|
@ -788,7 +788,7 @@ def load_test(x, y=0):
|
||||||
return a, b
|
return a, b
|
||||||
|
|
||||||
dis_load_test_quickened_code = """\
|
dis_load_test_quickened_code = """\
|
||||||
%3d 0 RESUME 0
|
%3d 0 RESUME_CHECK 0
|
||||||
|
|
||||||
%3d 2 LOAD_FAST_LOAD_FAST 1 (x, y)
|
%3d 2 LOAD_FAST_LOAD_FAST 1 (x, y)
|
||||||
4 STORE_FAST_STORE_FAST 50 (b, a)
|
4 STORE_FAST_STORE_FAST 50 (b, a)
|
||||||
|
@ -805,7 +805,7 @@ def loop_test():
|
||||||
load_test(i)
|
load_test(i)
|
||||||
|
|
||||||
dis_loop_test_quickened_code = """\
|
dis_loop_test_quickened_code = """\
|
||||||
%3d RESUME 0
|
%3d RESUME_CHECK 0
|
||||||
|
|
||||||
%3d BUILD_LIST 0
|
%3d BUILD_LIST 0
|
||||||
LOAD_CONST 1 ((1, 2, 3))
|
LOAD_CONST 1 ((1, 2, 3))
|
||||||
|
@ -1197,7 +1197,7 @@ class DisTests(DisTestBase):
|
||||||
@requires_specialization
|
@requires_specialization
|
||||||
def test_binary_specialize(self):
|
def test_binary_specialize(self):
|
||||||
binary_op_quicken = """\
|
binary_op_quicken = """\
|
||||||
0 0 RESUME 0
|
0 0 RESUME_CHECK 0
|
||||||
|
|
||||||
1 2 LOAD_NAME 0 (a)
|
1 2 LOAD_NAME 0 (a)
|
||||||
4 LOAD_NAME 1 (b)
|
4 LOAD_NAME 1 (b)
|
||||||
|
@ -1215,7 +1215,7 @@ class DisTests(DisTestBase):
|
||||||
self.do_disassembly_compare(got, binary_op_quicken % "BINARY_OP_ADD_UNICODE 0 (+)", True)
|
self.do_disassembly_compare(got, binary_op_quicken % "BINARY_OP_ADD_UNICODE 0 (+)", True)
|
||||||
|
|
||||||
binary_subscr_quicken = """\
|
binary_subscr_quicken = """\
|
||||||
0 0 RESUME 0
|
0 0 RESUME_CHECK 0
|
||||||
|
|
||||||
1 2 LOAD_NAME 0 (a)
|
1 2 LOAD_NAME 0 (a)
|
||||||
4 LOAD_CONST 0 (0)
|
4 LOAD_CONST 0 (0)
|
||||||
|
@ -1236,7 +1236,7 @@ class DisTests(DisTestBase):
|
||||||
@requires_specialization
|
@requires_specialization
|
||||||
def test_load_attr_specialize(self):
|
def test_load_attr_specialize(self):
|
||||||
load_attr_quicken = """\
|
load_attr_quicken = """\
|
||||||
0 0 RESUME 0
|
0 0 RESUME_CHECK 0
|
||||||
|
|
||||||
1 2 LOAD_CONST 0 ('a')
|
1 2 LOAD_CONST 0 ('a')
|
||||||
4 LOAD_ATTR_SLOT 0 (__class__)
|
4 LOAD_ATTR_SLOT 0 (__class__)
|
||||||
|
@ -1251,7 +1251,7 @@ class DisTests(DisTestBase):
|
||||||
@requires_specialization
|
@requires_specialization
|
||||||
def test_call_specialize(self):
|
def test_call_specialize(self):
|
||||||
call_quicken = """\
|
call_quicken = """\
|
||||||
0 RESUME 0
|
0 RESUME_CHECK 0
|
||||||
|
|
||||||
1 LOAD_NAME 0 (str)
|
1 LOAD_NAME 0 (str)
|
||||||
PUSH_NULL
|
PUSH_NULL
|
||||||
|
@ -1640,197 +1640,197 @@ def _prepare_test_cases():
|
||||||
Instruction = dis.Instruction
|
Instruction = dis.Instruction
|
||||||
|
|
||||||
expected_opinfo_outer = [
|
expected_opinfo_outer = [
|
||||||
Instruction(opname='MAKE_CELL', opcode=157, arg=0, argval='a', argrepr='a', offset=0, start_offset=0, starts_line=True, line_number=None, is_jump_target=False, positions=None),
|
Instruction(opname='MAKE_CELL', opcode=158, arg=0, argval='a', argrepr='a', offset=0, start_offset=0, starts_line=True, line_number=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='MAKE_CELL', opcode=157, arg=1, argval='b', argrepr='b', offset=2, start_offset=2, starts_line=False, line_number=None, is_jump_target=False, positions=None),
|
Instruction(opname='MAKE_CELL', opcode=158, arg=1, argval='b', argrepr='b', offset=2, start_offset=2, starts_line=False, line_number=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RESUME', opcode=166, arg=0, argval=0, argrepr='', offset=4, start_offset=4, starts_line=True, line_number=1, is_jump_target=False, positions=None),
|
Instruction(opname='RESUME', opcode=166, arg=0, argval=0, argrepr='', offset=4, start_offset=4, starts_line=True, line_number=1, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=5, argval=(3, 4), argrepr='(3, 4)', offset=6, start_offset=6, starts_line=True, line_number=2, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=5, argval=(3, 4), argrepr='(3, 4)', offset=6, start_offset=6, starts_line=True, line_number=2, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=144, arg=0, argval='a', argrepr='a', offset=8, start_offset=8, starts_line=False, line_number=2, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='a', argrepr='a', offset=8, start_offset=8, starts_line=False, line_number=2, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=144, arg=1, argval='b', argrepr='b', offset=10, start_offset=10, starts_line=False, line_number=2, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=145, arg=1, argval='b', argrepr='b', offset=10, start_offset=10, starts_line=False, line_number=2, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='BUILD_TUPLE', opcode=74, arg=2, argval=2, argrepr='', offset=12, start_offset=12, starts_line=False, line_number=2, is_jump_target=False, positions=None),
|
Instruction(opname='BUILD_TUPLE', opcode=75, arg=2, argval=2, argrepr='', offset=12, start_offset=12, starts_line=False, line_number=2, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=1, argval=code_object_f, argrepr=repr(code_object_f), offset=14, start_offset=14, starts_line=False, line_number=2, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=1, argval=code_object_f, argrepr=repr(code_object_f), offset=14, start_offset=14, starts_line=False, line_number=2, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='MAKE_FUNCTION', opcode=38, arg=None, argval=None, argrepr='', offset=16, start_offset=16, starts_line=False, line_number=2, is_jump_target=False, positions=None),
|
Instruction(opname='MAKE_FUNCTION', opcode=38, arg=None, argval=None, argrepr='', offset=16, start_offset=16, starts_line=False, line_number=2, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='SET_FUNCTION_ATTRIBUTE', opcode=171, arg=8, argval=8, argrepr='closure', offset=18, start_offset=18, starts_line=False, line_number=2, is_jump_target=False, positions=None),
|
Instruction(opname='SET_FUNCTION_ATTRIBUTE', opcode=172, arg=8, argval=8, argrepr='closure', offset=18, start_offset=18, starts_line=False, line_number=2, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='SET_FUNCTION_ATTRIBUTE', opcode=171, arg=1, argval=1, argrepr='defaults', offset=20, start_offset=20, starts_line=False, line_number=2, is_jump_target=False, positions=None),
|
Instruction(opname='SET_FUNCTION_ATTRIBUTE', opcode=172, arg=1, argval=1, argrepr='defaults', offset=20, start_offset=20, starts_line=False, line_number=2, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='STORE_FAST', opcode=176, arg=2, argval='f', argrepr='f', offset=22, start_offset=22, starts_line=False, line_number=2, is_jump_target=False, positions=None),
|
Instruction(opname='STORE_FAST', opcode=177, arg=2, argval='f', argrepr='f', offset=22, start_offset=22, starts_line=False, line_number=2, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=150, arg=1, argval='print', argrepr='print + NULL', offset=24, start_offset=24, starts_line=True, line_number=7, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=151, arg=1, argval='print', argrepr='print + NULL', offset=24, start_offset=24, starts_line=True, line_number=7, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=143, arg=0, argval='a', argrepr='a', offset=34, start_offset=34, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=144, arg=0, argval='a', argrepr='a', offset=34, start_offset=34, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=143, arg=1, argval='b', argrepr='b', offset=36, start_offset=36, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=144, arg=1, argval='b', argrepr='b', offset=36, start_offset=36, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=2, argval='', argrepr="''", offset=38, start_offset=38, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=2, argval='', argrepr="''", offset=38, start_offset=38, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=3, argval=1, argrepr='1', offset=40, start_offset=40, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=3, argval=1, argrepr='1', offset=40, start_offset=40, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='BUILD_LIST', opcode=69, arg=0, argval=0, argrepr='', offset=42, start_offset=42, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
Instruction(opname='BUILD_LIST', opcode=70, arg=0, argval=0, argrepr='', offset=42, start_offset=42, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='BUILD_MAP', opcode=70, arg=0, argval=0, argrepr='', offset=44, start_offset=44, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
Instruction(opname='BUILD_MAP', opcode=71, arg=0, argval=0, argrepr='', offset=44, start_offset=44, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=4, argval='Hello world!', argrepr="'Hello world!'", offset=46, start_offset=46, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=4, argval='Hello world!', argrepr="'Hello world!'", offset=46, start_offset=46, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=75, arg=7, argval=7, argrepr='', offset=48, start_offset=48, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=76, arg=7, argval=7, argrepr='', offset=48, start_offset=48, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=56, start_offset=56, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=56, start_offset=56, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=144, arg=2, argval='f', argrepr='f', offset=58, start_offset=58, starts_line=True, line_number=8, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=145, arg=2, argval='f', argrepr='f', offset=58, start_offset=58, starts_line=True, line_number=8, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RETURN_VALUE', opcode=48, arg=None, argval=None, argrepr='', offset=60, start_offset=60, starts_line=False, line_number=8, is_jump_target=False, positions=None),
|
Instruction(opname='RETURN_VALUE', opcode=49, arg=None, argval=None, argrepr='', offset=60, start_offset=60, starts_line=False, line_number=8, is_jump_target=False, positions=None),
|
||||||
]
|
]
|
||||||
|
|
||||||
expected_opinfo_f = [
|
expected_opinfo_f = [
|
||||||
Instruction(opname='COPY_FREE_VARS', opcode=104, arg=2, argval=2, argrepr='', offset=0, start_offset=0, starts_line=True, line_number=None, is_jump_target=False, positions=None),
|
Instruction(opname='COPY_FREE_VARS', opcode=105, arg=2, argval=2, argrepr='', offset=0, start_offset=0, starts_line=True, line_number=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='MAKE_CELL', opcode=157, arg=0, argval='c', argrepr='c', offset=2, start_offset=2, starts_line=False, line_number=None, is_jump_target=False, positions=None),
|
Instruction(opname='MAKE_CELL', opcode=158, arg=0, argval='c', argrepr='c', offset=2, start_offset=2, starts_line=False, line_number=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='MAKE_CELL', opcode=157, arg=1, argval='d', argrepr='d', offset=4, start_offset=4, starts_line=False, line_number=None, is_jump_target=False, positions=None),
|
Instruction(opname='MAKE_CELL', opcode=158, arg=1, argval='d', argrepr='d', offset=4, start_offset=4, starts_line=False, line_number=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RESUME', opcode=166, arg=0, argval=0, argrepr='', offset=6, start_offset=6, starts_line=True, line_number=2, is_jump_target=False, positions=None),
|
Instruction(opname='RESUME', opcode=166, arg=0, argval=0, argrepr='', offset=6, start_offset=6, starts_line=True, line_number=2, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=2, argval=(5, 6), argrepr='(5, 6)', offset=8, start_offset=8, starts_line=True, line_number=3, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=2, argval=(5, 6), argrepr='(5, 6)', offset=8, start_offset=8, starts_line=True, line_number=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=144, arg=3, argval='a', argrepr='a', offset=10, start_offset=10, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=145, arg=3, argval='a', argrepr='a', offset=10, start_offset=10, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=144, arg=4, argval='b', argrepr='b', offset=12, start_offset=12, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=145, arg=4, argval='b', argrepr='b', offset=12, start_offset=12, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=144, arg=0, argval='c', argrepr='c', offset=14, start_offset=14, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='c', argrepr='c', offset=14, start_offset=14, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=144, arg=1, argval='d', argrepr='d', offset=16, start_offset=16, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=145, arg=1, argval='d', argrepr='d', offset=16, start_offset=16, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='BUILD_TUPLE', opcode=74, arg=4, argval=4, argrepr='', offset=18, start_offset=18, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
Instruction(opname='BUILD_TUPLE', opcode=75, arg=4, argval=4, argrepr='', offset=18, start_offset=18, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=1, argval=code_object_inner, argrepr=repr(code_object_inner), offset=20, start_offset=20, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=1, argval=code_object_inner, argrepr=repr(code_object_inner), offset=20, start_offset=20, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='MAKE_FUNCTION', opcode=38, arg=None, argval=None, argrepr='', offset=22, start_offset=22, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
Instruction(opname='MAKE_FUNCTION', opcode=38, arg=None, argval=None, argrepr='', offset=22, start_offset=22, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='SET_FUNCTION_ATTRIBUTE', opcode=171, arg=8, argval=8, argrepr='closure', offset=24, start_offset=24, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
Instruction(opname='SET_FUNCTION_ATTRIBUTE', opcode=172, arg=8, argval=8, argrepr='closure', offset=24, start_offset=24, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='SET_FUNCTION_ATTRIBUTE', opcode=171, arg=1, argval=1, argrepr='defaults', offset=26, start_offset=26, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
Instruction(opname='SET_FUNCTION_ATTRIBUTE', opcode=172, arg=1, argval=1, argrepr='defaults', offset=26, start_offset=26, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='STORE_FAST', opcode=176, arg=2, argval='inner', argrepr='inner', offset=28, start_offset=28, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
Instruction(opname='STORE_FAST', opcode=177, arg=2, argval='inner', argrepr='inner', offset=28, start_offset=28, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=150, arg=1, argval='print', argrepr='print + NULL', offset=30, start_offset=30, starts_line=True, line_number=5, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=151, arg=1, argval='print', argrepr='print + NULL', offset=30, start_offset=30, starts_line=True, line_number=5, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=143, arg=3, argval='a', argrepr='a', offset=40, start_offset=40, starts_line=False, line_number=5, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=144, arg=3, argval='a', argrepr='a', offset=40, start_offset=40, starts_line=False, line_number=5, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=143, arg=4, argval='b', argrepr='b', offset=42, start_offset=42, starts_line=False, line_number=5, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=144, arg=4, argval='b', argrepr='b', offset=42, start_offset=42, starts_line=False, line_number=5, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=143, arg=0, argval='c', argrepr='c', offset=44, start_offset=44, starts_line=False, line_number=5, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=144, arg=0, argval='c', argrepr='c', offset=44, start_offset=44, starts_line=False, line_number=5, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=143, arg=1, argval='d', argrepr='d', offset=46, start_offset=46, starts_line=False, line_number=5, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=144, arg=1, argval='d', argrepr='d', offset=46, start_offset=46, starts_line=False, line_number=5, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=75, arg=4, argval=4, argrepr='', offset=48, start_offset=48, starts_line=False, line_number=5, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=76, arg=4, argval=4, argrepr='', offset=48, start_offset=48, starts_line=False, line_number=5, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=56, start_offset=56, starts_line=False, line_number=5, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=56, start_offset=56, starts_line=False, line_number=5, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=144, arg=2, argval='inner', argrepr='inner', offset=58, start_offset=58, starts_line=True, line_number=6, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=145, arg=2, argval='inner', argrepr='inner', offset=58, start_offset=58, starts_line=True, line_number=6, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RETURN_VALUE', opcode=48, arg=None, argval=None, argrepr='', offset=60, start_offset=60, starts_line=False, line_number=6, is_jump_target=False, positions=None),
|
Instruction(opname='RETURN_VALUE', opcode=49, arg=None, argval=None, argrepr='', offset=60, start_offset=60, starts_line=False, line_number=6, is_jump_target=False, positions=None),
|
||||||
]
|
]
|
||||||
|
|
||||||
expected_opinfo_inner = [
|
expected_opinfo_inner = [
|
||||||
Instruction(opname='COPY_FREE_VARS', opcode=104, arg=4, argval=4, argrepr='', offset=0, start_offset=0, starts_line=True, line_number=None, is_jump_target=False, positions=None),
|
Instruction(opname='COPY_FREE_VARS', opcode=105, arg=4, argval=4, argrepr='', offset=0, start_offset=0, starts_line=True, line_number=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RESUME', opcode=166, arg=0, argval=0, argrepr='', offset=2, start_offset=2, starts_line=True, line_number=3, is_jump_target=False, positions=None),
|
Instruction(opname='RESUME', opcode=166, arg=0, argval=0, argrepr='', offset=2, start_offset=2, starts_line=True, line_number=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=150, arg=1, argval='print', argrepr='print + NULL', offset=4, start_offset=4, starts_line=True, line_number=4, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=151, arg=1, argval='print', argrepr='print + NULL', offset=4, start_offset=4, starts_line=True, line_number=4, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=143, arg=2, argval='a', argrepr='a', offset=14, start_offset=14, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=144, arg=2, argval='a', argrepr='a', offset=14, start_offset=14, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=143, arg=3, argval='b', argrepr='b', offset=16, start_offset=16, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=144, arg=3, argval='b', argrepr='b', offset=16, start_offset=16, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=143, arg=4, argval='c', argrepr='c', offset=18, start_offset=18, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=144, arg=4, argval='c', argrepr='c', offset=18, start_offset=18, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=143, arg=5, argval='d', argrepr='d', offset=20, start_offset=20, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=144, arg=5, argval='d', argrepr='d', offset=20, start_offset=20, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST_LOAD_FAST', opcode=147, arg=1, argval=('e', 'f'), argrepr='e, f', offset=22, start_offset=22, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST_LOAD_FAST', opcode=148, arg=1, argval=('e', 'f'), argrepr='e, f', offset=22, start_offset=22, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=75, arg=6, argval=6, argrepr='', offset=24, start_offset=24, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=76, arg=6, argval=6, argrepr='', offset=24, start_offset=24, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=32, start_offset=32, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=32, start_offset=32, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RETURN_CONST', opcode=167, arg=0, argval=None, argrepr='None', offset=34, start_offset=34, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
Instruction(opname='RETURN_CONST', opcode=168, arg=0, argval=None, argrepr='None', offset=34, start_offset=34, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
||||||
]
|
]
|
||||||
|
|
||||||
expected_opinfo_jumpy = [
|
expected_opinfo_jumpy = [
|
||||||
Instruction(opname='RESUME', opcode=166, arg=0, argval=0, argrepr='', offset=0, start_offset=0, starts_line=True, line_number=1, is_jump_target=False, positions=None),
|
Instruction(opname='RESUME', opcode=166, arg=0, argval=0, argrepr='', offset=0, start_offset=0, starts_line=True, line_number=1, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=150, arg=1, argval='range', argrepr='range + NULL', offset=2, start_offset=2, starts_line=True, line_number=3, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=151, arg=1, argval='range', argrepr='range + NULL', offset=2, start_offset=2, starts_line=True, line_number=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=1, argval=10, argrepr='10', offset=12, start_offset=12, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=1, argval=10, argrepr='10', offset=12, start_offset=12, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=75, arg=1, argval=1, argrepr='', offset=14, start_offset=14, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=76, arg=1, argval=1, argrepr='', offset=14, start_offset=14, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='GET_ITER', opcode=31, arg=None, argval=None, argrepr='', offset=22, start_offset=22, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
Instruction(opname='GET_ITER', opcode=31, arg=None, argval=None, argrepr='', offset=22, start_offset=22, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='FOR_ITER', opcode=114, arg=28, argval=84, argrepr='to 84', offset=24, start_offset=24, starts_line=False, line_number=3, is_jump_target=True, positions=None),
|
Instruction(opname='FOR_ITER', opcode=115, arg=28, argval=84, argrepr='to 84', offset=24, start_offset=24, starts_line=False, line_number=3, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='STORE_FAST', opcode=176, arg=0, argval='i', argrepr='i', offset=28, start_offset=28, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
Instruction(opname='STORE_FAST', opcode=177, arg=0, argval='i', argrepr='i', offset=28, start_offset=28, starts_line=False, line_number=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=150, arg=3, argval='print', argrepr='print + NULL', offset=30, start_offset=30, starts_line=True, line_number=4, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=151, arg=3, argval='print', argrepr='print + NULL', offset=30, start_offset=30, starts_line=True, line_number=4, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=144, arg=0, argval='i', argrepr='i', offset=40, start_offset=40, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='i', argrepr='i', offset=40, start_offset=40, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=75, arg=1, argval=1, argrepr='', offset=42, start_offset=42, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=76, arg=1, argval=1, argrepr='', offset=42, start_offset=42, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=50, start_offset=50, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=50, start_offset=50, starts_line=False, line_number=4, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=144, arg=0, argval='i', argrepr='i', offset=52, start_offset=52, starts_line=True, line_number=5, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='i', argrepr='i', offset=52, start_offset=52, starts_line=True, line_number=5, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=2, argval=4, argrepr='4', offset=54, start_offset=54, starts_line=False, line_number=5, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=2, argval=4, argrepr='4', offset=54, start_offset=54, starts_line=False, line_number=5, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='COMPARE_OP', opcode=97, arg=18, argval='<', argrepr='bool(<)', offset=56, start_offset=56, starts_line=False, line_number=5, is_jump_target=False, positions=None),
|
Instruction(opname='COMPARE_OP', opcode=98, arg=18, argval='<', argrepr='bool(<)', offset=56, start_offset=56, starts_line=False, line_number=5, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_JUMP_IF_FALSE', opcode=160, arg=2, argval=66, argrepr='to 66', offset=60, start_offset=60, starts_line=False, line_number=5, is_jump_target=False, positions=None),
|
Instruction(opname='POP_JUMP_IF_FALSE', opcode=161, arg=2, argval=66, argrepr='to 66', offset=60, start_offset=60, starts_line=False, line_number=5, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='JUMP_BACKWARD', opcode=123, arg=21, argval=24, argrepr='to 24', offset=62, start_offset=62, starts_line=True, line_number=6, is_jump_target=False, positions=None),
|
Instruction(opname='JUMP_BACKWARD', opcode=124, arg=21, argval=24, argrepr='to 24', offset=62, start_offset=62, starts_line=True, line_number=6, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=144, arg=0, argval='i', argrepr='i', offset=66, start_offset=66, starts_line=True, line_number=7, is_jump_target=True, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='i', argrepr='i', offset=66, start_offset=66, starts_line=True, line_number=7, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=3, argval=6, argrepr='6', offset=68, start_offset=68, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=3, argval=6, argrepr='6', offset=68, start_offset=68, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='COMPARE_OP', opcode=97, arg=148, argval='>', argrepr='bool(>)', offset=70, start_offset=70, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
Instruction(opname='COMPARE_OP', opcode=98, arg=148, argval='>', argrepr='bool(>)', offset=70, start_offset=70, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_JUMP_IF_TRUE', opcode=163, arg=2, argval=80, argrepr='to 80', offset=74, start_offset=74, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
Instruction(opname='POP_JUMP_IF_TRUE', opcode=164, arg=2, argval=80, argrepr='to 80', offset=74, start_offset=74, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='JUMP_BACKWARD', opcode=123, arg=28, argval=24, argrepr='to 24', offset=76, start_offset=76, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
Instruction(opname='JUMP_BACKWARD', opcode=124, arg=28, argval=24, argrepr='to 24', offset=76, start_offset=76, starts_line=False, line_number=7, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=80, start_offset=80, starts_line=True, line_number=8, is_jump_target=True, positions=None),
|
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=80, start_offset=80, starts_line=True, line_number=8, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='JUMP_FORWARD', opcode=125, arg=12, argval=108, argrepr='to 108', offset=82, start_offset=82, starts_line=False, line_number=8, is_jump_target=False, positions=None),
|
Instruction(opname='JUMP_FORWARD', opcode=126, arg=12, argval=108, argrepr='to 108', offset=82, start_offset=82, starts_line=False, line_number=8, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='END_FOR', opcode=24, arg=None, argval=None, argrepr='', offset=84, start_offset=84, starts_line=True, line_number=3, is_jump_target=True, positions=None),
|
Instruction(opname='END_FOR', opcode=24, arg=None, argval=None, argrepr='', offset=84, start_offset=84, starts_line=True, line_number=3, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=150, arg=3, argval='print', argrepr='print + NULL', offset=86, start_offset=86, starts_line=True, line_number=10, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=151, arg=3, argval='print', argrepr='print + NULL', offset=86, start_offset=86, starts_line=True, line_number=10, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=4, argval='I can haz else clause?', argrepr="'I can haz else clause?'", offset=96, start_offset=96, starts_line=False, line_number=10, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=4, argval='I can haz else clause?', argrepr="'I can haz else clause?'", offset=96, start_offset=96, starts_line=False, line_number=10, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=75, arg=1, argval=1, argrepr='', offset=98, start_offset=98, starts_line=False, line_number=10, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=76, arg=1, argval=1, argrepr='', offset=98, start_offset=98, starts_line=False, line_number=10, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=106, start_offset=106, starts_line=False, line_number=10, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=106, start_offset=106, starts_line=False, line_number=10, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST_CHECK', opcode=146, arg=0, argval='i', argrepr='i', offset=108, start_offset=108, starts_line=True, line_number=11, is_jump_target=True, positions=None),
|
Instruction(opname='LOAD_FAST_CHECK', opcode=147, arg=0, argval='i', argrepr='i', offset=108, start_offset=108, starts_line=True, line_number=11, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='TO_BOOL', opcode=56, arg=None, argval=None, argrepr='', offset=110, start_offset=110, starts_line=False, line_number=11, is_jump_target=False, positions=None),
|
Instruction(opname='TO_BOOL', opcode=57, arg=None, argval=None, argrepr='', offset=110, start_offset=110, starts_line=False, line_number=11, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_JUMP_IF_FALSE', opcode=160, arg=37, argval=194, argrepr='to 194', offset=118, start_offset=118, starts_line=False, line_number=11, is_jump_target=False, positions=None),
|
Instruction(opname='POP_JUMP_IF_FALSE', opcode=161, arg=37, argval=194, argrepr='to 194', offset=118, start_offset=118, starts_line=False, line_number=11, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=150, arg=3, argval='print', argrepr='print + NULL', offset=120, start_offset=120, starts_line=True, line_number=12, is_jump_target=True, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=151, arg=3, argval='print', argrepr='print + NULL', offset=120, start_offset=120, starts_line=True, line_number=12, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=144, arg=0, argval='i', argrepr='i', offset=130, start_offset=130, starts_line=False, line_number=12, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='i', argrepr='i', offset=130, start_offset=130, starts_line=False, line_number=12, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=75, arg=1, argval=1, argrepr='', offset=132, start_offset=132, starts_line=False, line_number=12, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=76, arg=1, argval=1, argrepr='', offset=132, start_offset=132, starts_line=False, line_number=12, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=140, start_offset=140, starts_line=False, line_number=12, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=140, start_offset=140, starts_line=False, line_number=12, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=144, arg=0, argval='i', argrepr='i', offset=142, start_offset=142, starts_line=True, line_number=13, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='i', argrepr='i', offset=142, start_offset=142, starts_line=True, line_number=13, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=5, argval=1, argrepr='1', offset=144, start_offset=144, starts_line=False, line_number=13, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=5, argval=1, argrepr='1', offset=144, start_offset=144, starts_line=False, line_number=13, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='BINARY_OP', opcode=67, arg=23, argval=23, argrepr='-=', offset=146, start_offset=146, starts_line=False, line_number=13, is_jump_target=False, positions=None),
|
Instruction(opname='BINARY_OP', opcode=68, arg=23, argval=23, argrepr='-=', offset=146, start_offset=146, starts_line=False, line_number=13, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='STORE_FAST', opcode=176, arg=0, argval='i', argrepr='i', offset=150, start_offset=150, starts_line=False, line_number=13, is_jump_target=False, positions=None),
|
Instruction(opname='STORE_FAST', opcode=177, arg=0, argval='i', argrepr='i', offset=150, start_offset=150, starts_line=False, line_number=13, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=144, arg=0, argval='i', argrepr='i', offset=152, start_offset=152, starts_line=True, line_number=14, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='i', argrepr='i', offset=152, start_offset=152, starts_line=True, line_number=14, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=3, argval=6, argrepr='6', offset=154, start_offset=154, starts_line=False, line_number=14, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=3, argval=6, argrepr='6', offset=154, start_offset=154, starts_line=False, line_number=14, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='COMPARE_OP', opcode=97, arg=148, argval='>', argrepr='bool(>)', offset=156, start_offset=156, starts_line=False, line_number=14, is_jump_target=False, positions=None),
|
Instruction(opname='COMPARE_OP', opcode=98, arg=148, argval='>', argrepr='bool(>)', offset=156, start_offset=156, starts_line=False, line_number=14, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_JUMP_IF_FALSE', opcode=160, arg=2, argval=166, argrepr='to 166', offset=160, start_offset=160, starts_line=False, line_number=14, is_jump_target=False, positions=None),
|
Instruction(opname='POP_JUMP_IF_FALSE', opcode=161, arg=2, argval=166, argrepr='to 166', offset=160, start_offset=160, starts_line=False, line_number=14, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='JUMP_BACKWARD', opcode=123, arg=29, argval=108, argrepr='to 108', offset=162, start_offset=162, starts_line=True, line_number=15, is_jump_target=False, positions=None),
|
Instruction(opname='JUMP_BACKWARD', opcode=124, arg=29, argval=108, argrepr='to 108', offset=162, start_offset=162, starts_line=True, line_number=15, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=144, arg=0, argval='i', argrepr='i', offset=166, start_offset=166, starts_line=True, line_number=16, is_jump_target=True, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='i', argrepr='i', offset=166, start_offset=166, starts_line=True, line_number=16, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=2, argval=4, argrepr='4', offset=168, start_offset=168, starts_line=False, line_number=16, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=2, argval=4, argrepr='4', offset=168, start_offset=168, starts_line=False, line_number=16, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='COMPARE_OP', opcode=97, arg=18, argval='<', argrepr='bool(<)', offset=170, start_offset=170, starts_line=False, line_number=16, is_jump_target=False, positions=None),
|
Instruction(opname='COMPARE_OP', opcode=98, arg=18, argval='<', argrepr='bool(<)', offset=170, start_offset=170, starts_line=False, line_number=16, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_JUMP_IF_FALSE', opcode=160, arg=1, argval=178, argrepr='to 178', offset=174, start_offset=174, starts_line=False, line_number=16, is_jump_target=False, positions=None),
|
Instruction(opname='POP_JUMP_IF_FALSE', opcode=161, arg=1, argval=178, argrepr='to 178', offset=174, start_offset=174, starts_line=False, line_number=16, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='JUMP_FORWARD', opcode=125, arg=19, argval=216, argrepr='to 216', offset=176, start_offset=176, starts_line=True, line_number=17, is_jump_target=False, positions=None),
|
Instruction(opname='JUMP_FORWARD', opcode=126, arg=19, argval=216, argrepr='to 216', offset=176, start_offset=176, starts_line=True, line_number=17, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=144, arg=0, argval='i', argrepr='i', offset=178, start_offset=178, starts_line=True, line_number=11, is_jump_target=True, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='i', argrepr='i', offset=178, start_offset=178, starts_line=True, line_number=11, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='TO_BOOL', opcode=56, arg=None, argval=None, argrepr='', offset=180, start_offset=180, starts_line=False, line_number=11, is_jump_target=False, positions=None),
|
Instruction(opname='TO_BOOL', opcode=57, arg=None, argval=None, argrepr='', offset=180, start_offset=180, starts_line=False, line_number=11, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_JUMP_IF_FALSE', opcode=160, arg=2, argval=194, argrepr='to 194', offset=188, start_offset=188, starts_line=False, line_number=11, is_jump_target=False, positions=None),
|
Instruction(opname='POP_JUMP_IF_FALSE', opcode=161, arg=2, argval=194, argrepr='to 194', offset=188, start_offset=188, starts_line=False, line_number=11, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='JUMP_BACKWARD', opcode=123, arg=37, argval=120, argrepr='to 120', offset=190, start_offset=190, starts_line=False, line_number=11, is_jump_target=False, positions=None),
|
Instruction(opname='JUMP_BACKWARD', opcode=124, arg=37, argval=120, argrepr='to 120', offset=190, start_offset=190, starts_line=False, line_number=11, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=150, arg=3, argval='print', argrepr='print + NULL', offset=194, start_offset=194, starts_line=True, line_number=19, is_jump_target=True, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=151, arg=3, argval='print', argrepr='print + NULL', offset=194, start_offset=194, starts_line=True, line_number=19, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=6, argval='Who let lolcatz into this test suite?', argrepr="'Who let lolcatz into this test suite?'", offset=204, start_offset=204, starts_line=False, line_number=19, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=6, argval='Who let lolcatz into this test suite?', argrepr="'Who let lolcatz into this test suite?'", offset=204, start_offset=204, starts_line=False, line_number=19, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=75, arg=1, argval=1, argrepr='', offset=206, start_offset=206, starts_line=False, line_number=19, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=76, arg=1, argval=1, argrepr='', offset=206, start_offset=206, starts_line=False, line_number=19, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=214, start_offset=214, starts_line=False, line_number=19, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=214, start_offset=214, starts_line=False, line_number=19, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='NOP', opcode=42, arg=None, argval=None, argrepr='', offset=216, start_offset=216, starts_line=True, line_number=20, is_jump_target=True, positions=None),
|
Instruction(opname='NOP', opcode=42, arg=None, argval=None, argrepr='', offset=216, start_offset=216, starts_line=True, line_number=20, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=5, argval=1, argrepr='1', offset=218, start_offset=218, starts_line=True, line_number=21, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=5, argval=1, argrepr='1', offset=218, start_offset=218, starts_line=True, line_number=21, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=7, argval=0, argrepr='0', offset=220, start_offset=220, starts_line=False, line_number=21, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=7, argval=0, argrepr='0', offset=220, start_offset=220, starts_line=False, line_number=21, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='BINARY_OP', opcode=67, arg=11, argval=11, argrepr='/', offset=222, start_offset=222, starts_line=False, line_number=21, is_jump_target=False, positions=None),
|
Instruction(opname='BINARY_OP', opcode=68, arg=11, argval=11, argrepr='/', offset=222, start_offset=222, starts_line=False, line_number=21, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=226, start_offset=226, starts_line=False, line_number=21, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=226, start_offset=226, starts_line=False, line_number=21, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=144, arg=0, argval='i', argrepr='i', offset=228, start_offset=228, starts_line=True, line_number=25, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='i', argrepr='i', offset=228, start_offset=228, starts_line=True, line_number=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='BEFORE_WITH', opcode=2, arg=None, argval=None, argrepr='', offset=230, start_offset=230, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
Instruction(opname='BEFORE_WITH', opcode=2, arg=None, argval=None, argrepr='', offset=230, start_offset=230, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='STORE_FAST', opcode=176, arg=1, argval='dodgy', argrepr='dodgy', offset=232, start_offset=232, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
Instruction(opname='STORE_FAST', opcode=177, arg=1, argval='dodgy', argrepr='dodgy', offset=232, start_offset=232, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=150, arg=3, argval='print', argrepr='print + NULL', offset=234, start_offset=234, starts_line=True, line_number=26, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=151, arg=3, argval='print', argrepr='print + NULL', offset=234, start_offset=234, starts_line=True, line_number=26, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=8, argval='Never reach this', argrepr="'Never reach this'", offset=244, start_offset=244, starts_line=False, line_number=26, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=8, argval='Never reach this', argrepr="'Never reach this'", offset=244, start_offset=244, starts_line=False, line_number=26, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=75, arg=1, argval=1, argrepr='', offset=246, start_offset=246, starts_line=False, line_number=26, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=76, arg=1, argval=1, argrepr='', offset=246, start_offset=246, starts_line=False, line_number=26, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=254, start_offset=254, starts_line=False, line_number=26, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=254, start_offset=254, starts_line=False, line_number=26, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=0, argval=None, argrepr='None', offset=256, start_offset=256, starts_line=True, line_number=25, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=0, argval=None, argrepr='None', offset=256, start_offset=256, starts_line=True, line_number=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=0, argval=None, argrepr='None', offset=258, start_offset=258, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=0, argval=None, argrepr='None', offset=258, start_offset=258, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=0, argval=None, argrepr='None', offset=260, start_offset=260, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=0, argval=None, argrepr='None', offset=260, start_offset=260, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=75, arg=2, argval=2, argrepr='', offset=262, start_offset=262, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=76, arg=2, argval=2, argrepr='', offset=262, start_offset=262, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=270, start_offset=270, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=270, start_offset=270, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=150, arg=3, argval='print', argrepr='print + NULL', offset=272, start_offset=272, starts_line=True, line_number=28, is_jump_target=True, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=151, arg=3, argval='print', argrepr='print + NULL', offset=272, start_offset=272, starts_line=True, line_number=28, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=282, start_offset=282, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=282, start_offset=282, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=75, arg=1, argval=1, argrepr='', offset=284, start_offset=284, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=76, arg=1, argval=1, argrepr='', offset=284, start_offset=284, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=292, start_offset=292, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=292, start_offset=292, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RETURN_CONST', opcode=167, arg=0, argval=None, argrepr='None', offset=294, start_offset=294, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
Instruction(opname='RETURN_CONST', opcode=168, arg=0, argval=None, argrepr='None', offset=294, start_offset=294, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='PUSH_EXC_INFO', opcode=45, arg=None, argval=None, argrepr='', offset=296, start_offset=296, starts_line=True, line_number=25, is_jump_target=False, positions=None),
|
Instruction(opname='PUSH_EXC_INFO', opcode=45, arg=None, argval=None, argrepr='', offset=296, start_offset=296, starts_line=True, line_number=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='WITH_EXCEPT_START', opcode=66, arg=None, argval=None, argrepr='', offset=298, start_offset=298, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
Instruction(opname='WITH_EXCEPT_START', opcode=67, arg=None, argval=None, argrepr='', offset=298, start_offset=298, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='TO_BOOL', opcode=56, arg=None, argval=None, argrepr='', offset=300, start_offset=300, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
Instruction(opname='TO_BOOL', opcode=57, arg=None, argval=None, argrepr='', offset=300, start_offset=300, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_JUMP_IF_TRUE', opcode=163, arg=1, argval=312, argrepr='to 312', offset=308, start_offset=308, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
Instruction(opname='POP_JUMP_IF_TRUE', opcode=164, arg=1, argval=312, argrepr='to 312', offset=308, start_offset=308, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RERAISE', opcode=165, arg=2, argval=2, argrepr='', offset=310, start_offset=310, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
Instruction(opname='RERAISE', opcode=167, arg=2, argval=2, argrepr='', offset=310, start_offset=310, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=312, start_offset=312, starts_line=False, line_number=25, is_jump_target=True, positions=None),
|
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=312, start_offset=312, starts_line=False, line_number=25, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='POP_EXCEPT', opcode=43, arg=None, argval=None, argrepr='', offset=314, start_offset=314, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
Instruction(opname='POP_EXCEPT', opcode=43, arg=None, argval=None, argrepr='', offset=314, start_offset=314, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=316, start_offset=316, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=316, start_offset=316, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=318, start_offset=318, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=318, start_offset=318, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='JUMP_BACKWARD', opcode=123, arg=26, argval=272, argrepr='to 272', offset=320, start_offset=320, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
Instruction(opname='JUMP_BACKWARD', opcode=124, arg=26, argval=272, argrepr='to 272', offset=320, start_offset=320, starts_line=False, line_number=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='COPY', opcode=103, arg=3, argval=3, argrepr='', offset=324, start_offset=324, starts_line=True, line_number=None, is_jump_target=False, positions=None),
|
Instruction(opname='COPY', opcode=104, arg=3, argval=3, argrepr='', offset=324, start_offset=324, starts_line=True, line_number=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_EXCEPT', opcode=43, arg=None, argval=None, argrepr='', offset=326, start_offset=326, starts_line=False, line_number=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_EXCEPT', opcode=43, arg=None, argval=None, argrepr='', offset=326, start_offset=326, starts_line=False, line_number=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RERAISE', opcode=165, arg=1, argval=1, argrepr='', offset=328, start_offset=328, starts_line=False, line_number=None, is_jump_target=False, positions=None),
|
Instruction(opname='RERAISE', opcode=167, arg=1, argval=1, argrepr='', offset=328, start_offset=328, starts_line=False, line_number=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='PUSH_EXC_INFO', opcode=45, arg=None, argval=None, argrepr='', offset=330, start_offset=330, starts_line=False, line_number=None, is_jump_target=False, positions=None),
|
Instruction(opname='PUSH_EXC_INFO', opcode=45, arg=None, argval=None, argrepr='', offset=330, start_offset=330, starts_line=False, line_number=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=150, arg=4, argval='ZeroDivisionError', argrepr='ZeroDivisionError', offset=332, start_offset=332, starts_line=True, line_number=22, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=151, arg=4, argval='ZeroDivisionError', argrepr='ZeroDivisionError', offset=332, start_offset=332, starts_line=True, line_number=22, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CHECK_EXC_MATCH', opcode=20, arg=None, argval=None, argrepr='', offset=342, start_offset=342, starts_line=False, line_number=22, is_jump_target=False, positions=None),
|
Instruction(opname='CHECK_EXC_MATCH', opcode=20, arg=None, argval=None, argrepr='', offset=342, start_offset=342, starts_line=False, line_number=22, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_JUMP_IF_FALSE', opcode=160, arg=15, argval=376, argrepr='to 376', offset=344, start_offset=344, starts_line=False, line_number=22, is_jump_target=False, positions=None),
|
Instruction(opname='POP_JUMP_IF_FALSE', opcode=161, arg=15, argval=376, argrepr='to 376', offset=344, start_offset=344, starts_line=False, line_number=22, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=346, start_offset=346, starts_line=False, line_number=22, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=346, start_offset=346, starts_line=False, line_number=22, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=150, arg=3, argval='print', argrepr='print + NULL', offset=348, start_offset=348, starts_line=True, line_number=23, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=151, arg=3, argval='print', argrepr='print + NULL', offset=348, start_offset=348, starts_line=True, line_number=23, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=9, argval='Here we go, here we go, here we go...', argrepr="'Here we go, here we go, here we go...'", offset=358, start_offset=358, starts_line=False, line_number=23, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=9, argval='Here we go, here we go, here we go...', argrepr="'Here we go, here we go, here we go...'", offset=358, start_offset=358, starts_line=False, line_number=23, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=75, arg=1, argval=1, argrepr='', offset=360, start_offset=360, starts_line=False, line_number=23, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=76, arg=1, argval=1, argrepr='', offset=360, start_offset=360, starts_line=False, line_number=23, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=368, start_offset=368, starts_line=False, line_number=23, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=368, start_offset=368, starts_line=False, line_number=23, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_EXCEPT', opcode=43, arg=None, argval=None, argrepr='', offset=370, start_offset=370, starts_line=False, line_number=23, is_jump_target=False, positions=None),
|
Instruction(opname='POP_EXCEPT', opcode=43, arg=None, argval=None, argrepr='', offset=370, start_offset=370, starts_line=False, line_number=23, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='JUMP_BACKWARD', opcode=123, arg=52, argval=272, argrepr='to 272', offset=372, start_offset=372, starts_line=False, line_number=23, is_jump_target=False, positions=None),
|
Instruction(opname='JUMP_BACKWARD', opcode=124, arg=52, argval=272, argrepr='to 272', offset=372, start_offset=372, starts_line=False, line_number=23, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RERAISE', opcode=165, arg=0, argval=0, argrepr='', offset=376, start_offset=376, starts_line=True, line_number=22, is_jump_target=True, positions=None),
|
Instruction(opname='RERAISE', opcode=167, arg=0, argval=0, argrepr='', offset=376, start_offset=376, starts_line=True, line_number=22, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='COPY', opcode=103, arg=3, argval=3, argrepr='', offset=378, start_offset=378, starts_line=True, line_number=None, is_jump_target=False, positions=None),
|
Instruction(opname='COPY', opcode=104, arg=3, argval=3, argrepr='', offset=378, start_offset=378, starts_line=True, line_number=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_EXCEPT', opcode=43, arg=None, argval=None, argrepr='', offset=380, start_offset=380, starts_line=False, line_number=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_EXCEPT', opcode=43, arg=None, argval=None, argrepr='', offset=380, start_offset=380, starts_line=False, line_number=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RERAISE', opcode=165, arg=1, argval=1, argrepr='', offset=382, start_offset=382, starts_line=False, line_number=None, is_jump_target=False, positions=None),
|
Instruction(opname='RERAISE', opcode=167, arg=1, argval=1, argrepr='', offset=382, start_offset=382, starts_line=False, line_number=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='PUSH_EXC_INFO', opcode=45, arg=None, argval=None, argrepr='', offset=384, start_offset=384, starts_line=False, line_number=None, is_jump_target=False, positions=None),
|
Instruction(opname='PUSH_EXC_INFO', opcode=45, arg=None, argval=None, argrepr='', offset=384, start_offset=384, starts_line=False, line_number=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=150, arg=3, argval='print', argrepr='print + NULL', offset=386, start_offset=386, starts_line=True, line_number=28, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=151, arg=3, argval='print', argrepr='print + NULL', offset=386, start_offset=386, starts_line=True, line_number=28, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=142, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=396, start_offset=396, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=143, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=396, start_offset=396, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=75, arg=1, argval=1, argrepr='', offset=398, start_offset=398, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=76, arg=1, argval=1, argrepr='', offset=398, start_offset=398, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=406, start_offset=406, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=406, start_offset=406, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RERAISE', opcode=165, arg=0, argval=0, argrepr='', offset=408, start_offset=408, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
Instruction(opname='RERAISE', opcode=167, arg=0, argval=0, argrepr='', offset=408, start_offset=408, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='COPY', opcode=103, arg=3, argval=3, argrepr='', offset=410, start_offset=410, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
Instruction(opname='COPY', opcode=104, arg=3, argval=3, argrepr='', offset=410, start_offset=410, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_EXCEPT', opcode=43, arg=None, argval=None, argrepr='', offset=412, start_offset=412, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
Instruction(opname='POP_EXCEPT', opcode=43, arg=None, argval=None, argrepr='', offset=412, start_offset=412, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RERAISE', opcode=165, arg=1, argval=1, argrepr='', offset=414, start_offset=414, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
Instruction(opname='RERAISE', opcode=167, arg=1, argval=1, argrepr='', offset=414, start_offset=414, starts_line=False, line_number=28, is_jump_target=False, positions=None),
|
||||||
]
|
]
|
||||||
|
|
||||||
# One last piece of inspect fodder to check the default line number handling
|
# One last piece of inspect fodder to check the default line number handling
|
||||||
def simple(): pass
|
def simple(): pass
|
||||||
expected_opinfo_simple = [
|
expected_opinfo_simple = [
|
||||||
Instruction(opname='RESUME', opcode=166, arg=0, argval=0, argrepr='', offset=0, start_offset=0, starts_line=True, line_number=simple.__code__.co_firstlineno, is_jump_target=False, positions=None),
|
Instruction(opname='RESUME', opcode=166, arg=0, argval=0, argrepr='', offset=0, start_offset=0, starts_line=True, line_number=simple.__code__.co_firstlineno, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RETURN_CONST', opcode=167, arg=0, argval=None, argrepr='None', offset=2, start_offset=2, starts_line=False, line_number=simple.__code__.co_firstlineno, is_jump_target=False),
|
Instruction(opname='RETURN_CONST', opcode=168, arg=0, argval=None, argrepr='None', offset=2, start_offset=2, starts_line=False, line_number=simple.__code__.co_firstlineno, is_jump_target=False),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Add RESUME_CHECK instruction, to avoid having to handle instrumentation,
|
||||||
|
signals, and contexts switches in the tier 2 execution engine.
|
|
@ -333,7 +333,11 @@ gen_close_iter(PyObject *yf)
|
||||||
static inline bool
|
static inline bool
|
||||||
is_resume(_Py_CODEUNIT *instr)
|
is_resume(_Py_CODEUNIT *instr)
|
||||||
{
|
{
|
||||||
return instr->op.code == RESUME || instr->op.code == INSTRUMENTED_RESUME;
|
return (
|
||||||
|
instr->op.code == RESUME ||
|
||||||
|
instr->op.code == RESUME_CHECK ||
|
||||||
|
instr->op.code == INSTRUMENTED_RESUME
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool
|
static inline bool
|
||||||
|
|
22
Programs/test_frozenmain.h
generated
22
Programs/test_frozenmain.h
generated
|
@ -1,17 +1,17 @@
|
||||||
// Auto-generated by Programs/freeze_test_frozenmain.py
|
// Auto-generated by Programs/freeze_test_frozenmain.py
|
||||||
unsigned char M_test_frozenmain[] = {
|
unsigned char M_test_frozenmain[] = {
|
||||||
227,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,
|
227,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,
|
||||||
0,0,0,0,0,243,164,0,0,0,166,0,142,0,142,1,
|
0,0,0,0,0,243,164,0,0,0,166,0,143,0,143,1,
|
||||||
121,0,180,0,142,0,142,1,121,1,180,1,153,2,46,0,
|
122,0,181,0,143,0,143,1,122,1,181,1,154,2,46,0,
|
||||||
142,2,75,1,0,0,0,0,0,0,44,0,153,2,46,0,
|
143,2,76,1,0,0,0,0,0,0,44,0,154,2,46,0,
|
||||||
142,3,153,0,129,6,0,0,0,0,0,0,0,0,0,0,
|
143,3,154,0,130,6,0,0,0,0,0,0,0,0,0,0,
|
||||||
0,0,0,0,0,0,0,0,75,2,0,0,0,0,0,0,
|
0,0,0,0,0,0,0,0,76,2,0,0,0,0,0,0,
|
||||||
44,0,153,1,129,8,0,0,0,0,0,0,0,0,0,0,
|
44,0,154,1,130,8,0,0,0,0,0,0,0,0,0,0,
|
||||||
0,0,0,0,0,0,0,0,46,0,75,0,0,0,0,0,
|
0,0,0,0,0,0,0,0,46,0,76,0,0,0,0,0,
|
||||||
0,0,142,4,12,0,0,0,180,5,142,5,31,0,114,20,
|
0,0,143,4,12,0,0,0,181,5,143,5,31,0,115,20,
|
||||||
0,0,180,6,153,2,46,0,142,6,153,6,27,0,142,7,
|
0,0,181,6,154,2,46,0,143,6,154,6,27,0,143,7,
|
||||||
153,5,153,6,12,0,0,0,27,0,73,4,75,1,0,0,
|
154,5,154,6,12,0,0,0,27,0,74,4,76,1,0,0,
|
||||||
0,0,0,0,44,0,123,22,0,0,24,0,167,1,41,8,
|
0,0,0,0,44,0,124,22,0,0,24,0,168,1,41,8,
|
||||||
233,0,0,0,0,78,122,18,70,114,111,122,101,110,32,72,
|
233,0,0,0,0,78,122,18,70,114,111,122,101,110,32,72,
|
||||||
101,108,108,111,32,87,111,114,108,100,122,8,115,121,115,46,
|
101,108,108,111,32,87,111,114,108,100,122,8,115,121,115,46,
|
||||||
97,114,103,118,218,6,99,111,110,102,105,103,41,5,218,12,
|
97,114,103,118,218,6,99,111,110,102,105,103,41,5,218,12,
|
||||||
|
|
2
Python/abstract_interp_cases.c.h
generated
2
Python/abstract_interp_cases.c.h
generated
|
@ -7,7 +7,7 @@
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case RESUME: {
|
case RESUME_CHECK: {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -132,24 +132,37 @@ dummy_func(
|
||||||
inst(NOP, (--)) {
|
inst(NOP, (--)) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
family(RESUME, 0) = {
|
||||||
|
RESUME_CHECK,
|
||||||
|
};
|
||||||
|
|
||||||
inst(RESUME, (--)) {
|
inst(RESUME, (--)) {
|
||||||
|
TIER_ONE_ONLY
|
||||||
assert(frame == tstate->current_frame);
|
assert(frame == tstate->current_frame);
|
||||||
/* Possibly combine this with eval breaker */
|
|
||||||
if (_PyFrame_GetCode(frame)->_co_instrumentation_version != tstate->interp->monitoring_version) {
|
if (_PyFrame_GetCode(frame)->_co_instrumentation_version != tstate->interp->monitoring_version) {
|
||||||
int err = _Py_Instrument(_PyFrame_GetCode(frame), tstate->interp);
|
int err = _Py_Instrument(_PyFrame_GetCode(frame), tstate->interp);
|
||||||
ERROR_IF(err, error);
|
ERROR_IF(err, error);
|
||||||
#if TIER_ONE
|
|
||||||
next_instr--;
|
next_instr--;
|
||||||
#endif
|
|
||||||
#if TIER_TWO
|
|
||||||
goto deoptimize;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else if (oparg < 2) {
|
else {
|
||||||
CHECK_EVAL_BREAKER();
|
if (oparg < 2) {
|
||||||
|
CHECK_EVAL_BREAKER();
|
||||||
|
}
|
||||||
|
next_instr[-1].op.code = RESUME_CHECK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inst(RESUME_CHECK, (--)) {
|
||||||
|
#if defined(__EMSCRIPTEN__)
|
||||||
|
DEOPT_IF(emscripten_signal_clock == 0, RESUME);
|
||||||
|
emscripten_signal_clock -= Py_EMSCRIPTEN_SIGNAL_HANDLING;
|
||||||
|
#endif
|
||||||
|
/* Possibly combine these two checks */
|
||||||
|
DEOPT_IF(_PyFrame_GetCode(frame)->_co_instrumentation_version
|
||||||
|
!= tstate->interp->monitoring_version, RESUME);
|
||||||
|
DEOPT_IF(_Py_atomic_load_relaxed_int32(&tstate->interp->ceval.eval_breaker), RESUME);
|
||||||
|
}
|
||||||
|
|
||||||
inst(INSTRUMENTED_RESUME, (--)) {
|
inst(INSTRUMENTED_RESUME, (--)) {
|
||||||
/* Possible performance enhancement:
|
/* Possible performance enhancement:
|
||||||
* We need to check the eval breaker anyway, can we
|
* We need to check the eval breaker anyway, can we
|
||||||
|
|
|
@ -374,6 +374,8 @@ static inline void _Py_LeaveRecursiveCallPy(PyThreadState *tstate) {
|
||||||
tstate->py_recursion_remaining++;
|
tstate->py_recursion_remaining++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Marker to specify tier 1 only instructions */
|
||||||
|
#define TIER_ONE_ONLY
|
||||||
|
|
||||||
/* Implementation of "macros" that modify the instruction pointer,
|
/* Implementation of "macros" that modify the instruction pointer,
|
||||||
* stack pointer, or frame pointer.
|
* stack pointer, or frame pointer.
|
||||||
|
|
|
@ -38,19 +38,17 @@ _Py_CheckEmscriptenSignals(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define PY_EMSCRIPTEN_SIGNAL_INTERVAL 50
|
#define PY_EMSCRIPTEN_SIGNAL_INTERVAL 50
|
||||||
static int emscripten_signal_clock = PY_EMSCRIPTEN_SIGNAL_INTERVAL;
|
static int emscripten_signal_clock = PY_EMSCRIPTEN_SIGNAL_INTERVAL;
|
||||||
|
|
||||||
void
|
void
|
||||||
_Py_CheckEmscriptenSignalsPeriodically(void)
|
_Py_CheckEmscriptenSignalsPeriodically(void)
|
||||||
{
|
{
|
||||||
if (!Py_EMSCRIPTEN_SIGNAL_HANDLING) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
emscripten_signal_clock--;
|
|
||||||
if (emscripten_signal_clock == 0) {
|
if (emscripten_signal_clock == 0) {
|
||||||
emscripten_signal_clock = PY_EMSCRIPTEN_SIGNAL_INTERVAL;
|
emscripten_signal_clock = PY_EMSCRIPTEN_SIGNAL_INTERVAL;
|
||||||
_Py_CheckEmscriptenSignals();
|
_Py_CheckEmscriptenSignals();
|
||||||
}
|
}
|
||||||
|
else if (Py_EMSCRIPTEN_SIGNAL_HANDLING) {
|
||||||
|
emscripten_signal_clock--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
25
Python/executor_cases.c.h
generated
25
Python/executor_cases.c.h
generated
|
@ -7,22 +7,15 @@
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case RESUME: {
|
case RESUME_CHECK: {
|
||||||
assert(frame == tstate->current_frame);
|
#if defined(__EMSCRIPTEN__)
|
||||||
/* Possibly combine this with eval breaker */
|
DEOPT_IF(emscripten_signal_clock == 0, RESUME);
|
||||||
if (_PyFrame_GetCode(frame)->_co_instrumentation_version != tstate->interp->monitoring_version) {
|
emscripten_signal_clock -= Py_EMSCRIPTEN_SIGNAL_HANDLING;
|
||||||
int err = _Py_Instrument(_PyFrame_GetCode(frame), tstate->interp);
|
#endif
|
||||||
if (err) goto error;
|
/* Possibly combine these two checks */
|
||||||
#if TIER_ONE
|
DEOPT_IF(_PyFrame_GetCode(frame)->_co_instrumentation_version
|
||||||
next_instr--;
|
!= tstate->interp->monitoring_version, RESUME);
|
||||||
#endif
|
DEOPT_IF(_Py_atomic_load_relaxed_int32(&tstate->interp->ceval.eval_breaker), RESUME);
|
||||||
#if TIER_TWO
|
|
||||||
goto deoptimize;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
else if (oparg < 2) {
|
|
||||||
CHECK_EVAL_BREAKER();
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
28
Python/generated_cases.c.h
generated
28
Python/generated_cases.c.h
generated
|
@ -8,24 +8,36 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
TARGET(RESUME) {
|
TARGET(RESUME) {
|
||||||
|
PREDICTED(RESUME);
|
||||||
|
static_assert(0 == 0, "incorrect cache size");
|
||||||
|
TIER_ONE_ONLY
|
||||||
assert(frame == tstate->current_frame);
|
assert(frame == tstate->current_frame);
|
||||||
/* Possibly combine this with eval breaker */
|
|
||||||
if (_PyFrame_GetCode(frame)->_co_instrumentation_version != tstate->interp->monitoring_version) {
|
if (_PyFrame_GetCode(frame)->_co_instrumentation_version != tstate->interp->monitoring_version) {
|
||||||
int err = _Py_Instrument(_PyFrame_GetCode(frame), tstate->interp);
|
int err = _Py_Instrument(_PyFrame_GetCode(frame), tstate->interp);
|
||||||
if (err) goto error;
|
if (err) goto error;
|
||||||
#if TIER_ONE
|
|
||||||
next_instr--;
|
next_instr--;
|
||||||
#endif
|
|
||||||
#if TIER_TWO
|
|
||||||
goto deoptimize;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else if (oparg < 2) {
|
else {
|
||||||
CHECK_EVAL_BREAKER();
|
if (oparg < 2) {
|
||||||
|
CHECK_EVAL_BREAKER();
|
||||||
|
}
|
||||||
|
next_instr[-1].op.code = RESUME_CHECK;
|
||||||
}
|
}
|
||||||
DISPATCH();
|
DISPATCH();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TARGET(RESUME_CHECK) {
|
||||||
|
#if defined(__EMSCRIPTEN__)
|
||||||
|
DEOPT_IF(emscripten_signal_clock == 0, RESUME);
|
||||||
|
emscripten_signal_clock -= Py_EMSCRIPTEN_SIGNAL_HANDLING;
|
||||||
|
#endif
|
||||||
|
/* Possibly combine these two checks */
|
||||||
|
DEOPT_IF(_PyFrame_GetCode(frame)->_co_instrumentation_version
|
||||||
|
!= tstate->interp->monitoring_version, RESUME);
|
||||||
|
DEOPT_IF(_Py_atomic_load_relaxed_int32(&tstate->interp->ceval.eval_breaker), RESUME);
|
||||||
|
DISPATCH();
|
||||||
|
}
|
||||||
|
|
||||||
TARGET(INSTRUMENTED_RESUME) {
|
TARGET(INSTRUMENTED_RESUME) {
|
||||||
/* Possible performance enhancement:
|
/* Possible performance enhancement:
|
||||||
* We need to check the eval breaker anyway, can we
|
* We need to check the eval breaker anyway, can we
|
||||||
|
|
4
Python/opcode_targets.h
generated
4
Python/opcode_targets.h
generated
|
@ -46,6 +46,7 @@ static void *opcode_targets[256] = {
|
||||||
&&TARGET_POP_TOP,
|
&&TARGET_POP_TOP,
|
||||||
&&TARGET_PUSH_EXC_INFO,
|
&&TARGET_PUSH_EXC_INFO,
|
||||||
&&TARGET_PUSH_NULL,
|
&&TARGET_PUSH_NULL,
|
||||||
|
&&TARGET_RESUME_CHECK,
|
||||||
&&TARGET_RETURN_GENERATOR,
|
&&TARGET_RETURN_GENERATOR,
|
||||||
&&TARGET_RETURN_VALUE,
|
&&TARGET_RETURN_VALUE,
|
||||||
&&TARGET_SETUP_ANNOTATIONS,
|
&&TARGET_SETUP_ANNOTATIONS,
|
||||||
|
@ -164,8 +165,8 @@ static void *opcode_targets[256] = {
|
||||||
&&TARGET_POP_JUMP_IF_NOT_NONE,
|
&&TARGET_POP_JUMP_IF_NOT_NONE,
|
||||||
&&TARGET_POP_JUMP_IF_TRUE,
|
&&TARGET_POP_JUMP_IF_TRUE,
|
||||||
&&TARGET_RAISE_VARARGS,
|
&&TARGET_RAISE_VARARGS,
|
||||||
&&TARGET_RERAISE,
|
|
||||||
&&TARGET_RESUME,
|
&&TARGET_RESUME,
|
||||||
|
&&TARGET_RERAISE,
|
||||||
&&TARGET_RETURN_CONST,
|
&&TARGET_RETURN_CONST,
|
||||||
&&TARGET_SEND,
|
&&TARGET_SEND,
|
||||||
&&TARGET_SEND_GEN,
|
&&TARGET_SEND_GEN,
|
||||||
|
@ -235,7 +236,6 @@ static void *opcode_targets[256] = {
|
||||||
&&_unknown_opcode,
|
&&_unknown_opcode,
|
||||||
&&_unknown_opcode,
|
&&_unknown_opcode,
|
||||||
&&_unknown_opcode,
|
&&_unknown_opcode,
|
||||||
&&_unknown_opcode,
|
|
||||||
&&TARGET_INSTRUMENTED_RESUME,
|
&&TARGET_INSTRUMENTED_RESUME,
|
||||||
&&TARGET_INSTRUMENTED_END_FOR,
|
&&TARGET_INSTRUMENTED_END_FOR,
|
||||||
&&TARGET_INSTRUMENTED_END_SEND,
|
&&TARGET_INSTRUMENTED_END_SEND,
|
||||||
|
|
|
@ -37,6 +37,7 @@ FORBIDDEN_NAMES_IN_UOPS = (
|
||||||
"import_from",
|
"import_from",
|
||||||
"import_name",
|
"import_name",
|
||||||
"_PyObject_CallNoArgs", # Proxy for BEFORE_WITH
|
"_PyObject_CallNoArgs", # Proxy for BEFORE_WITH
|
||||||
|
"TIER_ONE_ONLY",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -362,7 +362,8 @@ class Parser(PLexer):
|
||||||
if tkn := self.expect(lx.IDENTIFIER):
|
if tkn := self.expect(lx.IDENTIFIER):
|
||||||
if self.expect(lx.COMMA):
|
if self.expect(lx.COMMA):
|
||||||
if not (size := self.expect(lx.IDENTIFIER)):
|
if not (size := self.expect(lx.IDENTIFIER)):
|
||||||
raise self.make_syntax_error("Expected identifier")
|
if not (size := self.expect(lx.NUMBER)):
|
||||||
|
raise self.make_syntax_error("Expected identifier or number")
|
||||||
if self.expect(lx.RPAREN):
|
if self.expect(lx.RPAREN):
|
||||||
if self.expect(lx.EQUALS):
|
if self.expect(lx.EQUALS):
|
||||||
if not self.expect(lx.LBRACE):
|
if not self.expect(lx.LBRACE):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue