this repo has no description
at trunk 26 lines 959 B view raw
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)