Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
name_op(l, "DELETE_ATTR", 96, 1, 0) # ""
store_op(l, "STORE_GLOBAL", 97, 1, 0, is_type="name") # ""
name_op(l, "DELETE_GLOBAL", 98, 0, 0) # ""
nargs_op(l, "DUP_TOPX", 99, -1, 2) # number of items to duplicate
const_op(l, "LOAD_CONST", 100, 0, 1) # Operand is in const list
name_op(l, "LOAD_NAME", 101, 0, 1) # Operand is in name list
varargs_op(l, "BUILD_TUPLE", 102, -1, 1) # TOS is number of tuple items
varargs_op(l, "BUILD_LIST", 103, -1, 1) # TOS is number of list items
varargs_op(l, "BUILD_MAP", 104, 0, 1) # TOS is number of kwarg items. Always zero for now
name_op(l, "LOAD_ATTR", 105, 1, 1) # Operand is in name list
compare_op(l, "COMPARE_OP", 106, 2, 1) # Comparison operator
name_op(l, "IMPORT_NAME", 107, 2, 2) # Imports TOS and TOS1; module pushed
name_op(l, "IMPORT_FROM", 108, 0, 1) # Operand is in name list
jrel_op(l, "JUMP_FORWARD", 110, 0, 0, fallthrough=False)
# Number of bytes to skip
jrel_op(l, "JUMP_IF_FALSE", 111, 1, 1, True) # ""
jrel_op(l, "JUMP_IF_TRUE", 112, 1, 1, True) # ""
jabs_op(l, "JUMP_ABSOLUTE", 113, 0, 0, fallthrough=False)
# Target byte offset from beginning of code
name_op(l, "LOAD_GLOBAL", 116, 0, 1) # Operand is in name list
jabs_op(l, "CONTINUE_LOOP", 119, 0, 0, fallthrough=False) # Target address
jrel_op(l, "SETUP_LOOP", 120, 0, 0, conditional=True) # Distance to target address
jrel_op(l, "SETUP_EXCEPT", 121, 0, 3, conditional=True) # ""
jrel_op(l, "SETUP_FINALLY", 122, 0, 3, conditional=True) # ""
local_op(l, "LOAD_FAST", 124, 0, 1) # Local variable number
store_op(l, "STORE_FAST", 125, 1, 0, is_type="local") # Local variable number
l = locals()
init_opdata(l, opcode_33, version, is_pypy=True)
## FIXME: DRY common PYPY opcode additions
# PyPy only
# ----------
name_op(l, "LOOKUP_METHOD", 201, 1, 2)
nargs_op(l, "CALL_METHOD", 202, -1, 1)
l["hasvargs"].append(202)
# Used only in single-mode compilation list-comprehension generators
varargs_op(l, "BUILD_LIST_FROM_ARG", 203)
# Used only in assert statements
jrel_op(l, "JUMP_IF_NOT_DEBUG", 204, conditional=True)
# There are no opcodes to remove or change.
# If there were, they'd be listed below.
# FIXME remove (fix uncompyle6)
update_pj3(globals(), l)
finalize_opcodes(l)
# block exits. Handle stack special
def_op(l, 'RETURN_VALUE', 83, 1, 0, fallthrough=False)
def_op(l, 'IMPORT_STAR', 84, 1, 0)
def_op(l, 'YIELD_VALUE', 86, 1, 1)
def_op(l, 'POP_BLOCK', 87, 0, 0)
def_op(l, 'END_FINALLY', 88, 1, 0)
def_op(l, 'POP_EXCEPT', 89, 0, 0)
HAVE_ARGUMENT = 90 # Opcodes from here have an argument:
store_op(l, 'STORE_NAME', 90, 1, 0, is_type="name") # Operand is in name list
name_op(l, 'DELETE_NAME', 91, 0, 0) # ""
varargs_op(l, 'UNPACK_SEQUENCE', 92, 0, -1) # unpacks TOS, arg is the count
jrel_op(l, 'FOR_ITER', 93, 0, 1)
varargs_op(l, 'UNPACK_EX', 94, 0, 0) # assignment with a starred target; arg is count
store_op(l, 'STORE_ATTR', 95, 2, 0, is_type="name") # Operand is in name list
name_op(l, 'DELETE_ATTR', 96, 1, 0) # ""
store_op(l, 'STORE_GLOBAL', 97, 1, 0, is_type="name") # ""
name_op(l, 'DELETE_GLOBAL', 98, 0, 0) # ""
# Python 2's DUP_TOPX is gone starting in Python 3.2
const_op(l, 'LOAD_CONST', 100, 0, 1) # Operand is in const list
name_op(l, 'LOAD_NAME', 101, 0, 1) # Operand is in name list
varargs_op(l, 'BUILD_TUPLE', 102, -1, 1) # TOS is count of tuple items
varargs_op(l, 'BUILD_LIST', 103, -1, 1) # TOS is count of list items
varargs_op(l, 'BUILD_SET', 104, -1, 1) # TOS is count of set items
def_op(l, 'BUILD_MAP', 105, 0, 1) # argument is dictionary count to be pushed
name_op(l, 'LOAD_ATTR', 106, 1, 1) # Operand is in name list
## FIXME: DRY common PYPY opcode additions
# PyPy only
# ----------
def_op(l, "FORMAT_VALUE", 155)
def_op(l, "BUILD_STRING", 157)
name_op(l, "LOOKUP_METHOD", 201, 1, 2)
nargs_op(l, "CALL_METHOD", 202, -1, 1)
l["hasvargs"].append(202)
# Used only in single-mode compilation list-comprehension generators
varargs_op(l, "BUILD_LIST_FROM_ARG", 203)
# Used only in assert statements
jrel_op(l, "JUMP_IF_NOT_DEBUG", 204, conditional=True)
# There are no opcodes to remove or change.
# If there were, they'd be listed below.
# FIXME remove (fix uncompyle6)
update_pj3(globals(), l)
finalize_opcodes(l)
# bit (0-3) is set. They are followed by the code object and the
# qualified name of the function.
# These are removed since 3.6...
# and STORE_ANNOTATION introduced in 3.6!
rm_op(l, "STORE_ANNOTATION", 127)
# These have a changed stack effect since 3.6
# OP NAME OPCODE POP PUSH
#---------------------------------------------------------------
def_op(l, "WITH_CLEANUP_START", 81, 0, 2)
def_op(l, "WITH_CLEANUP_FINISH", 82, 3, 0)
def_op(l, "END_FINALLY", 88, 6, 0)
def_op(l, "POP_EXCEPT", 89, 3, 0) # Pops last 3 values
jrel_op(l, "SETUP_WITH", 143, 0, 6)
jrel_op(l, "SETUP_ASYNC_WITH", 154, 0, 5)
# These are new since Python 3.7
name_op(l, "LOAD_METHOD", 160, 0, 1)
nargs_op(l, "CALL_METHOD", 161, -2, 1)
format_MAKE_FUNCTION_flags = opcode_36.format_MAKE_FUNCTION_flags
format_value_flags = opcode_36.format_value_flags
opcode_arg_fmt = {
"BUILD_MAP_UNPACK_WITH_CALL": opcode_36.format_BUILD_MAP_UNPACK_WITH_CALL,
"CALL_FUNCTION": opcode_36.format_CALL_FUNCTION,
"CALL_FUNCTION_KW": opcode_36.format_CALL_FUNCTION_KW,
"CALL_FUNCTION_EX": opcode_36.format_CALL_FUNCTION_EX,
"CALL_METHOD": opcode_36.format_CALL_FUNCTION,
"MAKE_FUNCTION": format_MAKE_FUNCTION_flags,
"FORMAT_VALUE": format_value_flags,
def_op(l, "LIST_APPEND", 94, 2, 1) # Calls list.append(TOS[-i], TOS).
# Used to implement list comprehensions.
varargs_op(l, 'BUILD_SET', 104, -1, 1) # TOS is count of set items
def_op(l, "BUILD_MAP", 105, 0, 1) # count is in argument
name_op(l, "LOAD_ATTR", 106, 1, 1) # Operand is in name list
compare_op(l, "COMPARE_OP", 107)
name_op(l, "IMPORT_NAME", 108, 2, 1) # Index in name list
name_op(l, "IMPORT_FROM", 109, 0, 1)
jabs_op(l, "JUMP_IF_FALSE_OR_POP", 111) # Target byte offset from beginning of code
jabs_op(l, "JUMP_IF_TRUE_OR_POP", 112) # ""
jabs_op(l, "POP_JUMP_IF_FALSE", 114, 2, 1, conditional=True) # ""
jabs_op(l, "POP_JUMP_IF_TRUE", 115, 2, 1, conditional=True) # ""
jrel_op(l, "SETUP_WITH", 143, 0, 4)
def_op(l, "EXTENDED_ARG", 145)
def_op(l, "SET_ADD", 146, 1, 0) # Calls set.add(TOS1[-i], TOS).
# Used to implement set comprehensions.
def_op(l, "MAP_ADD", 147, 3, 1) # Calls dict.setitem(TOS1[-i], TOS, TOS1)
# Used to implement dict comprehensions.
update_pj3(globals(), l)
opcode_arg_fmt = {
"MAKE_FUNCTION": format_MAKE_FUNCTION_default_argc,
"EXTENDED_ARG": format_extended_arg,
"CALL_FUNCTION": format_CALL_FUNCTION_pos_name_encoded,
}
finalize_opcodes(l)
rm_op(l, 'LIST_APPEND', 145)
rm_op(l, 'MAP_ADD', 147)
# These are are in 3.0 but are not in 3.1 or they have
# different opcode numbers. Note: As a result of opcode value
# changes, these have to be applied *after* removing ops (with
# the same name).
# OP NAME OPCODE POP PUSH
#--------------------------------------------
def_op(l, 'SET_ADD', 17, 2, 0) # Calls set.add(TOS1[-i], TOS).
# Used to implement set comprehensions.
def_op(l, 'LIST_APPEND', 18, 2, 0) # Calls list.append(TOS1, TOS).
# Used to implement list comprehensions.
jrel_op(l, 'JUMP_IF_FALSE', 111, 1, 1)
jrel_op(l, 'JUMP_IF_TRUE', 112, 1, 1)
# Yes, pj2 not pj3 - Python 3.0 is more like 2.7 here with its
# JUMP_IF rather than POP_JUMP_IF.
update_pj2(globals(), l)
opcode_arg_fmt = {
'MAKE_FUNCTION': format_MAKE_FUNCTION_arg,
'EXTENDED_ARG': format_extended_arg,
}
finalize_opcodes(l)
init_opdata(l, opcode_27, version, is_pypy=True)
# FIXME: DRY common PYPY opcode additions
# PyPy only
# ----------
name_op(l, 'LOOKUP_METHOD', 201, 1, 2)
nargs_op(l, 'CALL_METHOD', 202, -1, 1)
l['hasnargs'].append(202)
# Used only in single-mode compilation list-comprehension generators
def_op(l, 'BUILD_LIST_FROM_ARG', 203)
# Used only in assert statements
jrel_op(l, 'JUMP_IF_NOT_DEBUG', 204, conditional=True)
# PyPy 2.7.13 (and 3.6.1) start to introduce LOAD_REVDB_VAR
import sys
if sys.version_info[:3] >= (2, 7, 13) and sys.version_info[4] >= 42:
def_op(l, 'LOAD_REVDB_VAR', 205)
# There are no opcodes to remove or change.
# If there were, they'd be listed below.
# FIXME remove (fix uncompyle6)
update_pj3(globals(), l)
finalize_opcodes(l)
def_op(l, "LOAD_LOCALS", 82, 0, 1)
def_op(l, "RETURN_VALUE", 83, 1, 0, fallthrough=False)
def_op(l, "IMPORT_STAR", 84, 1, 0)
def_op(l, "EXEC_STMT", 85, 3, 0)
def_op(l, "YIELD_VALUE", 86, 1, 1)
def_op(l, "POP_BLOCK", 87, 0, 0)
def_op(l, "END_FINALLY", 88, 1, 0)
def_op(l, "BUILD_CLASS", 89, 2, 0)
HAVE_ARGUMENT = 90 # Opcodes from here have an argument:
store_op(l, "STORE_NAME", 90, 1, 0, is_type="name") # Operand is in name list
name_op(l, "DELETE_NAME", 91, 0, 0) # ""
varargs_op(l, "UNPACK_SEQUENCE", 92, -1, 1) # TOS is number of tuple items
jrel_op(l, "FOR_ITER", 93, 0, 1) # TOS is read
store_op(l, "STORE_ATTR", 95, 2, 0, is_type="name") # Operand is in name list
name_op(l, "DELETE_ATTR", 96, 1, 0) # ""
store_op(l, "STORE_GLOBAL", 97, 1, 0, is_type="name") # ""
name_op(l, "DELETE_GLOBAL", 98, 0, 0) # ""
nargs_op(l, "DUP_TOPX", 99, -1, 2) # number of items to duplicate
const_op(l, "LOAD_CONST", 100, 0, 1) # Operand is in const list
name_op(l, "LOAD_NAME", 101, 0, 1) # Operand is in name list
varargs_op(l, "BUILD_TUPLE", 102, -1, 1) # TOS is number of tuple items
varargs_op(l, "BUILD_LIST", 103, -1, 1) # TOS is number of list items
varargs_op(l, "BUILD_MAP", 104, 0, 1) # TOS is number of kwarg items. Always zero for now
name_op(l, "LOAD_ATTR", 105, 1, 1) # Operand is in name list
compare_op(l, "COMPARE_OP", 106, 2, 1) # Comparison operator
name_op(l, "IMPORT_NAME", 107, 2, 2) # Imports TOS and TOS1; module pushed
name_op(l, "IMPORT_FROM", 108, 0, 1) # Operand is in name list
nargs_op(l, "CALL_FUNCTION_KW", 141, 9, 1) # #args + (#kwargs << 8)
nargs_op(l, "CALL_FUNCTION_VAR_KW", 142, 9, 1) # #args + (#kwargs << 8)
# PyPy only
# ----------
name_op(l, "LOOKUP_METHOD", 201, 1, 2)
nargs_op(l, "CALL_METHOD", 202, -1, 1)
l["hasvargs"].append(202)
# Used only in single-mode compilation list-comprehension generators
varargs_op(l, "BUILD_LIST_FROM_ARG", 203)
# Used only in assert statements
jrel_op(l, "JUMP_IF_NOT_DEBUG", 204, conditional=True)
# PyPy 3.6.1 (and 2.7.13) start to introduce LOAD_REVDB_VAR
import sys
if sys.version_info[:3] >= (3, 6, 1):
def_op(l, "LOAD_REVDB_VAR", 205)
# FIXME remove (fix uncompyle6)
update_pj3(globals(), l)
opcode_arg_fmt = {
"MAKE_FUNCTION": format_MAKE_FUNCTION_flags,
'CALL_FUNCTION': format_CALL_FUNCTION_pos_name_encoded,
"EXTENDED_ARG": format_extended_arg,
}