|
19 | 19 |
|
20 | 20 | cmp_op = ('<', '<=', '==', '!=', '>', '>=') |
21 | 21 |
|
22 | | -def is_pseudo(op): |
23 | | - return op >= MIN_PSEUDO_OPCODE and op <= MAX_PSEUDO_OPCODE |
24 | | - |
25 | 22 | opmap = {} |
26 | 23 |
|
27 | | -# pseudo opcodes (used in the compiler) mapped to the values |
28 | | -# they can become in the actual code. |
29 | | -_pseudo_ops = {} |
30 | | - |
31 | 24 | def def_op(name, op): |
32 | 25 | opmap[name] = op |
33 | 26 |
|
34 | | -def pseudo_op(name, op, real_ops): |
35 | | - def_op(name, op) |
36 | | - _pseudo_ops[name] = real_ops |
37 | | - |
38 | | - |
39 | 27 | # Instruction opcodes for compiled code |
40 | 28 | # Blank lines correspond to available opcodes |
41 | 29 |
|
@@ -212,29 +200,27 @@ def pseudo_op(name, op, real_ops): |
212 | 200 | # 255 is reserved |
213 | 201 |
|
214 | 202 |
|
215 | | -MIN_PSEUDO_OPCODE = 256 |
216 | | - |
217 | | -pseudo_op('SETUP_FINALLY', 256, ['NOP']) |
218 | | -pseudo_op('SETUP_CLEANUP', 257, ['NOP']) |
219 | | -pseudo_op('SETUP_WITH', 258, ['NOP']) |
220 | | -pseudo_op('POP_BLOCK', 259, ['NOP']) |
| 203 | +# Pseudo ops are above 255: |
221 | 204 |
|
222 | | -pseudo_op('JUMP', 260, ['JUMP_FORWARD', 'JUMP_BACKWARD']) |
223 | | -pseudo_op('JUMP_NO_INTERRUPT', 261, ['JUMP_FORWARD', 'JUMP_BACKWARD_NO_INTERRUPT']) |
| 205 | +def_op('SETUP_FINALLY', 256) |
| 206 | +def_op('SETUP_CLEANUP', 257) |
| 207 | +def_op('SETUP_WITH', 258) |
| 208 | +def_op('POP_BLOCK', 259) |
224 | 209 |
|
225 | | -pseudo_op('LOAD_METHOD', 262, ['LOAD_ATTR']) |
226 | | -pseudo_op('LOAD_SUPER_METHOD', 263, ['LOAD_SUPER_ATTR']) |
227 | | -pseudo_op('LOAD_ZERO_SUPER_METHOD', 264, ['LOAD_SUPER_ATTR']) |
228 | | -pseudo_op('LOAD_ZERO_SUPER_ATTR', 265, ['LOAD_SUPER_ATTR']) |
| 210 | +def_op('JUMP', 260) |
| 211 | +def_op('JUMP_NO_INTERRUPT', 261) |
229 | 212 |
|
230 | | -pseudo_op('STORE_FAST_MAYBE_NULL', 266, ['STORE_FAST']) |
231 | | -pseudo_op('LOAD_CLOSURE', 267, ['LOAD_FAST']) |
| 213 | +def_op('LOAD_METHOD', 262) |
| 214 | +def_op('LOAD_SUPER_METHOD', 263) |
| 215 | +def_op('LOAD_ZERO_SUPER_METHOD', 264) |
| 216 | +def_op('LOAD_ZERO_SUPER_ATTR', 265) |
232 | 217 |
|
233 | | -MAX_PSEUDO_OPCODE = MIN_PSEUDO_OPCODE + len(_pseudo_ops) - 1 |
| 218 | +def_op('STORE_FAST_MAYBE_NULL', 266) |
| 219 | +def_op('LOAD_CLOSURE', 267) |
234 | 220 |
|
235 | | -del def_op, pseudo_op |
| 221 | +del def_op |
236 | 222 |
|
237 | | -opname = ['<%r>' % (op,) for op in range(MAX_PSEUDO_OPCODE + 1)] |
| 223 | +opname = ['<%r>' % (op,) for op in range(max(opmap.values()) + 1)] |
238 | 224 | for op, i in opmap.items(): |
239 | 225 | opname[i] = op |
240 | 226 |
|
|
0 commit comments