this repo has no description
1# Copyright (c) Facebook, Inc. and its affiliates. (http://www.facebook.com)
2from .opcode36 import opcode as opcode36
3from .opcodebase import Opcode
4
5opcode: Opcode = opcode36.copy()
6opcode.remove_op("STORE_ANNOTATION")
7opcode.name_op("LOAD_METHOD", 160)
8opcode.def_op("CALL_METHOD", 161)
9
10opcode.stack_effects.update(
11 # Updated stack effects
12 SETUP_WITH=lambda oparg, jmp=0: 6 if jmp else 1,
13 WITH_CLEANUP_START=2, # or 1, depending on TOS
14 WITH_CLEANUP_FINISH=-3,
15 POP_EXCEPT=-3,
16 END_FINALLY=-6,
17 FOR_ITER=lambda oparg, jmp=0: -1 if jmp > 0 else 1,
18 JUMP_IF_TRUE_OR_POP=lambda oparg, jmp=0: 0 if jmp else -1,
19 JUMP_IF_FALSE_OR_POP=lambda oparg, jmp=0: 0 if jmp else -1,
20 SETUP_EXCEPT=lambda oparg, jmp: 6 if jmp else 0,
21 SETUP_FINALLY=lambda oparg, jmp: 6 if jmp else 0,
22 SETUP_ASYNC_WITH=lambda oparg, jmp: (-1 + 6) if jmp else 0,
23 # New opcodes
24 CALL_METHOD=lambda oparg, jmp: -oparg - 1,
25 LOAD_METHOD=1,
26)