|
38 | 38 | def_op(loc, "CACHE", 0, 0, 0) |
39 | 39 | def_op(loc, "BINARY_SLICE", 1, 3, 1) |
40 | 40 | def_op(loc, "BUILD_TEMPLATE", 2, 2, 1) |
41 | | -def_op(loc, "BINARY_OP_INPLACE_ADD_UNICODE", 3, 2, 0) |
| 41 | +local_op(loc, "BINARY_OP_INPLACE_ADD_UNICODE", 3, 2, 0) |
42 | 42 | def_op(loc, "CALL_FUNCTION_EX", 4, 4, 1) |
43 | 43 | def_op(loc, "CHECK_EG_MATCH", 5, 2, 2) |
44 | 44 | def_op(loc, "CHECK_EXC_MATCH", 6, 2, 2) |
|
103 | 103 | name_op(loc, "DELETE_NAME", 65, 0, 0) |
104 | 104 | def_op(loc, "DICT_MERGE", 66, 1, 0) |
105 | 105 | def_op(loc, "DICT_UPDATE", 67, 1, 0) |
106 | | -def_op(loc, "END_ASYNC_FOR", 68, 2, 0) |
| 106 | +jrel_op(loc, "END_ASYNC_FOR", 68, 2, 0, conditional=True) |
107 | 107 | def_op(loc, "EXTENDED_ARG", 69, 0, 0) |
108 | 108 | jrel_op(loc, "FOR_ITER", 70, 0, 1, conditional=True) |
109 | 109 | def_op(loc, "GET_AWAITABLE", 71, 1, 1) |
|
118 | 118 | name_op(loc, "LOAD_ATTR", 80, 1, 1) # pops 1 + (oparg & 1) |
119 | 119 | def_op(loc, "LOAD_COMMON_CONSTANT", 81, 0, 1) |
120 | 120 | const_op(loc, "LOAD_CONST", 82, 0, 1) |
121 | | -free_op(loc, "LOAD_DEREF", 83, 0, 1) |
| 121 | +local_op(loc, "LOAD_DEREF", 83, 0, 1) |
122 | 122 | local_op(loc, "LOAD_FAST", 84, 0, 1) |
123 | 123 | local_op(loc, "LOAD_FAST_AND_CLEAR", 85, 0, 1) |
124 | 124 | local_op(loc, "LOAD_FAST_BORROW", 86, 0, 1) |
125 | 125 | local_op(loc, "LOAD_FAST_BORROW_LOAD_FAST_BORROW", 87, 0, 2) |
126 | 126 | local_op(loc, "LOAD_FAST_CHECK", 88, 0, 1) |
127 | 127 | local_op(loc, "LOAD_FAST_LOAD_FAST", 89, 0, 2) |
128 | 128 | free_op(loc, "LOAD_FROM_DICT_OR_DEREF", 90, 1, 1) |
129 | | -def_op(loc, "LOAD_FROM_DICT_OR_GLOBALS", 91, 1, 1) |
| 129 | +name_op(loc, "LOAD_FROM_DICT_OR_GLOBALS", 91, 1, 1) |
130 | 130 | name_op(loc, "LOAD_GLOBAL", 92, 0, 1) # pops 1 + (oparg & 1) |
131 | 131 | name_op(loc, "LOAD_NAME", 93, 0, 1) |
132 | 132 | def_op(loc, "LOAD_SMALL_INT", 94, 0, 1) |
|
141 | 141 | jrel_op(loc, "POP_JUMP_IF_TRUE", 103, 1, 0, conditional=True) |
142 | 142 | varargs_op(loc, "RAISE_VARARGS", 104, -1, 0) |
143 | 143 | def_op(loc, "RERAISE", 105, 1, 0) |
144 | | -def_op(loc, "SEND", 106, 2, 2) |
| 144 | +jrel_op(loc, "SEND", 106, 2, 2, conditional=True) |
145 | 145 | def_op(loc, "SET_ADD", 107, 1, 0) |
146 | 146 | def_op(loc, "SET_FUNCTION_ATTRIBUTE", 108, 2, 1) |
147 | 147 | def_op(loc, "SET_UPDATE", 109, 1, 0) |
148 | 148 | store_op(loc, "STORE_ATTR", 110, 2, 0, is_type="name") |
149 | 149 | store_op(loc, "STORE_DEREF", 111, 1, 0, is_type="free") |
150 | 150 | store_op(loc, "STORE_FAST", 112, 1, 0, is_type="local") |
151 | | -name_op(loc, "STORE_FAST_LOAD_FAST", 113, 1, 1) |
| 151 | +local_op(loc, "STORE_FAST_LOAD_FAST", 113, 1, 1) |
152 | 152 | store_op(loc, "STORE_FAST_STORE_FAST", 114, 2, 0, is_type="local") |
153 | 153 | store_op(loc, "STORE_GLOBAL", 115, 1, 0, is_type="name") |
154 | | -store_op(loc, "STORE_NAME", 116, 1, 0, is_type="name") # Operand is in name list |
| 154 | +store_op(loc, "STORE_NAME", 116, 1, 0, is_type="name") |
155 | 155 | def_op(loc, "SWAP", 117, 0, 0) |
156 | 156 | varargs_op(loc, "UNPACK_EX", 118, 1, -1) # pushes 1 + (oparg & 0xFF) + (oparg >> 8) |
157 | 157 | varargs_op(loc, "UNPACK_SEQUENCE", 119, 0, -1) # unpacks TOS, arg is the count |
158 | 158 | def_op(loc, "YIELD_VALUE", 120, 1, 1) |
159 | 159 | def_op(loc, "RESUME", 128, 0, 0) |
160 | 160 |
|
161 | 161 | # Specialized opcodes (>128) |
162 | | -def_op(loc, "BINARY_OP_ADD_FLOAT", 129, 2, 1) |
163 | | -def_op(loc, "BINARY_OP_ADD_INT", 130, 2, 1) |
164 | | -def_op(loc, "BINARY_OP_ADD_UNICODE", 131, 2, 1) |
165 | | -def_op(loc, "BINARY_OP_EXTEND", 132, 2, 1) |
166 | | -def_op(loc, "BINARY_OP_MULTIPLY_FLOAT", 133, 2, 1) |
167 | | -def_op(loc, "BINARY_OP_MULTIPLY_INT", 134, 2, 1) |
168 | | -def_op(loc, "BINARY_OP_SUBSCR_DICT", 135, 2, 1) |
169 | | -def_op(loc, "BINARY_OP_SUBSCR_GETITEM", 136, 2, 0) |
170 | | -def_op(loc, "BINARY_OP_SUBSCR_LIST_INT", 137, 2, 1) |
171 | | -def_op(loc, "BINARY_OP_SUBSCR_LIST_SLICE", 138, 2, 1) |
172 | | -def_op(loc, "BINARY_OP_SUBSCR_STR_INT", 139, 2, 1) |
173 | | -def_op(loc, "BINARY_OP_SUBSCR_TUPLE_INT", 140, 2, 1) |
174 | | -def_op(loc, "BINARY_OP_SUBTRACT_FLOAT", 141, 2, 1) |
175 | | -def_op(loc, "BINARY_OP_SUBTRACT_INT", 142, 2, 1) |
| 162 | +binary_op(loc, "BINARY_OP_ADD_FLOAT", 129, 2, 1) |
| 163 | +binary_op(loc, "BINARY_OP_ADD_INT", 130, 2, 1) |
| 164 | +binary_op(loc, "BINARY_OP_ADD_UNICODE", 131, 2, 1) |
| 165 | +binary_op(loc, "BINARY_OP_EXTEND", 132, 2, 1) |
| 166 | +binary_op(loc, "BINARY_OP_MULTIPLY_FLOAT", 133, 2, 1) |
| 167 | +binary_op(loc, "BINARY_OP_MULTIPLY_INT", 134, 2, 1) |
| 168 | +binary_op(loc, "BINARY_OP_SUBSCR_DICT", 135, 2, 1) |
| 169 | +binary_op(loc, "BINARY_OP_SUBSCR_GETITEM", 136, 2, 0) |
| 170 | +binary_op(loc, "BINARY_OP_SUBSCR_LIST_INT", 137, 2, 1) |
| 171 | +binary_op(loc, "BINARY_OP_SUBSCR_LIST_SLICE", 138, 2, 1) |
| 172 | +binary_op(loc, "BINARY_OP_SUBSCR_STR_INT", 139, 2, 1) |
| 173 | +binary_op(loc, "BINARY_OP_SUBSCR_TUPLE_INT", 140, 2, 1) |
| 174 | +binary_op(loc, "BINARY_OP_SUBTRACT_FLOAT", 141, 2, 1) |
| 175 | +binary_op(loc, "BINARY_OP_SUBTRACT_INT", 142, 2, 1) |
176 | 176 | call_op(loc, "CALL_ALLOC_AND_ENTER_INIT", 143, -2, 0) # pops 2 + oparg |
177 | 177 | call_op(loc, "CALL_BOUND_METHOD_EXACT_ARGS", 144, -2, 0) # pops 2 + oparg |
178 | 178 | call_op(loc, "CALL_BOUND_METHOD_GENERAL", 145, -2, 0) # pops 2 + oparg |
|
196 | 196 | def_op(loc, "CALL_STR_1", 163, 3, 1) |
197 | 197 | def_op(loc, "CALL_TUPLE_1", 164, 3, 1) |
198 | 198 | def_op(loc, "CALL_TYPE_1", 165, 3, 1) |
199 | | -def_op(loc, "COMPARE_OP_FLOAT", 166, 2, 1) |
200 | | -def_op(loc, "COMPARE_OP_INT", 167, 2, 1) |
201 | | -def_op(loc, "COMPARE_OP_STR", 168, 2, 1) |
| 199 | +compare_op(loc, "COMPARE_OP_FLOAT", 166, 2, 1) |
| 200 | +compare_op(loc, "COMPARE_OP_INT", 167, 2, 1) |
| 201 | +compare_op(loc, "COMPARE_OP_STR", 168, 2, 1) |
202 | 202 | def_op(loc, "CONTAINS_OP_DICT", 169, 2, 1) |
203 | 203 | def_op(loc, "CONTAINS_OP_SET", 170, 2, 1) |
204 | | -def_op(loc, "FOR_ITER_GEN", 171, 2, 2) |
205 | | -def_op(loc, "FOR_ITER_LIST", 172, 2, 3) |
206 | | -def_op(loc, "FOR_ITER_RANGE", 173, 2, 3) |
207 | | -def_op(loc, "FOR_ITER_TUPLE", 174, 2, 3) |
208 | | -def_op(loc, "JUMP_BACKWARD_JIT", 175, 0, 0) |
209 | | -def_op(loc, "JUMP_BACKWARD_NO_JIT", 176, 0, 0) |
| 204 | +jrel_op(loc, "FOR_ITER_GEN", 171, 2, 2, conditional=True) |
| 205 | +jrel_op(loc, "FOR_ITER_LIST", 172, 2, 3, conditional=True) |
| 206 | +jrel_op(loc, "FOR_ITER_RANGE", 173, 2, 3, conditional=True) |
| 207 | +jrel_op(loc, "FOR_ITER_TUPLE", 174, 2, 3, conditional=True) |
| 208 | +jrel_op(loc, "JUMP_BACKWARD_JIT", 175, 0, 0, conditional=False) |
| 209 | +jrel_op(loc, "JUMP_BACKWARD_NO_JIT", 176, 0, 0, conditional=False) |
210 | 210 | def_op(loc, "LOAD_ATTR_CLASS", 177, 1, 1) # pushes 1 + (oparg & 1) |
211 | 211 | def_op(loc, "LOAD_ATTR_CLASS_WITH_METACLASS_CHECK", 178, 1, 1) # pushes 1 + (oparg & 1) |
212 | | -def_op(loc, "LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN", 179, 1, 1) |
| 212 | +name_op(loc, "LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN", 179, 1, 1) |
213 | 213 | def_op(loc, "LOAD_ATTR_INSTANCE_VALUE", 180, 1, 1) # pushes 1 + (oparg & 1) |
214 | 214 | def_op(loc, "LOAD_ATTR_METHOD_LAZY_DICT", 181, 1, 2) |
215 | 215 | def_op(loc, "LOAD_ATTR_METHOD_NO_DICT", 182, 1, 2) |
|
219 | 219 | def_op(loc, "LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES", 186, 1, 1) |
220 | 220 | def_op(loc, "LOAD_ATTR_PROPERTY", 187, 1, 0) |
221 | 221 | def_op(loc, "LOAD_ATTR_SLOT", 188, 1, 1) # pushes 1 + (oparg & 1) |
222 | | -def_op(loc, "LOAD_ATTR_WITH_HINT", 189, 1, 1) # pushes 1 + (oparg & 1) |
| 222 | +name_op(loc, "LOAD_ATTR_WITH_HINT", 189, 1, 1) # pushes 1 + (oparg & 1) |
223 | 223 | def_op(loc, "LOAD_GLOBAL_BUILTIN", 190, 0, 1) # pushes 1 + (oparg & 1) |
224 | 224 | def_op(loc, "LOAD_GLOBAL_MODULE", 191, 0, 1) # pushes 1 + (oparg & 1) |
225 | | -def_op(loc, "LOAD_SUPER_ATTR_ATTR", 192, 3, 1) |
226 | | -def_op(loc, "LOAD_SUPER_ATTR_METHOD", 193, 3, 2) |
| 225 | +name_op(loc, "LOAD_SUPER_ATTR_ATTR", 192, 3, 1) |
| 226 | +name_op(loc, "LOAD_SUPER_ATTR_METHOD", 193, 3, 2) |
227 | 227 | def_op(loc, "RESUME_CHECK", 194, 0, 0) |
228 | 228 | def_op(loc, "SEND_GEN", 195, 2, 1) |
229 | 229 | def_op(loc, "STORE_ATTR_INSTANCE_VALUE", 196, 2, 0) |
230 | 230 | def_op(loc, "STORE_ATTR_SLOT", 197, 2, 0) |
231 | | -def_op(loc, "STORE_ATTR_WITH_HINT", 198, 2, 0) |
| 231 | +store_op(loc, "STORE_ATTR_WITH_HINT", 198, 2, 0, is_type="name") |
232 | 232 | def_op(loc, "STORE_SUBSCR_DICT", 199, 3, 0) |
233 | 233 | def_op(loc, "STORE_SUBSCR_LIST_INT", 200, 3, 0) |
234 | 234 | def_op(loc, "TO_BOOL_ALWAYS_TRUE", 201, 1, 1) |
|
243 | 243 | def_op(loc, "INSTRUMENTED_END_FOR", 233, 3, 2) |
244 | 244 | def_op(loc, "INSTRUMENTED_POP_ITER", 234, 2, 0) |
245 | 245 | def_op(loc, "INSTRUMENTED_END_SEND", 235, 2, 1) |
246 | | -def_op(loc, "INSTRUMENTED_FOR_ITER", 236, 2, 3) |
| 246 | +jrel_op(loc, "INSTRUMENTED_FOR_ITER", 236, 2, 3, conditional=True) |
247 | 247 | def_op(loc, "INSTRUMENTED_INSTRUCTION", 237, 0, 0) |
248 | | -def_op(loc, "INSTRUMENTED_JUMP_FORWARD", 238, 0, 0) |
| 248 | +jrel_op(loc, "INSTRUMENTED_JUMP_FORWARD", 238, 0, 0, conditional=False) |
249 | 249 | def_op(loc, "INSTRUMENTED_NOT_TAKEN", 239, 0, 0) |
250 | | -def_op(loc, "INSTRUMENTED_POP_JUMP_IF_TRUE", 240, 1, 0) |
251 | | -def_op(loc, "INSTRUMENTED_POP_JUMP_IF_FALSE", 241, 1, 0) |
252 | | -def_op(loc, "INSTRUMENTED_POP_JUMP_IF_NONE", 242, 1, 0) |
253 | | -def_op(loc, "INSTRUMENTED_POP_JUMP_IF_NOT_NONE", 243, 1, 0) |
| 250 | +jrel_op(loc, "INSTRUMENTED_POP_JUMP_IF_TRUE", 240, 1, 0, conditional=True) |
| 251 | +jrel_op(loc, "INSTRUMENTED_POP_JUMP_IF_FALSE", 241, 1, 0, conditional=True) |
| 252 | +jrel_op(loc, "INSTRUMENTED_POP_JUMP_IF_NONE", 242, 1, 0, conditional=True) |
| 253 | +jrel_op(loc, "INSTRUMENTED_POP_JUMP_IF_NOT_NONE", 243, 1, 0, conditional=True) |
254 | 254 | def_op(loc, "INSTRUMENTED_RESUME", 244, 0, 0) |
255 | 255 | def_op(loc, "INSTRUMENTED_RETURN_VALUE", 245, 1, 1) |
256 | 256 | def_op(loc, "INSTRUMENTED_YIELD_VALUE", 246, 1, 1) |
257 | | -def_op(loc, "INSTRUMENTED_END_ASYNC_FOR", 247, 2, 0) |
258 | | -def_op(loc, "INSTRUMENTED_LOAD_SUPER_ATTR", 248, 3, 1) # pushes 1 + (oparg & 1) |
| 257 | +jrel_op(loc, "INSTRUMENTED_END_ASYNC_FOR", 247, 2, 0, conditional=True) |
| 258 | +name_op(loc, "INSTRUMENTED_LOAD_SUPER_ATTR", 248, 3, 1) # pushes 1 + (oparg & 1) |
259 | 259 | call_op(loc, "INSTRUMENTED_CALL", 249, -2, 1) |
260 | 260 | call_op(loc, "INSTRUMENTED_CALL_KW", 250, -3, 1) |
261 | 261 | def_op(loc, "INSTRUMENTED_CALL_FUNCTION_EX", 251, 4, 1) |
262 | | -def_op(loc, "INSTRUMENTED_JUMP_BACKWARD", 252, 0, 0) |
| 262 | +jrel_op(loc, "INSTRUMENTED_JUMP_BACKWARD", 252, 0, 0, conditional=False) |
263 | 263 | def_op(loc, "INSTRUMENTED_LINE", 253, 0, 0) |
264 | 264 | def_op(loc, "ENTER_EXECUTOR", 254, 0, 0) |
265 | 265 | def_op(loc, "TRACE_RECORD", 255, 0, 0) |
|
268 | 268 | jrel_op(loc, "JUMP_IF_FALSE", 258, 1, 1, conditional=True) |
269 | 269 | jrel_op(loc, "JUMP_IF_TRUE", 259, 1, 1, conditional=True) |
270 | 270 | jrel_op(loc, "JUMP_NO_INTERRUPT", 260, 0, 0, conditional=False) |
271 | | -def_op(loc, "LOAD_CLOSURE", 261, 0, 1) |
| 271 | +local_op(loc, "LOAD_CLOSURE", 261, 0, 1) |
272 | 272 | def_op(loc, "POP_BLOCK", 262, 0, 0) |
273 | 273 | def_op(loc, "SETUP_CLEANUP", 263, 0, 2) |
274 | 274 | def_op(loc, "SETUP_FINALLY", 264, 0, 1) |
|
278 | 278 | # ops >= 44 have args |
279 | 279 | HAVE_ARGUMENT = 44 |
280 | 280 |
|
281 | | -loc["hasarg"] = [44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 128, 237, 239, 241, 242, 243, 244, 245, 247, 248, 249, 250, 251, 253, 255, 257, 258, 259, 260, 261, 263, 264, 265, 266] |
282 | | -loc["hasexc"] = [263, 264, 265] |
283 | | -# loc["hasfree"] = [62, 90, 97, 111] |
284 | | -# loc["hasjabs"] = [] |
285 | | -# loc["hasjrel"] = [68, 70, 75, 76, 77, 100, 101, 102, 103, 106, 237, 248, 257, 258, 259, 260] |
286 | | -loc["hasjump"] = [68, 70, 75, 76, 77, 100, 101, 102, 103, 106, 237, 248, 257, 258, 259, 260] |
287 | | -# loc["haslocal"] = [63, 83, 84, 85, 86, 87, 88, 89, 112, 113, 114, 261, 266] |
288 | | -# loc["hasname"] = [61, 64, 65, 72, 73, 80, 91, 92, 93, 96, 110, 115, 116, 249] |
| 281 | +loc["hasarg"] = [44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 128, 143, 144, 145, 146, 147, 148, 149, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 198, 207, 208, 209, 236, 238, 240, 241, 242, 243, 244, 246, 247, 248, 249, 250, 252, 254, 255, 257, 258, 259, 260, 261, 263, 264, 265, 266] |
| 282 | +# hasconst table populated by const_op definitions |
| 283 | +# hasname table populated by name_op and store_op definitions |
| 284 | +# jrel table populated by jrel_op definitions |
| 285 | +loc["hasjabs"] = [] |
| 286 | +loc["hasjump"] = loc["hasjrel"] |
| 287 | +# hasfree table populated by free_op and store_op definitions |
| 288 | +# haslocal table populated by local_op and store_op definitions |
| 289 | +loc["hasexc"] = [263, 264, 265] |
289 | 290 |
|
290 | 291 | ### update formatting |
291 | 292 | import xdis.opcodes.opcode_313 as opcode_313 |
|
0 commit comments