mirror of https://github.com/python/cpython
bpo-46329: Change calling sequence (again) (GH-31373)
* Change calling sequence: Add PUSH_NULL. Merge PRECALL_FUNCTION and PRECALL_METHOD into PRECALL.
This commit is contained in:
parent
e2c28616ce
commit
cf345e945f
|
@ -410,7 +410,7 @@ CPython bytecode changes
|
||||||
|
|
||||||
* Replaced the three call instructions: :opcode:`CALL_FUNCTION`,
|
* Replaced the three call instructions: :opcode:`CALL_FUNCTION`,
|
||||||
:opcode:`CALL_FUNCTION_KW` and :opcode:`CALL_METHOD` with
|
:opcode:`CALL_FUNCTION_KW` and :opcode:`CALL_METHOD` with
|
||||||
:opcode:`PRECALL_FUNCTION`, :opcode:`PRECALL_METHOD`, :opcode:`CALL`,
|
:opcode:`PUSH_NULL`, :opcode:`PRECALL`, :opcode:`CALL`,
|
||||||
and :opcode:`KW_NAMES`.
|
and :opcode:`KW_NAMES`.
|
||||||
This decouples the argument shifting for methods from the handling of
|
This decouples the argument shifting for methods from the handling of
|
||||||
keyword arguments and allows better specialization of calls.
|
keyword arguments and allows better specialization of calls.
|
||||||
|
|
|
@ -8,6 +8,7 @@ extern "C" {
|
||||||
|
|
||||||
/* Instruction opcodes for compiled code */
|
/* Instruction opcodes for compiled code */
|
||||||
#define POP_TOP 1
|
#define POP_TOP 1
|
||||||
|
#define PUSH_NULL 2
|
||||||
#define NOP 9
|
#define NOP 9
|
||||||
#define UNARY_POSITIVE 10
|
#define UNARY_POSITIVE 10
|
||||||
#define UNARY_NEGATIVE 11
|
#define UNARY_NEGATIVE 11
|
||||||
|
@ -109,75 +110,74 @@ extern "C" {
|
||||||
#define SET_UPDATE 163
|
#define SET_UPDATE 163
|
||||||
#define DICT_MERGE 164
|
#define DICT_MERGE 164
|
||||||
#define DICT_UPDATE 165
|
#define DICT_UPDATE 165
|
||||||
#define PRECALL_FUNCTION 167
|
#define PRECALL 166
|
||||||
#define PRECALL_METHOD 168
|
|
||||||
#define CALL 171
|
#define CALL 171
|
||||||
#define KW_NAMES 172
|
#define KW_NAMES 172
|
||||||
#define BINARY_OP_ADAPTIVE 2
|
#define BINARY_OP_ADAPTIVE 3
|
||||||
#define BINARY_OP_ADD_INT 3
|
#define BINARY_OP_ADD_INT 4
|
||||||
#define BINARY_OP_ADD_FLOAT 4
|
#define BINARY_OP_ADD_FLOAT 5
|
||||||
#define BINARY_OP_ADD_UNICODE 5
|
#define BINARY_OP_ADD_UNICODE 6
|
||||||
#define BINARY_OP_INPLACE_ADD_UNICODE 6
|
#define BINARY_OP_INPLACE_ADD_UNICODE 7
|
||||||
#define BINARY_OP_MULTIPLY_INT 7
|
#define BINARY_OP_MULTIPLY_INT 8
|
||||||
#define BINARY_OP_MULTIPLY_FLOAT 8
|
#define BINARY_OP_MULTIPLY_FLOAT 13
|
||||||
#define BINARY_OP_SUBTRACT_INT 13
|
#define BINARY_OP_SUBTRACT_INT 14
|
||||||
#define BINARY_OP_SUBTRACT_FLOAT 14
|
#define BINARY_OP_SUBTRACT_FLOAT 16
|
||||||
#define COMPARE_OP_ADAPTIVE 16
|
#define COMPARE_OP_ADAPTIVE 17
|
||||||
#define COMPARE_OP_FLOAT_JUMP 17
|
#define COMPARE_OP_FLOAT_JUMP 18
|
||||||
#define COMPARE_OP_INT_JUMP 18
|
#define COMPARE_OP_INT_JUMP 19
|
||||||
#define COMPARE_OP_STR_JUMP 19
|
#define COMPARE_OP_STR_JUMP 20
|
||||||
#define BINARY_SUBSCR_ADAPTIVE 20
|
#define BINARY_SUBSCR_ADAPTIVE 21
|
||||||
#define BINARY_SUBSCR_GETITEM 21
|
#define BINARY_SUBSCR_GETITEM 22
|
||||||
#define BINARY_SUBSCR_LIST_INT 22
|
#define BINARY_SUBSCR_LIST_INT 23
|
||||||
#define BINARY_SUBSCR_TUPLE_INT 23
|
#define BINARY_SUBSCR_TUPLE_INT 24
|
||||||
#define BINARY_SUBSCR_DICT 24
|
#define BINARY_SUBSCR_DICT 26
|
||||||
#define STORE_SUBSCR_ADAPTIVE 26
|
#define STORE_SUBSCR_ADAPTIVE 27
|
||||||
#define STORE_SUBSCR_LIST_INT 27
|
#define STORE_SUBSCR_LIST_INT 28
|
||||||
#define STORE_SUBSCR_DICT 28
|
#define STORE_SUBSCR_DICT 29
|
||||||
#define CALL_ADAPTIVE 29
|
#define CALL_ADAPTIVE 34
|
||||||
#define CALL_BUILTIN_CLASS 34
|
#define CALL_BUILTIN_CLASS 36
|
||||||
#define CALL_NO_KW_BUILTIN_O 36
|
#define CALL_NO_KW_BUILTIN_O 37
|
||||||
#define CALL_NO_KW_BUILTIN_FAST 37
|
#define CALL_NO_KW_BUILTIN_FAST 38
|
||||||
#define CALL_BUILTIN_FAST_WITH_KEYWORDS 38
|
#define CALL_BUILTIN_FAST_WITH_KEYWORDS 39
|
||||||
#define CALL_NO_KW_LEN 39
|
#define CALL_NO_KW_LEN 40
|
||||||
#define CALL_NO_KW_ISINSTANCE 40
|
#define CALL_NO_KW_ISINSTANCE 41
|
||||||
#define CALL_PY_EXACT_ARGS 41
|
#define CALL_PY_EXACT_ARGS 42
|
||||||
#define CALL_PY_WITH_DEFAULTS 42
|
#define CALL_PY_WITH_DEFAULTS 43
|
||||||
#define CALL_NO_KW_LIST_APPEND 43
|
#define CALL_NO_KW_LIST_APPEND 44
|
||||||
#define CALL_NO_KW_METHOD_DESCRIPTOR_O 44
|
#define CALL_NO_KW_METHOD_DESCRIPTOR_O 45
|
||||||
#define CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 45
|
#define CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 46
|
||||||
#define CALL_NO_KW_STR_1 46
|
#define CALL_NO_KW_STR_1 47
|
||||||
#define CALL_NO_KW_TUPLE_1 47
|
#define CALL_NO_KW_TUPLE_1 48
|
||||||
#define CALL_NO_KW_TYPE_1 48
|
#define CALL_NO_KW_TYPE_1 55
|
||||||
#define CALL_NO_KW_METHOD_DESCRIPTOR_FAST 55
|
#define CALL_NO_KW_METHOD_DESCRIPTOR_FAST 56
|
||||||
#define JUMP_ABSOLUTE_QUICK 56
|
#define JUMP_ABSOLUTE_QUICK 57
|
||||||
#define LOAD_ATTR_ADAPTIVE 57
|
#define LOAD_ATTR_ADAPTIVE 58
|
||||||
#define LOAD_ATTR_INSTANCE_VALUE 58
|
#define LOAD_ATTR_INSTANCE_VALUE 59
|
||||||
#define LOAD_ATTR_WITH_HINT 59
|
#define LOAD_ATTR_WITH_HINT 62
|
||||||
#define LOAD_ATTR_SLOT 62
|
#define LOAD_ATTR_SLOT 63
|
||||||
#define LOAD_ATTR_MODULE 63
|
#define LOAD_ATTR_MODULE 64
|
||||||
#define LOAD_GLOBAL_ADAPTIVE 64
|
#define LOAD_GLOBAL_ADAPTIVE 65
|
||||||
#define LOAD_GLOBAL_MODULE 65
|
#define LOAD_GLOBAL_MODULE 66
|
||||||
#define LOAD_GLOBAL_BUILTIN 66
|
#define LOAD_GLOBAL_BUILTIN 67
|
||||||
#define LOAD_METHOD_ADAPTIVE 67
|
#define LOAD_METHOD_ADAPTIVE 72
|
||||||
#define LOAD_METHOD_CACHED 72
|
#define LOAD_METHOD_CACHED 76
|
||||||
#define LOAD_METHOD_CLASS 76
|
#define LOAD_METHOD_CLASS 77
|
||||||
#define LOAD_METHOD_MODULE 77
|
#define LOAD_METHOD_MODULE 78
|
||||||
#define LOAD_METHOD_NO_DICT 78
|
#define LOAD_METHOD_NO_DICT 79
|
||||||
#define RESUME_QUICK 79
|
#define RESUME_QUICK 80
|
||||||
#define STORE_ATTR_ADAPTIVE 80
|
#define STORE_ATTR_ADAPTIVE 81
|
||||||
#define STORE_ATTR_INSTANCE_VALUE 81
|
#define STORE_ATTR_INSTANCE_VALUE 131
|
||||||
#define STORE_ATTR_SLOT 131
|
#define STORE_ATTR_SLOT 140
|
||||||
#define STORE_ATTR_WITH_HINT 140
|
#define STORE_ATTR_WITH_HINT 141
|
||||||
#define UNPACK_SEQUENCE_ADAPTIVE 141
|
#define UNPACK_SEQUENCE_ADAPTIVE 143
|
||||||
#define UNPACK_SEQUENCE_LIST 143
|
#define UNPACK_SEQUENCE_LIST 150
|
||||||
#define UNPACK_SEQUENCE_TUPLE 150
|
#define UNPACK_SEQUENCE_TUPLE 153
|
||||||
#define UNPACK_SEQUENCE_TWO_TUPLE 153
|
#define UNPACK_SEQUENCE_TWO_TUPLE 154
|
||||||
#define LOAD_FAST__LOAD_FAST 154
|
#define LOAD_FAST__LOAD_FAST 158
|
||||||
#define STORE_FAST__LOAD_FAST 158
|
#define STORE_FAST__LOAD_FAST 159
|
||||||
#define LOAD_FAST__LOAD_CONST 159
|
#define LOAD_FAST__LOAD_CONST 161
|
||||||
#define LOAD_CONST__LOAD_FAST 161
|
#define LOAD_CONST__LOAD_FAST 167
|
||||||
#define STORE_FAST__STORE_FAST 166
|
#define STORE_FAST__STORE_FAST 168
|
||||||
#define DO_TRACING 255
|
#define DO_TRACING 255
|
||||||
#ifdef NEED_OPCODE_JUMP_TABLES
|
#ifdef NEED_OPCODE_JUMP_TABLES
|
||||||
static uint32_t _PyOpcode_RelativeJump[8] = {
|
static uint32_t _PyOpcode_RelativeJump[8] = {
|
||||||
|
|
|
@ -385,6 +385,7 @@ _code_type = type(_write_atomic.__code__)
|
||||||
# Python 3.11a5 3477 (Replace DUP_TOP/DUP_TOP_TWO with COPY and
|
# Python 3.11a5 3477 (Replace DUP_TOP/DUP_TOP_TWO with COPY and
|
||||||
# ROT_TWO/ROT_THREE/ROT_FOUR/ROT_N with SWAP)
|
# ROT_TWO/ROT_THREE/ROT_FOUR/ROT_N with SWAP)
|
||||||
# Python 3.11a5 3478 (New CALL opcodes)
|
# Python 3.11a5 3478 (New CALL opcodes)
|
||||||
|
# Python 3.11a5 3479 (Add PUSH_NULL opcode)
|
||||||
|
|
||||||
# Python 3.12 will start with magic number 3500
|
# Python 3.12 will start with magic number 3500
|
||||||
|
|
||||||
|
@ -402,7 +403,7 @@ _code_type = type(_write_atomic.__code__)
|
||||||
# Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array
|
# Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array
|
||||||
# in PC/launcher.c must also be updated.
|
# in PC/launcher.c must also be updated.
|
||||||
|
|
||||||
MAGIC_NUMBER = (3478).to_bytes(2, 'little') + b'\r\n'
|
MAGIC_NUMBER = (3479).to_bytes(2, 'little') + b'\r\n'
|
||||||
_RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c
|
_RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c
|
||||||
|
|
||||||
_PYCACHE = '__pycache__'
|
_PYCACHE = '__pycache__'
|
||||||
|
|
|
@ -55,6 +55,7 @@ def jabs_op(name, op):
|
||||||
# Blank lines correspond to available opcodes
|
# Blank lines correspond to available opcodes
|
||||||
|
|
||||||
def_op('POP_TOP', 1)
|
def_op('POP_TOP', 1)
|
||||||
|
def_op('PUSH_NULL', 2)
|
||||||
|
|
||||||
def_op('NOP', 9)
|
def_op('NOP', 9)
|
||||||
def_op('UNARY_POSITIVE', 10)
|
def_op('UNARY_POSITIVE', 10)
|
||||||
|
@ -187,9 +188,7 @@ def_op('LIST_EXTEND', 162)
|
||||||
def_op('SET_UPDATE', 163)
|
def_op('SET_UPDATE', 163)
|
||||||
def_op('DICT_MERGE', 164)
|
def_op('DICT_MERGE', 164)
|
||||||
def_op('DICT_UPDATE', 165)
|
def_op('DICT_UPDATE', 165)
|
||||||
|
def_op('PRECALL', 166)
|
||||||
def_op('PRECALL_FUNCTION', 167)
|
|
||||||
def_op('PRECALL_METHOD', 168)
|
|
||||||
|
|
||||||
def_op('CALL', 171)
|
def_op('CALL', 171)
|
||||||
def_op('KW_NAMES', 172)
|
def_op('KW_NAMES', 172)
|
||||||
|
|
|
@ -838,7 +838,7 @@ if 1:
|
||||||
instructions = [opcode.opname for opcode in opcodes]
|
instructions = [opcode.opname for opcode in opcodes]
|
||||||
self.assertNotIn('LOAD_METHOD', instructions)
|
self.assertNotIn('LOAD_METHOD', instructions)
|
||||||
self.assertIn('LOAD_ATTR', instructions)
|
self.assertIn('LOAD_ATTR', instructions)
|
||||||
self.assertIn('PRECALL_FUNCTION', instructions)
|
self.assertIn('PRECALL', instructions)
|
||||||
|
|
||||||
def test_lineno_procedure_call(self):
|
def test_lineno_procedure_call(self):
|
||||||
def call():
|
def call():
|
||||||
|
|
|
@ -105,9 +105,10 @@ def _f(a):
|
||||||
dis_f = """\
|
dis_f = """\
|
||||||
%3d RESUME 0
|
%3d RESUME 0
|
||||||
|
|
||||||
%3d LOAD_GLOBAL 0 (print)
|
%3d PUSH_NULL
|
||||||
|
LOAD_GLOBAL 0 (print)
|
||||||
LOAD_FAST 0 (a)
|
LOAD_FAST 0 (a)
|
||||||
PRECALL_FUNCTION 1
|
PRECALL 1
|
||||||
CALL 0
|
CALL 0
|
||||||
POP_TOP
|
POP_TOP
|
||||||
|
|
||||||
|
@ -120,9 +121,10 @@ dis_f = """\
|
||||||
|
|
||||||
dis_f_co_code = """\
|
dis_f_co_code = """\
|
||||||
RESUME 0
|
RESUME 0
|
||||||
|
PUSH_NULL
|
||||||
LOAD_GLOBAL 0
|
LOAD_GLOBAL 0
|
||||||
LOAD_FAST 0
|
LOAD_FAST 0
|
||||||
PRECALL_FUNCTION 1
|
PRECALL 1
|
||||||
CALL 0
|
CALL 0
|
||||||
POP_TOP
|
POP_TOP
|
||||||
LOAD_CONST 1
|
LOAD_CONST 1
|
||||||
|
@ -138,18 +140,19 @@ def bug708901():
|
||||||
dis_bug708901 = """\
|
dis_bug708901 = """\
|
||||||
%3d RESUME 0
|
%3d RESUME 0
|
||||||
|
|
||||||
%3d LOAD_GLOBAL 0 (range)
|
%3d PUSH_NULL
|
||||||
|
LOAD_GLOBAL 0 (range)
|
||||||
LOAD_CONST 1 (1)
|
LOAD_CONST 1 (1)
|
||||||
|
|
||||||
%3d LOAD_CONST 2 (10)
|
%3d LOAD_CONST 2 (10)
|
||||||
|
|
||||||
%3d PRECALL_FUNCTION 2
|
%3d PRECALL 2
|
||||||
CALL 0
|
CALL 0
|
||||||
GET_ITER
|
GET_ITER
|
||||||
>> FOR_ITER 2 (to 20)
|
>> FOR_ITER 2 (to 22)
|
||||||
STORE_FAST 0 (res)
|
STORE_FAST 0 (res)
|
||||||
|
|
||||||
%3d JUMP_ABSOLUTE 7 (to 14)
|
%3d JUMP_ABSOLUTE 8 (to 16)
|
||||||
|
|
||||||
%3d >> LOAD_CONST 0 (None)
|
%3d >> LOAD_CONST 0 (None)
|
||||||
RETURN_VALUE
|
RETURN_VALUE
|
||||||
|
@ -174,13 +177,13 @@ dis_bug1333982 = """\
|
||||||
MAKE_FUNCTION 0
|
MAKE_FUNCTION 0
|
||||||
LOAD_FAST 0 (x)
|
LOAD_FAST 0 (x)
|
||||||
GET_ITER
|
GET_ITER
|
||||||
PRECALL_FUNCTION 1
|
PRECALL 0
|
||||||
CALL 0
|
CALL 0
|
||||||
|
|
||||||
%3d LOAD_CONST 3 (1)
|
%3d LOAD_CONST 3 (1)
|
||||||
|
|
||||||
%3d BINARY_OP 0 (+)
|
%3d BINARY_OP 0 (+)
|
||||||
PRECALL_FUNCTION 1
|
PRECALL 0
|
||||||
CALL 0
|
CALL 0
|
||||||
RAISE_VARARGS 1
|
RAISE_VARARGS 1
|
||||||
""" % (bug1333982.__code__.co_firstlineno,
|
""" % (bug1333982.__code__.co_firstlineno,
|
||||||
|
@ -312,9 +315,10 @@ dis_annot_stmt_str = """\
|
||||||
LOAD_CONST 1 ('x')
|
LOAD_CONST 1 ('x')
|
||||||
STORE_SUBSCR
|
STORE_SUBSCR
|
||||||
|
|
||||||
3 LOAD_NAME 3 (fun)
|
3 PUSH_NULL
|
||||||
|
LOAD_NAME 3 (fun)
|
||||||
LOAD_CONST 0 (1)
|
LOAD_CONST 0 (1)
|
||||||
PRECALL_FUNCTION 1
|
PRECALL 1
|
||||||
CALL 0
|
CALL 0
|
||||||
LOAD_NAME 2 (__annotations__)
|
LOAD_NAME 2 (__annotations__)
|
||||||
LOAD_CONST 2 ('y')
|
LOAD_CONST 2 ('y')
|
||||||
|
@ -322,9 +326,10 @@ dis_annot_stmt_str = """\
|
||||||
|
|
||||||
4 LOAD_CONST 0 (1)
|
4 LOAD_CONST 0 (1)
|
||||||
LOAD_NAME 4 (lst)
|
LOAD_NAME 4 (lst)
|
||||||
|
PUSH_NULL
|
||||||
LOAD_NAME 3 (fun)
|
LOAD_NAME 3 (fun)
|
||||||
LOAD_CONST 3 (0)
|
LOAD_CONST 3 (0)
|
||||||
PRECALL_FUNCTION 1
|
PRECALL 1
|
||||||
CALL 0
|
CALL 0
|
||||||
STORE_SUBSCR
|
STORE_SUBSCR
|
||||||
LOAD_NAME 1 (int)
|
LOAD_NAME 1 (int)
|
||||||
|
@ -444,14 +449,16 @@ dis_tryfinally = """\
|
||||||
|
|
||||||
%3d LOAD_FAST 0 (a)
|
%3d LOAD_FAST 0 (a)
|
||||||
|
|
||||||
%3d LOAD_FAST 1 (b)
|
%3d PUSH_NULL
|
||||||
PRECALL_FUNCTION 0
|
LOAD_FAST 1 (b)
|
||||||
|
PRECALL 0
|
||||||
CALL 0
|
CALL 0
|
||||||
POP_TOP
|
POP_TOP
|
||||||
RETURN_VALUE
|
RETURN_VALUE
|
||||||
>> PUSH_EXC_INFO
|
>> PUSH_EXC_INFO
|
||||||
|
PUSH_NULL
|
||||||
LOAD_FAST 1 (b)
|
LOAD_FAST 1 (b)
|
||||||
PRECALL_FUNCTION 0
|
PRECALL 0
|
||||||
CALL 0
|
CALL 0
|
||||||
POP_TOP
|
POP_TOP
|
||||||
RERAISE 0
|
RERAISE 0
|
||||||
|
@ -472,15 +479,17 @@ dis_tryfinallyconst = """\
|
||||||
|
|
||||||
%3d NOP
|
%3d NOP
|
||||||
|
|
||||||
%3d LOAD_FAST 0 (b)
|
%3d PUSH_NULL
|
||||||
PRECALL_FUNCTION 0
|
LOAD_FAST 0 (b)
|
||||||
|
PRECALL 0
|
||||||
CALL 0
|
CALL 0
|
||||||
POP_TOP
|
POP_TOP
|
||||||
LOAD_CONST 1 (1)
|
LOAD_CONST 1 (1)
|
||||||
RETURN_VALUE
|
RETURN_VALUE
|
||||||
PUSH_EXC_INFO
|
PUSH_EXC_INFO
|
||||||
|
PUSH_NULL
|
||||||
LOAD_FAST 0 (b)
|
LOAD_FAST 0 (b)
|
||||||
PRECALL_FUNCTION 0
|
PRECALL 0
|
||||||
CALL 0
|
CALL 0
|
||||||
POP_TOP
|
POP_TOP
|
||||||
RERAISE 0
|
RERAISE 0
|
||||||
|
@ -543,7 +552,7 @@ Disassembly of <code object foo at 0x..., file "%s", line %d>:
|
||||||
MAKE_FUNCTION 8 (closure)
|
MAKE_FUNCTION 8 (closure)
|
||||||
LOAD_DEREF 1 (y)
|
LOAD_DEREF 1 (y)
|
||||||
GET_ITER
|
GET_ITER
|
||||||
PRECALL_FUNCTION 1
|
PRECALL 0
|
||||||
CALL 0
|
CALL 0
|
||||||
RETURN_VALUE
|
RETURN_VALUE
|
||||||
""" % (dis_nested_0,
|
""" % (dis_nested_0,
|
||||||
|
@ -882,7 +891,7 @@ Argument count: 1
|
||||||
Positional-only arguments: 0
|
Positional-only arguments: 0
|
||||||
Kw-only arguments: 0
|
Kw-only arguments: 0
|
||||||
Number of locals: 1
|
Number of locals: 1
|
||||||
Stack size: 3
|
Stack size: \\d+
|
||||||
Flags: OPTIMIZED, NEWLOCALS
|
Flags: OPTIMIZED, NEWLOCALS
|
||||||
Constants:
|
Constants:
|
||||||
{code_info_consts}
|
{code_info_consts}
|
||||||
|
@ -906,7 +915,7 @@ Argument count: 5
|
||||||
Positional-only arguments: 2
|
Positional-only arguments: 2
|
||||||
Kw-only arguments: 3
|
Kw-only arguments: 3
|
||||||
Number of locals: 10
|
Number of locals: 10
|
||||||
Stack size: 9
|
Stack size: \\d+
|
||||||
Flags: OPTIMIZED, NEWLOCALS, VARARGS, VARKEYWORDS, GENERATOR
|
Flags: OPTIMIZED, NEWLOCALS, VARARGS, VARKEYWORDS, GENERATOR
|
||||||
Constants:
|
Constants:
|
||||||
0: None
|
0: None
|
||||||
|
@ -939,7 +948,7 @@ Argument count: 1
|
||||||
Positional-only arguments: 0
|
Positional-only arguments: 0
|
||||||
Kw-only arguments: 0
|
Kw-only arguments: 0
|
||||||
Number of locals: 1
|
Number of locals: 1
|
||||||
Stack size: 10
|
Stack size: \\d+
|
||||||
Flags: OPTIMIZED, NEWLOCALS, NESTED
|
Flags: OPTIMIZED, NEWLOCALS, NESTED
|
||||||
Constants:
|
Constants:
|
||||||
0: None
|
0: None
|
||||||
|
@ -962,7 +971,7 @@ Argument count: 0
|
||||||
Positional-only arguments: 0
|
Positional-only arguments: 0
|
||||||
Kw-only arguments: 0
|
Kw-only arguments: 0
|
||||||
Number of locals: 0
|
Number of locals: 0
|
||||||
Stack size: 2
|
Stack size: \\d+
|
||||||
Flags: 0x0
|
Flags: 0x0
|
||||||
Constants:
|
Constants:
|
||||||
0: 1
|
0: 1
|
||||||
|
@ -976,7 +985,7 @@ Argument count: 0
|
||||||
Positional-only arguments: 0
|
Positional-only arguments: 0
|
||||||
Kw-only arguments: 0
|
Kw-only arguments: 0
|
||||||
Number of locals: 0
|
Number of locals: 0
|
||||||
Stack size: 2
|
Stack size: \\d+
|
||||||
Flags: 0x0
|
Flags: 0x0
|
||||||
Constants:
|
Constants:
|
||||||
0: 1
|
0: 1
|
||||||
|
@ -991,7 +1000,7 @@ Argument count: 0
|
||||||
Positional-only arguments: 0
|
Positional-only arguments: 0
|
||||||
Kw-only arguments: 0
|
Kw-only arguments: 0
|
||||||
Number of locals: 0
|
Number of locals: 0
|
||||||
Stack size: 2
|
Stack size: \\d+
|
||||||
Flags: 0x0
|
Flags: 0x0
|
||||||
Constants:
|
Constants:
|
||||||
0: 0
|
0: 0
|
||||||
|
@ -1012,7 +1021,7 @@ Argument count: 0
|
||||||
Positional-only arguments: 0
|
Positional-only arguments: 0
|
||||||
Kw-only arguments: 0
|
Kw-only arguments: 0
|
||||||
Number of locals: 2
|
Number of locals: 2
|
||||||
Stack size: 6
|
Stack size: \\d+
|
||||||
Flags: OPTIMIZED, NEWLOCALS, COROUTINE
|
Flags: OPTIMIZED, NEWLOCALS, COROUTINE
|
||||||
Constants:
|
Constants:
|
||||||
0: None
|
0: None
|
||||||
|
@ -1145,19 +1154,20 @@ expected_opinfo_outer = [
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_f, argrepr=repr(code_object_f), offset=14, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_f, argrepr=repr(code_object_f), offset=14, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=16, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=16, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='f', argrepr='f', offset=18, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='f', argrepr='f', offset=18, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=20, starts_line=7, is_jump_target=False, positions=None),
|
Instruction(opname='PUSH_NULL', opcode=2, arg=None, argval=None, argrepr='', offset=20, starts_line=7, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=137, arg=0, argval='a', argrepr='a', offset=22, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=22, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=137, arg=1, argval='b', argrepr='b', offset=24, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=137, arg=0, argval='a', argrepr='a', offset=24, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='', argrepr="''", offset=26, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=137, arg=1, argval='b', argrepr='b', offset=26, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=28, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='', argrepr="''", offset=28, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='BUILD_LIST', opcode=103, arg=0, argval=0, argrepr='', offset=30, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=30, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='BUILD_MAP', opcode=105, arg=0, argval=0, argrepr='', offset=32, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='BUILD_LIST', opcode=103, arg=0, argval=0, argrepr='', offset=32, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval='Hello world!', argrepr="'Hello world!'", offset=34, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='BUILD_MAP', opcode=105, arg=0, argval=0, argrepr='', offset=34, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='PRECALL_FUNCTION', opcode=167, arg=7, argval=7, argrepr='', offset=36, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval='Hello world!', argrepr="'Hello world!'", offset=36, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=38, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PRECALL', opcode=166, arg=7, argval=7, argrepr='', offset=38, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=40, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=40, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='f', argrepr='f', offset=42, starts_line=8, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=42, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=44, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='f', argrepr='f', offset=44, starts_line=8, is_jump_target=False, positions=None),
|
||||||
|
Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=46, starts_line=None, is_jump_target=False, positions=None),
|
||||||
]
|
]
|
||||||
|
|
||||||
expected_opinfo_f = [
|
expected_opinfo_f = [
|
||||||
|
@ -1174,166 +1184,178 @@ expected_opinfo_f = [
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_inner, argrepr=repr(code_object_inner), offset=20, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_inner, argrepr=repr(code_object_inner), offset=20, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=22, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=22, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='inner', argrepr='inner', offset=24, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='inner', argrepr='inner', offset=24, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=26, starts_line=5, is_jump_target=False, positions=None),
|
Instruction(opname='PUSH_NULL', opcode=2, arg=None, argval=None, argrepr='', offset=26, starts_line=5, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='a', argrepr='a', offset=28, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=28, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='b', argrepr='b', offset=30, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='a', argrepr='a', offset=30, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=137, arg=0, argval='c', argrepr='c', offset=32, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='b', argrepr='b', offset=32, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=137, arg=1, argval='d', argrepr='d', offset=34, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=137, arg=0, argval='c', argrepr='c', offset=34, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='PRECALL_FUNCTION', opcode=167, arg=4, argval=4, argrepr='', offset=36, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=137, arg=1, argval='d', argrepr='d', offset=36, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=38, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PRECALL', opcode=166, arg=4, argval=4, argrepr='', offset=38, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=40, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=40, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='inner', argrepr='inner', offset=42, starts_line=6, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=42, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=44, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='inner', argrepr='inner', offset=44, starts_line=6, is_jump_target=False, positions=None),
|
||||||
|
Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=46, starts_line=None, is_jump_target=False, positions=None),
|
||||||
]
|
]
|
||||||
|
|
||||||
expected_opinfo_inner = [
|
expected_opinfo_inner = [
|
||||||
Instruction(opname='COPY_FREE_VARS', opcode=149, arg=4, argval=4, argrepr='', offset=0, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='COPY_FREE_VARS', opcode=149, arg=4, argval=4, argrepr='', offset=0, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RESUME', opcode=151, arg=0, argval=0, argrepr='', offset=2, starts_line=3, is_jump_target=False, positions=None),
|
Instruction(opname='RESUME', opcode=151, arg=0, argval=0, argrepr='', offset=2, starts_line=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=4, starts_line=4, is_jump_target=False, positions=None),
|
Instruction(opname='PUSH_NULL', opcode=2, arg=None, argval=None, argrepr='', offset=4, starts_line=4, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=137, arg=2, argval='a', argrepr='a', offset=6, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=6, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='b', argrepr='b', offset=8, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=137, arg=2, argval='a', argrepr='a', offset=8, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='c', argrepr='c', offset=10, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='b', argrepr='b', offset=10, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_DEREF', opcode=137, arg=5, argval='d', argrepr='d', offset=12, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='c', argrepr='c', offset=12, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='e', argrepr='e', offset=14, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_DEREF', opcode=137, arg=5, argval='d', argrepr='d', offset=14, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=124, arg=1, argval='f', argrepr='f', offset=16, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='e', argrepr='e', offset=16, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='PRECALL_FUNCTION', opcode=167, arg=6, argval=6, argrepr='', offset=18, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=124, arg=1, argval='f', argrepr='f', offset=18, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=20, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PRECALL', opcode=166, arg=6, argval=6, argrepr='', offset=20, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=22, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=22, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=24, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=24, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=26, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=26, starts_line=None, is_jump_target=False, positions=None),
|
||||||
|
Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=28, starts_line=None, is_jump_target=False, positions=None),
|
||||||
]
|
]
|
||||||
|
|
||||||
expected_opinfo_jumpy = [
|
expected_opinfo_jumpy = [
|
||||||
Instruction(opname='RESUME', opcode=151, arg=0, argval=0, argrepr='', offset=0, starts_line=1, is_jump_target=False, positions=None),
|
Instruction(opname='RESUME', opcode=151, arg=0, argval=0, argrepr='', offset=0, starts_line=1, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='range', argrepr='range', offset=2, starts_line=3, is_jump_target=False, positions=None),
|
Instruction(opname='PUSH_NULL', opcode=2, arg=None, argval=None, argrepr='', offset=2, starts_line=3, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=1, argval=10, argrepr='10', offset=4, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='range', argrepr='range', offset=4, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='PRECALL_FUNCTION', opcode=167, arg=1, argval=1, argrepr='', offset=6, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=1, argval=10, argrepr='10', offset=6, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=8, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PRECALL', opcode=166, arg=1, argval=1, argrepr='', offset=8, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='GET_ITER', opcode=68, arg=None, argval=None, argrepr='', offset=10, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=10, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='FOR_ITER', opcode=93, arg=18, argval=50, argrepr='to 50', offset=12, starts_line=None, is_jump_target=True, positions=None),
|
Instruction(opname='GET_ITER', opcode=68, arg=None, argval=None, argrepr='', offset=12, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='STORE_FAST', opcode=125, arg=0, argval='i', argrepr='i', offset=14, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='FOR_ITER', opcode=93, arg=19, argval=54, argrepr='to 54', offset=14, starts_line=None, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=16, starts_line=4, is_jump_target=False, positions=None),
|
Instruction(opname='STORE_FAST', opcode=125, arg=0, argval='i', argrepr='i', offset=16, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=18, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PUSH_NULL', opcode=2, arg=None, argval=None, argrepr='', offset=18, starts_line=4, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='PRECALL_FUNCTION', opcode=167, arg=1, argval=1, argrepr='', offset=20, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=20, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=22, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=22, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=24, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PRECALL', opcode=166, arg=1, argval=1, argrepr='', offset=24, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=26, starts_line=5, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=26, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4, argrepr='4', offset=28, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=28, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='COMPARE_OP', opcode=107, arg=0, argval='<', argrepr='<', offset=30, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=30, starts_line=5, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=18, argval=36, argrepr='to 36', offset=32, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4, argrepr='4', offset=32, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=6, argval=12, argrepr='to 12', offset=34, starts_line=6, is_jump_target=False, positions=None),
|
Instruction(opname='COMPARE_OP', opcode=107, arg=0, argval='<', argrepr='<', offset=34, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=36, starts_line=7, is_jump_target=True, positions=None),
|
Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=20, argval=40, argrepr='to 40', offset=36, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=6, argrepr='6', offset=38, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=7, argval=14, argrepr='to 14', offset=38, starts_line=6, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='COMPARE_OP', opcode=107, arg=4, argval='>', argrepr='>', offset=40, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=40, starts_line=7, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=24, argval=48, argrepr='to 48', offset=42, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=6, argrepr='6', offset=42, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=44, starts_line=8, is_jump_target=False, positions=None),
|
Instruction(opname='COMPARE_OP', opcode=107, arg=4, argval='>', argrepr='>', offset=44, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='JUMP_FORWARD', opcode=110, arg=6, argval=60, argrepr='to 60', offset=46, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=26, argval=52, argrepr='to 52', offset=46, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=6, argval=12, argrepr='to 12', offset=48, starts_line=7, is_jump_target=True, positions=None),
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=48, starts_line=8, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=50, starts_line=10, is_jump_target=True, positions=None),
|
Instruction(opname='JUMP_FORWARD', opcode=110, arg=7, argval=66, argrepr='to 66', offset=50, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='I can haz else clause?', argrepr="'I can haz else clause?'", offset=52, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=7, argval=14, argrepr='to 14', offset=52, starts_line=7, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='PRECALL_FUNCTION', opcode=167, arg=1, argval=1, argrepr='', offset=54, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PUSH_NULL', opcode=2, arg=None, argval=None, argrepr='', offset=54, starts_line=10, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=56, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=56, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=58, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='I can haz else clause?', argrepr="'I can haz else clause?'", offset=58, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=60, starts_line=11, is_jump_target=True, positions=None),
|
Instruction(opname='PRECALL', opcode=166, arg=1, argval=1, argrepr='', offset=60, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=53, argval=106, argrepr='to 106', offset=62, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=62, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=64, starts_line=12, is_jump_target=True, positions=None),
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=64, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=66, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=66, starts_line=11, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='PRECALL_FUNCTION', opcode=167, arg=1, argval=1, argrepr='', offset=68, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=57, argval=114, argrepr='to 114', offset=68, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=70, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PUSH_NULL', opcode=2, arg=None, argval=None, argrepr='', offset=70, starts_line=12, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=72, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=72, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=74, starts_line=13, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=74, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=76, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PRECALL', opcode=166, arg=1, argval=1, argrepr='', offset=76, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='BINARY_OP', opcode=122, arg=23, argval=23, argrepr='-=', offset=78, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=78, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='STORE_FAST', opcode=125, arg=0, argval='i', argrepr='i', offset=80, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=80, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=82, starts_line=14, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=82, starts_line=13, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=6, argrepr='6', offset=84, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=84, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='COMPARE_OP', opcode=107, arg=4, argval='>', argrepr='>', offset=86, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='BINARY_OP', opcode=122, arg=23, argval=23, argrepr='-=', offset=86, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=46, argval=92, argrepr='to 92', offset=88, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='STORE_FAST', opcode=125, arg=0, argval='i', argrepr='i', offset=88, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=30, argval=60, argrepr='to 60', offset=90, starts_line=15, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=90, starts_line=14, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=92, starts_line=16, is_jump_target=True, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=6, argrepr='6', offset=92, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4, argrepr='4', offset=94, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='COMPARE_OP', opcode=107, arg=4, argval='>', argrepr='>', offset=94, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='COMPARE_OP', opcode=107, arg=0, argval='<', argrepr='<', offset=96, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=50, argval=100, argrepr='to 100', offset=96, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=51, argval=102, argrepr='to 102', offset=98, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=33, argval=66, argrepr='to 66', offset=98, starts_line=15, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='JUMP_FORWARD', opcode=110, arg=7, argval=116, argrepr='to 116', offset=100, starts_line=17, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=100, starts_line=16, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=102, starts_line=11, is_jump_target=True, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4, argrepr='4', offset=102, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=32, argval=64, argrepr='to 64', offset=104, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='COMPARE_OP', opcode=107, arg=0, argval='<', argrepr='<', offset=104, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=106, starts_line=19, is_jump_target=True, positions=None),
|
Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=55, argval=110, argrepr='to 110', offset=106, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval='Who let lolcatz into this test suite?', argrepr="'Who let lolcatz into this test suite?'", offset=108, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='JUMP_FORWARD', opcode=110, arg=8, argval=126, argrepr='to 126', offset=108, starts_line=17, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='PRECALL_FUNCTION', opcode=167, arg=1, argval=1, argrepr='', offset=110, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=110, starts_line=11, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=112, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=35, argval=70, argrepr='to 70', offset=112, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=114, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PUSH_NULL', opcode=2, arg=None, argval=None, argrepr='', offset=114, starts_line=19, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='NOP', opcode=9, arg=None, argval=None, argrepr='', offset=116, starts_line=20, is_jump_target=True, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=116, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=118, starts_line=21, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval='Who let lolcatz into this test suite?', argrepr="'Who let lolcatz into this test suite?'", offset=118, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval=0, argrepr='0', offset=120, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PRECALL', opcode=166, arg=1, argval=1, argrepr='', offset=120, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='BINARY_OP', opcode=122, arg=11, argval=11, argrepr='/', offset=122, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=122, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=124, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=124, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=126, starts_line=25, is_jump_target=False, positions=None),
|
Instruction(opname='NOP', opcode=9, arg=None, argval=None, argrepr='', offset=126, starts_line=20, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='BEFORE_WITH', opcode=53, arg=None, argval=None, argrepr='', offset=128, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=128, starts_line=21, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='STORE_FAST', opcode=125, arg=1, argval='dodgy', argrepr='dodgy', offset=130, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval=0, argrepr='0', offset=130, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=132, starts_line=26, is_jump_target=False, positions=None),
|
Instruction(opname='BINARY_OP', opcode=122, arg=11, argval=11, argrepr='/', offset=132, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval='Never reach this', argrepr="'Never reach this'", offset=134, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=134, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='PRECALL_FUNCTION', opcode=167, arg=1, argval=1, argrepr='', offset=136, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=136, starts_line=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=138, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='BEFORE_WITH', opcode=53, arg=None, argval=None, argrepr='', offset=138, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=140, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='STORE_FAST', opcode=125, arg=1, argval='dodgy', argrepr='dodgy', offset=140, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=142, starts_line=25, is_jump_target=False, positions=None),
|
Instruction(opname='PUSH_NULL', opcode=2, arg=None, argval=None, argrepr='', offset=142, starts_line=26, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=144, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=144, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=146, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval='Never reach this', argrepr="'Never reach this'", offset=146, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='PRECALL_FUNCTION', opcode=167, arg=3, argval=3, argrepr='', offset=148, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PRECALL', opcode=166, arg=1, argval=1, argrepr='', offset=148, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=150, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=150, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=152, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=152, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='JUMP_FORWARD', opcode=110, arg=11, argval=178, argrepr='to 178', offset=154, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=154, starts_line=25, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='PUSH_EXC_INFO', opcode=35, arg=None, argval=None, argrepr='', offset=156, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=156, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='WITH_EXCEPT_START', opcode=49, arg=None, argval=None, argrepr='', offset=158, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=158, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=85, argval=170, argrepr='to 170', offset=160, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PRECALL', opcode=166, arg=2, argval=2, argrepr='', offset=160, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RERAISE', opcode=119, arg=2, argval=2, argrepr='', offset=162, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=162, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='COPY', opcode=120, arg=3, argval=3, argrepr='', offset=164, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=164, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=166, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='JUMP_FORWARD', opcode=110, arg=11, argval=190, argrepr='to 190', offset=166, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RERAISE', opcode=119, arg=1, argval=1, argrepr='', offset=168, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PUSH_EXC_INFO', opcode=35, arg=None, argval=None, argrepr='', offset=168, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=170, starts_line=None, is_jump_target=True, positions=None),
|
Instruction(opname='WITH_EXCEPT_START', opcode=49, arg=None, argval=None, argrepr='', offset=170, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=172, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=91, argval=182, argrepr='to 182', offset=172, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=174, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='RERAISE', opcode=119, arg=2, argval=2, argrepr='', offset=174, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=176, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='COPY', opcode=120, arg=3, argval=3, argrepr='', offset=176, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='JUMP_FORWARD', opcode=110, arg=15, argval=210, argrepr='to 210', offset=178, starts_line=None, is_jump_target=True, positions=None),
|
Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=178, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='PUSH_EXC_INFO', opcode=35, arg=None, argval=None, argrepr='', offset=180, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='RERAISE', opcode=119, arg=1, argval=1, argrepr='', offset=180, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=2, argval='ZeroDivisionError', argrepr='ZeroDivisionError', offset=182, starts_line=22, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=182, starts_line=None, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='JUMP_IF_NOT_EXC_MATCH', opcode=121, arg=101, argval=202, argrepr='to 202', offset=184, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=184, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=186, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=186, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=188, starts_line=23, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=188, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=9, argval='Here we go, here we go, here we go...', argrepr="'Here we go, here we go, here we go...'", offset=190, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='JUMP_FORWARD', opcode=110, arg=16, argval=224, argrepr='to 224', offset=190, starts_line=None, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='PRECALL_FUNCTION', opcode=167, arg=1, argval=1, argrepr='', offset=192, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PUSH_EXC_INFO', opcode=35, arg=None, argval=None, argrepr='', offset=192, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=194, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=2, argval='ZeroDivisionError', argrepr='ZeroDivisionError', offset=194, starts_line=22, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=196, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='JUMP_IF_NOT_EXC_MATCH', opcode=121, arg=108, argval=216, argrepr='to 216', offset=196, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=198, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=198, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='JUMP_FORWARD', opcode=110, arg=11, argval=224, argrepr='to 224', offset=200, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PUSH_NULL', opcode=2, arg=None, argval=None, argrepr='', offset=200, starts_line=23, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RERAISE', opcode=119, arg=0, argval=0, argrepr='', offset=202, starts_line=22, is_jump_target=True, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=202, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='COPY', opcode=120, arg=3, argval=3, argrepr='', offset=204, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=9, argval='Here we go, here we go, here we go...', argrepr="'Here we go, here we go, here we go...'", offset=204, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=206, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PRECALL', opcode=166, arg=1, argval=1, argrepr='', offset=206, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RERAISE', opcode=119, arg=1, argval=1, argrepr='', offset=208, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=208, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=210, starts_line=28, is_jump_target=True, positions=None),
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=210, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=212, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=212, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='PRECALL_FUNCTION', opcode=167, arg=1, argval=1, argrepr='', offset=214, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='JUMP_FORWARD', opcode=110, arg=12, argval=240, argrepr='to 240', offset=214, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=216, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='RERAISE', opcode=119, arg=0, argval=0, argrepr='', offset=216, starts_line=22, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=218, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='COPY', opcode=120, arg=3, argval=3, argrepr='', offset=218, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=220, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=220, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=222, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='RERAISE', opcode=119, arg=1, argval=1, argrepr='', offset=222, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='NOP', opcode=9, arg=None, argval=None, argrepr='', offset=224, starts_line=23, is_jump_target=True, positions=None),
|
Instruction(opname='PUSH_NULL', opcode=2, arg=None, argval=None, argrepr='', offset=224, starts_line=28, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=226, starts_line=28, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=226, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=228, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=228, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='PRECALL_FUNCTION', opcode=167, arg=1, argval=1, argrepr='', offset=230, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PRECALL', opcode=166, arg=1, argval=1, argrepr='', offset=230, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=232, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=232, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=234, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=234, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=236, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=236, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=238, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=238, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='PUSH_EXC_INFO', opcode=35, arg=None, argval=None, argrepr='', offset=240, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='NOP', opcode=9, arg=None, argval=None, argrepr='', offset=240, starts_line=23, is_jump_target=True, positions=None),
|
||||||
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=242, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PUSH_NULL', opcode=2, arg=None, argval=None, argrepr='', offset=242, starts_line=28, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=244, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=244, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='PRECALL_FUNCTION', opcode=167, arg=1, argval=1, argrepr='', offset=246, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=246, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=248, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PRECALL', opcode=166, arg=1, argval=1, argrepr='', offset=248, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=250, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=250, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RERAISE', opcode=119, arg=0, argval=0, argrepr='', offset=252, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=252, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='COPY', opcode=120, arg=3, argval=3, argrepr='', offset=254, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=254, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=256, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=256, starts_line=None, is_jump_target=False, positions=None),
|
||||||
Instruction(opname='RERAISE', opcode=119, arg=1, argval=1, argrepr='', offset=258, starts_line=None, is_jump_target=False, positions=None),
|
Instruction(opname='PUSH_EXC_INFO', opcode=35, arg=None, argval=None, argrepr='', offset=258, starts_line=None, is_jump_target=False, positions=None),
|
||||||
|
Instruction(opname='PUSH_NULL', opcode=2, arg=None, argval=None, argrepr='', offset=260, starts_line=None, is_jump_target=False, positions=None),
|
||||||
|
Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=262, starts_line=None, is_jump_target=False, positions=None),
|
||||||
|
Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=264, starts_line=None, is_jump_target=False, positions=None),
|
||||||
|
Instruction(opname='PRECALL', opcode=166, arg=1, argval=1, argrepr='', offset=266, starts_line=None, is_jump_target=False, positions=None),
|
||||||
|
Instruction(opname='CALL', opcode=171, arg=0, argval=0, argrepr='', offset=268, starts_line=None, is_jump_target=False, positions=None),
|
||||||
|
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=270, starts_line=None, is_jump_target=False, positions=None),
|
||||||
|
Instruction(opname='RERAISE', opcode=119, arg=0, argval=0, argrepr='', offset=272, starts_line=None, is_jump_target=False, positions=None),
|
||||||
|
Instruction(opname='COPY', opcode=120, arg=3, argval=3, argrepr='', offset=274, starts_line=None, is_jump_target=False, positions=None),
|
||||||
|
Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=276, starts_line=None, is_jump_target=False, positions=None),
|
||||||
|
Instruction(opname='RERAISE', opcode=119, arg=1, argval=1, argrepr='', offset=278, starts_line=None, is_jump_target=False, positions=None),
|
||||||
]
|
]
|
||||||
|
|
||||||
# One last piece of inspect fodder to check the default line number handling
|
# One last piece of inspect fodder to check the default line number handling
|
||||||
|
@ -1396,6 +1418,7 @@ class InstructionTests(InstructionTestCase):
|
||||||
expected = [
|
expected = [
|
||||||
(None, None, None, None),
|
(None, None, None, None),
|
||||||
(1, 1, 0, 1),
|
(1, 1, 0, 1),
|
||||||
|
(1, 1, 0, 1),
|
||||||
(2, 2, 2, 3),
|
(2, 2, 2, 3),
|
||||||
(2, 2, 5, 6),
|
(2, 2, 5, 6),
|
||||||
(2, 2, 8, 9),
|
(2, 2, 8, 9),
|
||||||
|
|
|
@ -1393,7 +1393,7 @@ class SizeofTest(unittest.TestCase):
|
||||||
def func():
|
def func():
|
||||||
return sys._getframe()
|
return sys._getframe()
|
||||||
x = func()
|
x = func()
|
||||||
check(x, size('3Pi3c7P2ic??P'))
|
check(x, size('3Pi3c7P2ic??2P'))
|
||||||
# function
|
# function
|
||||||
def func(): pass
|
def func(): pass
|
||||||
check(func, size('14Pi'))
|
check(func, size('14Pi'))
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
Add ``PUSH_NULL`` instruction. This is used as a prefix when evaluating a
|
||||||
|
callable, so that the stack has the same shape for methods and other calls.
|
||||||
|
``PRECALL_FUNCTION`` and ``PRECALL_METHOD`` are merged into a single
|
||||||
|
``PRECALL`` instruction.
|
||||||
|
|
||||||
|
There is no change in semantics.
|
|
@ -1,36 +1,37 @@
|
||||||
// Auto-generated by Programs/freeze_test_frozenmain.py
|
// Auto-generated by Programs/freeze_test_frozenmain.py
|
||||||
unsigned char M_test_frozenmain[] = {
|
unsigned char M_test_frozenmain[] = {
|
||||||
227,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,
|
227,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,
|
||||||
0,0,0,0,0,115,96,0,0,0,151,0,100,0,100,1,
|
0,0,0,0,0,115,104,0,0,0,151,0,100,0,100,1,
|
||||||
108,0,90,0,100,0,100,1,108,1,90,1,101,2,100,2,
|
108,0,90,0,100,0,100,1,108,1,90,1,2,0,101,2,
|
||||||
167,1,171,0,1,0,101,2,100,3,101,0,106,3,167,2,
|
100,2,166,1,171,0,1,0,2,0,101,2,100,3,101,0,
|
||||||
171,0,1,0,101,1,106,4,167,0,171,0,100,4,25,0,
|
106,3,166,2,171,0,1,0,2,0,101,1,106,4,166,0,
|
||||||
90,5,100,5,68,0,93,15,90,6,101,2,100,6,101,6,
|
171,0,100,4,25,0,90,5,100,5,68,0,93,16,90,6,
|
||||||
155,0,100,7,101,5,101,6,25,0,155,0,157,4,167,1,
|
2,0,101,2,100,6,101,6,155,0,100,7,101,5,101,6,
|
||||||
171,0,1,0,113,30,100,1,83,0,41,8,233,0,0,0,
|
25,0,155,0,157,4,166,1,171,0,1,0,113,33,100,1,
|
||||||
0,78,122,18,70,114,111,122,101,110,32,72,101,108,108,111,
|
83,0,41,8,233,0,0,0,0,78,122,18,70,114,111,122,
|
||||||
32,87,111,114,108,100,122,8,115,121,115,46,97,114,103,118,
|
101,110,32,72,101,108,108,111,32,87,111,114,108,100,122,8,
|
||||||
218,6,99,111,110,102,105,103,41,5,90,12,112,114,111,103,
|
115,121,115,46,97,114,103,118,218,6,99,111,110,102,105,103,
|
||||||
114,97,109,95,110,97,109,101,218,10,101,120,101,99,117,116,
|
41,5,90,12,112,114,111,103,114,97,109,95,110,97,109,101,
|
||||||
97,98,108,101,90,15,117,115,101,95,101,110,118,105,114,111,
|
218,10,101,120,101,99,117,116,97,98,108,101,90,15,117,115,
|
||||||
110,109,101,110,116,90,17,99,111,110,102,105,103,117,114,101,
|
101,95,101,110,118,105,114,111,110,109,101,110,116,90,17,99,
|
||||||
95,99,95,115,116,100,105,111,90,14,98,117,102,102,101,114,
|
111,110,102,105,103,117,114,101,95,99,95,115,116,100,105,111,
|
||||||
101,100,95,115,116,100,105,111,122,7,99,111,110,102,105,103,
|
90,14,98,117,102,102,101,114,101,100,95,115,116,100,105,111,
|
||||||
32,122,2,58,32,41,7,218,3,115,121,115,90,17,95,116,
|
122,7,99,111,110,102,105,103,32,122,2,58,32,41,7,218,
|
||||||
101,115,116,105,110,116,101,114,110,97,108,99,97,112,105,218,
|
3,115,121,115,90,17,95,116,101,115,116,105,110,116,101,114,
|
||||||
5,112,114,105,110,116,218,4,97,114,103,118,90,11,103,101,
|
110,97,108,99,97,112,105,218,5,112,114,105,110,116,218,4,
|
||||||
116,95,99,111,110,102,105,103,115,114,2,0,0,0,218,3,
|
97,114,103,118,90,11,103,101,116,95,99,111,110,102,105,103,
|
||||||
107,101,121,169,0,243,0,0,0,0,250,18,116,101,115,116,
|
115,114,2,0,0,0,218,3,107,101,121,169,0,243,0,0,
|
||||||
95,102,114,111,122,101,110,109,97,105,110,46,112,121,250,8,
|
0,0,250,18,116,101,115,116,95,102,114,111,122,101,110,109,
|
||||||
60,109,111,100,117,108,101,62,114,11,0,0,0,1,0,0,
|
97,105,110,46,112,121,250,8,60,109,111,100,117,108,101,62,
|
||||||
0,115,18,0,0,0,2,128,8,3,8,1,10,2,14,1,
|
114,11,0,0,0,1,0,0,0,115,18,0,0,0,2,128,
|
||||||
14,1,8,1,28,7,4,249,115,20,0,0,0,2,128,8,
|
8,3,8,1,12,2,16,1,16,1,8,1,30,7,4,249,
|
||||||
3,8,1,10,2,14,1,14,1,2,7,4,1,2,249,32,
|
115,20,0,0,0,2,128,8,3,8,1,12,2,16,1,16,
|
||||||
7,115,96,0,0,0,0,0,1,11,1,11,1,11,1,11,
|
1,2,7,4,1,2,249,34,7,115,104,0,0,0,0,0,
|
||||||
1,25,1,25,1,25,1,25,1,6,7,27,1,28,1,28,
|
1,11,1,11,1,11,1,11,1,25,1,25,1,25,1,25,
|
||||||
1,28,1,6,7,17,19,22,19,27,1,28,1,28,1,28,
|
1,6,1,6,7,27,1,28,1,28,1,28,1,6,1,6,
|
||||||
10,27,10,39,10,41,10,41,42,50,10,51,1,7,12,2,
|
7,17,19,22,19,27,1,28,1,28,1,28,10,39,10,27,
|
||||||
1,42,1,42,5,8,5,10,11,41,21,24,11,41,11,41,
|
10,39,10,41,10,41,42,50,10,51,1,7,12,2,1,42,
|
||||||
|
1,42,5,8,5,10,5,10,11,41,21,24,11,41,11,41,
|
||||||
28,34,35,38,28,39,11,41,11,41,5,42,5,42,5,42,
|
28,34,35,38,28,39,11,41,11,41,5,42,5,42,5,42,
|
||||||
5,42,1,42,1,42,114,9,0,0,0,
|
5,42,1,42,1,42,114,9,0,0,0,
|
||||||
};
|
};
|
||||||
|
|
|
@ -1584,7 +1584,7 @@ pop_frame(PyThreadState *tstate, InterpreterFrame *frame)
|
||||||
return prev_frame;
|
return prev_frame;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* It is only between a PRECALL_METHOD/FUNCTION instruction and the following CALL,
|
/* It is only between the PRECALL instruction and the following CALL,
|
||||||
* that these values have any meaning.
|
* that these values have any meaning.
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -1872,6 +1872,12 @@ handle_eval_breaker:
|
||||||
DISPATCH();
|
DISPATCH();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TARGET(PUSH_NULL) {
|
||||||
|
/* Use BASIC_PUSH as NULL is not a valid object pointer */
|
||||||
|
BASIC_PUSH(NULL);
|
||||||
|
DISPATCH();
|
||||||
|
}
|
||||||
|
|
||||||
TARGET(UNARY_POSITIVE) {
|
TARGET(UNARY_POSITIVE) {
|
||||||
PyObject *value = TOP();
|
PyObject *value = TOP();
|
||||||
PyObject *res = PyNumber_Positive(value);
|
PyObject *res = PyNumber_Positive(value);
|
||||||
|
@ -4476,25 +4482,7 @@ handle_eval_breaker:
|
||||||
NOTRACE_DISPATCH();
|
NOTRACE_DISPATCH();
|
||||||
}
|
}
|
||||||
|
|
||||||
TARGET(PRECALL_FUNCTION) {
|
TARGET(PRECALL) {
|
||||||
/* Move ownership of reference from stack to call_shape */
|
|
||||||
call_shape.callable = PEEK(oparg + 1);
|
|
||||||
call_shape.postcall_shrink = 1;
|
|
||||||
|
|
||||||
call_shape.total_args = oparg;
|
|
||||||
assert(call_shape.kwnames == NULL);
|
|
||||||
#ifdef Py_STATS
|
|
||||||
extern int _PySpecialization_ClassifyCallable(PyObject *);
|
|
||||||
SpecializationStats *stats =
|
|
||||||
&_py_stats.opcode_stats[PRECALL_FUNCTION].specialization;
|
|
||||||
stats->failure++;
|
|
||||||
int kind = _PySpecialization_ClassifyCallable(call_shape.callable);
|
|
||||||
stats->failure_kinds[kind]++;
|
|
||||||
#endif
|
|
||||||
DISPATCH();
|
|
||||||
}
|
|
||||||
|
|
||||||
TARGET(PRECALL_METHOD) {
|
|
||||||
/* Designed to work in tamdem with LOAD_METHOD. */
|
/* Designed to work in tamdem with LOAD_METHOD. */
|
||||||
/* `meth` is NULL when LOAD_METHOD thinks that it's not
|
/* `meth` is NULL when LOAD_METHOD thinks that it's not
|
||||||
a method call.
|
a method call.
|
||||||
|
@ -4533,7 +4521,7 @@ handle_eval_breaker:
|
||||||
#ifdef Py_STATS
|
#ifdef Py_STATS
|
||||||
extern int _PySpecialization_ClassifyCallable(PyObject *);
|
extern int _PySpecialization_ClassifyCallable(PyObject *);
|
||||||
SpecializationStats *stats =
|
SpecializationStats *stats =
|
||||||
&_py_stats.opcode_stats[PRECALL_METHOD].specialization;
|
&_py_stats.opcode_stats[PRECALL].specialization;
|
||||||
stats->failure++;
|
stats->failure++;
|
||||||
int kind = _PySpecialization_ClassifyCallable(call_shape.callable);
|
int kind = _PySpecialization_ClassifyCallable(call_shape.callable);
|
||||||
stats->failure_kinds[kind]++;
|
stats->failure_kinds[kind]++;
|
||||||
|
@ -5118,6 +5106,8 @@ handle_eval_breaker:
|
||||||
Py_DECREF(callargs);
|
Py_DECREF(callargs);
|
||||||
Py_XDECREF(kwargs);
|
Py_XDECREF(kwargs);
|
||||||
|
|
||||||
|
STACK_SHRINK(1);
|
||||||
|
assert(TOP() == NULL);
|
||||||
SET_TOP(result);
|
SET_TOP(result);
|
||||||
if (result == NULL) {
|
if (result == NULL) {
|
||||||
goto error;
|
goto error;
|
||||||
|
|
|
@ -1012,17 +1012,15 @@ stack_effect(int opcode, int oparg, int jump)
|
||||||
return -oparg;
|
return -oparg;
|
||||||
|
|
||||||
/* Functions and calls */
|
/* Functions and calls */
|
||||||
case PRECALL_METHOD:
|
case PRECALL:
|
||||||
return -oparg-1;
|
|
||||||
case PRECALL_FUNCTION:
|
|
||||||
return -oparg;
|
return -oparg;
|
||||||
case KW_NAMES:
|
case KW_NAMES:
|
||||||
return 0;
|
return 0;
|
||||||
case CALL:
|
case CALL:
|
||||||
return 0;
|
return -1;
|
||||||
|
|
||||||
case CALL_FUNCTION_EX:
|
case CALL_FUNCTION_EX:
|
||||||
return -1 - ((oparg & 0x01) != 0);
|
return -2 - ((oparg & 0x01) != 0);
|
||||||
case MAKE_FUNCTION:
|
case MAKE_FUNCTION:
|
||||||
return 0 - ((oparg & 0x01) != 0) - ((oparg & 0x02) != 0) -
|
return 0 - ((oparg & 0x01) != 0) - ((oparg & 0x02) != 0) -
|
||||||
((oparg & 0x04) != 0) - ((oparg & 0x08) != 0);
|
((oparg & 0x04) != 0) - ((oparg & 0x08) != 0);
|
||||||
|
@ -1084,6 +1082,7 @@ stack_effect(int opcode, int oparg, int jump)
|
||||||
case MATCH_KEYS:
|
case MATCH_KEYS:
|
||||||
return 1;
|
return 1;
|
||||||
case COPY:
|
case COPY:
|
||||||
|
case PUSH_NULL:
|
||||||
return 1;
|
return 1;
|
||||||
case BINARY_OP:
|
case BINARY_OP:
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1800,7 +1799,7 @@ compiler_call_exit_with_nones(struct compiler *c) {
|
||||||
ADDOP_LOAD_CONST(c, Py_None);
|
ADDOP_LOAD_CONST(c, Py_None);
|
||||||
ADDOP_LOAD_CONST(c, Py_None);
|
ADDOP_LOAD_CONST(c, Py_None);
|
||||||
ADDOP_LOAD_CONST(c, Py_None);
|
ADDOP_LOAD_CONST(c, Py_None);
|
||||||
ADDOP_I(c, PRECALL_FUNCTION, 3);
|
ADDOP_I(c, PRECALL, 2);
|
||||||
ADDOP_I(c, CALL, 0);
|
ADDOP_I(c, CALL, 0);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -2178,7 +2177,7 @@ compiler_apply_decorators(struct compiler *c, asdl_expr_seq* decos)
|
||||||
int old_end_col_offset = c->u->u_end_col_offset;
|
int old_end_col_offset = c->u->u_end_col_offset;
|
||||||
for (Py_ssize_t i = asdl_seq_LEN(decos) - 1; i > -1; i--) {
|
for (Py_ssize_t i = asdl_seq_LEN(decos) - 1; i > -1; i--) {
|
||||||
SET_LOC(c, (expr_ty)asdl_seq_GET(decos, i));
|
SET_LOC(c, (expr_ty)asdl_seq_GET(decos, i));
|
||||||
ADDOP_I(c, PRECALL_FUNCTION, 1);
|
ADDOP_I(c, PRECALL, 0);
|
||||||
ADDOP_I(c, CALL, 0);
|
ADDOP_I(c, CALL, 0);
|
||||||
}
|
}
|
||||||
c->u->u_lineno = old_lineno;
|
c->u->u_lineno = old_lineno;
|
||||||
|
@ -2630,6 +2629,7 @@ compiler_class(struct compiler *c, stmt_ty s)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* 2. load the 'build_class' function */
|
/* 2. load the 'build_class' function */
|
||||||
|
ADDOP(c, PUSH_NULL);
|
||||||
ADDOP(c, LOAD_BUILD_CLASS);
|
ADDOP(c, LOAD_BUILD_CLASS);
|
||||||
|
|
||||||
/* 3. load a function (or closure) made from the code object */
|
/* 3. load a function (or closure) made from the code object */
|
||||||
|
@ -2645,7 +2645,6 @@ compiler_class(struct compiler *c, stmt_ty s)
|
||||||
/* 5. generate the rest of the code for the call */
|
/* 5. generate the rest of the code for the call */
|
||||||
if (!compiler_call_helper(c, 2, s->v.ClassDef.bases, s->v.ClassDef.keywords))
|
if (!compiler_call_helper(c, 2, s->v.ClassDef.bases, s->v.ClassDef.keywords))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* 6. apply decorators */
|
/* 6. apply decorators */
|
||||||
if (!compiler_apply_decorators(c, decos))
|
if (!compiler_apply_decorators(c, decos))
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -3858,7 +3857,7 @@ compiler_assert(struct compiler *c, stmt_ty s)
|
||||||
ADDOP(c, LOAD_ASSERTION_ERROR);
|
ADDOP(c, LOAD_ASSERTION_ERROR);
|
||||||
if (s->v.Assert.msg) {
|
if (s->v.Assert.msg) {
|
||||||
VISIT(c, expr, s->v.Assert.msg);
|
VISIT(c, expr, s->v.Assert.msg);
|
||||||
ADDOP_I(c, PRECALL_FUNCTION, 1);
|
ADDOP_I(c, PRECALL, 0);
|
||||||
ADDOP_I(c, CALL, 0);
|
ADDOP_I(c, CALL, 0);
|
||||||
}
|
}
|
||||||
ADDOP_I(c, RAISE_VARARGS, 1);
|
ADDOP_I(c, RAISE_VARARGS, 1);
|
||||||
|
@ -4680,14 +4679,14 @@ maybe_optimize_method_call(struct compiler *c, expr_ty e)
|
||||||
|
|
||||||
if (kwdsl) {
|
if (kwdsl) {
|
||||||
VISIT_SEQ(c, keyword, kwds);
|
VISIT_SEQ(c, keyword, kwds);
|
||||||
ADDOP_I(c, PRECALL_METHOD, argsl + kwdsl);
|
ADDOP_I(c, PRECALL, argsl + kwdsl);
|
||||||
if (!compiler_call_simple_kw_helper(c, kwds, kwdsl)) {
|
if (!compiler_call_simple_kw_helper(c, kwds, kwdsl)) {
|
||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
ADDOP_I(c, CALL, kwdsl);
|
ADDOP_I(c, CALL, kwdsl);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ADDOP_I(c, PRECALL_METHOD, argsl);
|
ADDOP_I(c, PRECALL, argsl);
|
||||||
ADDOP_I(c, CALL, 0);
|
ADDOP_I(c, CALL, 0);
|
||||||
}
|
}
|
||||||
c->u->u_lineno = old_lineno;
|
c->u->u_lineno = old_lineno;
|
||||||
|
@ -4731,6 +4730,9 @@ compiler_call(struct compiler *c, expr_ty e)
|
||||||
if (!check_caller(c, e->v.Call.func)) {
|
if (!check_caller(c, e->v.Call.func)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
SET_LOC(c, e->v.Call.func);
|
||||||
|
ADDOP(c, PUSH_NULL);
|
||||||
|
SET_LOC(c, e);
|
||||||
VISIT(c, expr, e->v.Call.func);
|
VISIT(c, expr, e->v.Call.func);
|
||||||
return compiler_call_helper(c, 0,
|
return compiler_call_helper(c, 0,
|
||||||
e->v.Call.args,
|
e->v.Call.args,
|
||||||
|
@ -4755,7 +4757,7 @@ compiler_joined_str(struct compiler *c, expr_ty e)
|
||||||
VISIT(c, expr, asdl_seq_GET(e->v.JoinedStr.values, i));
|
VISIT(c, expr, asdl_seq_GET(e->v.JoinedStr.values, i));
|
||||||
ADDOP_I(c, LIST_APPEND, 1);
|
ADDOP_I(c, LIST_APPEND, 1);
|
||||||
}
|
}
|
||||||
ADDOP_I(c, PRECALL_METHOD, 1);
|
ADDOP_I(c, PRECALL, 1);
|
||||||
ADDOP_I(c, CALL, 0);
|
ADDOP_I(c, CALL, 0);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -4925,7 +4927,7 @@ compiler_call_helper(struct compiler *c,
|
||||||
}
|
}
|
||||||
if (nkwelts) {
|
if (nkwelts) {
|
||||||
VISIT_SEQ(c, keyword, keywords);
|
VISIT_SEQ(c, keyword, keywords);
|
||||||
ADDOP_I(c, PRECALL_FUNCTION, n + nelts + nkwelts);
|
ADDOP_I(c, PRECALL, n + nelts + nkwelts);
|
||||||
if (!compiler_call_simple_kw_helper(c, keywords, nkwelts)) {
|
if (!compiler_call_simple_kw_helper(c, keywords, nkwelts)) {
|
||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
|
@ -4933,7 +4935,7 @@ compiler_call_helper(struct compiler *c,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ADDOP_I(c, PRECALL_FUNCTION, n + nelts);
|
ADDOP_I(c, PRECALL, n + nelts);
|
||||||
ADDOP_I(c, CALL, 0);
|
ADDOP_I(c, CALL, 0);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -5328,7 +5330,7 @@ compiler_comprehension(struct compiler *c, expr_ty e, int type,
|
||||||
ADDOP(c, GET_ITER);
|
ADDOP(c, GET_ITER);
|
||||||
}
|
}
|
||||||
|
|
||||||
ADDOP_I(c, PRECALL_FUNCTION, 1);
|
ADDOP_I(c, PRECALL, 0);
|
||||||
ADDOP_I(c, CALL, 0);
|
ADDOP_I(c, CALL, 0);
|
||||||
|
|
||||||
if (is_async_generator && type != COMP_GENEXP) {
|
if (is_async_generator && type != COMP_GENEXP) {
|
||||||
|
|
|
@ -1,20 +1,21 @@
|
||||||
static void *opcode_targets[256] = {
|
static void *opcode_targets[256] = {
|
||||||
&&_unknown_opcode,
|
&&_unknown_opcode,
|
||||||
&&TARGET_POP_TOP,
|
&&TARGET_POP_TOP,
|
||||||
|
&&TARGET_PUSH_NULL,
|
||||||
&&TARGET_BINARY_OP_ADAPTIVE,
|
&&TARGET_BINARY_OP_ADAPTIVE,
|
||||||
&&TARGET_BINARY_OP_ADD_INT,
|
&&TARGET_BINARY_OP_ADD_INT,
|
||||||
&&TARGET_BINARY_OP_ADD_FLOAT,
|
&&TARGET_BINARY_OP_ADD_FLOAT,
|
||||||
&&TARGET_BINARY_OP_ADD_UNICODE,
|
&&TARGET_BINARY_OP_ADD_UNICODE,
|
||||||
&&TARGET_BINARY_OP_INPLACE_ADD_UNICODE,
|
&&TARGET_BINARY_OP_INPLACE_ADD_UNICODE,
|
||||||
&&TARGET_BINARY_OP_MULTIPLY_INT,
|
&&TARGET_BINARY_OP_MULTIPLY_INT,
|
||||||
&&TARGET_BINARY_OP_MULTIPLY_FLOAT,
|
|
||||||
&&TARGET_NOP,
|
&&TARGET_NOP,
|
||||||
&&TARGET_UNARY_POSITIVE,
|
&&TARGET_UNARY_POSITIVE,
|
||||||
&&TARGET_UNARY_NEGATIVE,
|
&&TARGET_UNARY_NEGATIVE,
|
||||||
&&TARGET_UNARY_NOT,
|
&&TARGET_UNARY_NOT,
|
||||||
|
&&TARGET_BINARY_OP_MULTIPLY_FLOAT,
|
||||||
&&TARGET_BINARY_OP_SUBTRACT_INT,
|
&&TARGET_BINARY_OP_SUBTRACT_INT,
|
||||||
&&TARGET_BINARY_OP_SUBTRACT_FLOAT,
|
|
||||||
&&TARGET_UNARY_INVERT,
|
&&TARGET_UNARY_INVERT,
|
||||||
|
&&TARGET_BINARY_OP_SUBTRACT_FLOAT,
|
||||||
&&TARGET_COMPARE_OP_ADAPTIVE,
|
&&TARGET_COMPARE_OP_ADAPTIVE,
|
||||||
&&TARGET_COMPARE_OP_FLOAT_JUMP,
|
&&TARGET_COMPARE_OP_FLOAT_JUMP,
|
||||||
&&TARGET_COMPARE_OP_INT_JUMP,
|
&&TARGET_COMPARE_OP_INT_JUMP,
|
||||||
|
@ -23,18 +24,18 @@ static void *opcode_targets[256] = {
|
||||||
&&TARGET_BINARY_SUBSCR_GETITEM,
|
&&TARGET_BINARY_SUBSCR_GETITEM,
|
||||||
&&TARGET_BINARY_SUBSCR_LIST_INT,
|
&&TARGET_BINARY_SUBSCR_LIST_INT,
|
||||||
&&TARGET_BINARY_SUBSCR_TUPLE_INT,
|
&&TARGET_BINARY_SUBSCR_TUPLE_INT,
|
||||||
&&TARGET_BINARY_SUBSCR_DICT,
|
|
||||||
&&TARGET_BINARY_SUBSCR,
|
&&TARGET_BINARY_SUBSCR,
|
||||||
|
&&TARGET_BINARY_SUBSCR_DICT,
|
||||||
&&TARGET_STORE_SUBSCR_ADAPTIVE,
|
&&TARGET_STORE_SUBSCR_ADAPTIVE,
|
||||||
&&TARGET_STORE_SUBSCR_LIST_INT,
|
&&TARGET_STORE_SUBSCR_LIST_INT,
|
||||||
&&TARGET_STORE_SUBSCR_DICT,
|
&&TARGET_STORE_SUBSCR_DICT,
|
||||||
&&TARGET_CALL_ADAPTIVE,
|
|
||||||
&&TARGET_GET_LEN,
|
&&TARGET_GET_LEN,
|
||||||
&&TARGET_MATCH_MAPPING,
|
&&TARGET_MATCH_MAPPING,
|
||||||
&&TARGET_MATCH_SEQUENCE,
|
&&TARGET_MATCH_SEQUENCE,
|
||||||
&&TARGET_MATCH_KEYS,
|
&&TARGET_MATCH_KEYS,
|
||||||
&&TARGET_CALL_BUILTIN_CLASS,
|
&&TARGET_CALL_ADAPTIVE,
|
||||||
&&TARGET_PUSH_EXC_INFO,
|
&&TARGET_PUSH_EXC_INFO,
|
||||||
|
&&TARGET_CALL_BUILTIN_CLASS,
|
||||||
&&TARGET_CALL_NO_KW_BUILTIN_O,
|
&&TARGET_CALL_NO_KW_BUILTIN_O,
|
||||||
&&TARGET_CALL_NO_KW_BUILTIN_FAST,
|
&&TARGET_CALL_NO_KW_BUILTIN_FAST,
|
||||||
&&TARGET_CALL_BUILTIN_FAST_WITH_KEYWORDS,
|
&&TARGET_CALL_BUILTIN_FAST_WITH_KEYWORDS,
|
||||||
|
@ -47,40 +48,39 @@ static void *opcode_targets[256] = {
|
||||||
&&TARGET_CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS,
|
&&TARGET_CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS,
|
||||||
&&TARGET_CALL_NO_KW_STR_1,
|
&&TARGET_CALL_NO_KW_STR_1,
|
||||||
&&TARGET_CALL_NO_KW_TUPLE_1,
|
&&TARGET_CALL_NO_KW_TUPLE_1,
|
||||||
&&TARGET_CALL_NO_KW_TYPE_1,
|
|
||||||
&&TARGET_WITH_EXCEPT_START,
|
&&TARGET_WITH_EXCEPT_START,
|
||||||
&&TARGET_GET_AITER,
|
&&TARGET_GET_AITER,
|
||||||
&&TARGET_GET_ANEXT,
|
&&TARGET_GET_ANEXT,
|
||||||
&&TARGET_BEFORE_ASYNC_WITH,
|
&&TARGET_BEFORE_ASYNC_WITH,
|
||||||
&&TARGET_BEFORE_WITH,
|
&&TARGET_BEFORE_WITH,
|
||||||
&&TARGET_END_ASYNC_FOR,
|
&&TARGET_END_ASYNC_FOR,
|
||||||
|
&&TARGET_CALL_NO_KW_TYPE_1,
|
||||||
&&TARGET_CALL_NO_KW_METHOD_DESCRIPTOR_FAST,
|
&&TARGET_CALL_NO_KW_METHOD_DESCRIPTOR_FAST,
|
||||||
&&TARGET_JUMP_ABSOLUTE_QUICK,
|
&&TARGET_JUMP_ABSOLUTE_QUICK,
|
||||||
&&TARGET_LOAD_ATTR_ADAPTIVE,
|
&&TARGET_LOAD_ATTR_ADAPTIVE,
|
||||||
&&TARGET_LOAD_ATTR_INSTANCE_VALUE,
|
&&TARGET_LOAD_ATTR_INSTANCE_VALUE,
|
||||||
&&TARGET_LOAD_ATTR_WITH_HINT,
|
|
||||||
&&TARGET_STORE_SUBSCR,
|
&&TARGET_STORE_SUBSCR,
|
||||||
&&TARGET_DELETE_SUBSCR,
|
&&TARGET_DELETE_SUBSCR,
|
||||||
|
&&TARGET_LOAD_ATTR_WITH_HINT,
|
||||||
&&TARGET_LOAD_ATTR_SLOT,
|
&&TARGET_LOAD_ATTR_SLOT,
|
||||||
&&TARGET_LOAD_ATTR_MODULE,
|
&&TARGET_LOAD_ATTR_MODULE,
|
||||||
&&TARGET_LOAD_GLOBAL_ADAPTIVE,
|
&&TARGET_LOAD_GLOBAL_ADAPTIVE,
|
||||||
&&TARGET_LOAD_GLOBAL_MODULE,
|
&&TARGET_LOAD_GLOBAL_MODULE,
|
||||||
&&TARGET_LOAD_GLOBAL_BUILTIN,
|
&&TARGET_LOAD_GLOBAL_BUILTIN,
|
||||||
&&TARGET_LOAD_METHOD_ADAPTIVE,
|
|
||||||
&&TARGET_GET_ITER,
|
&&TARGET_GET_ITER,
|
||||||
&&TARGET_GET_YIELD_FROM_ITER,
|
&&TARGET_GET_YIELD_FROM_ITER,
|
||||||
&&TARGET_PRINT_EXPR,
|
&&TARGET_PRINT_EXPR,
|
||||||
&&TARGET_LOAD_BUILD_CLASS,
|
&&TARGET_LOAD_BUILD_CLASS,
|
||||||
&&TARGET_LOAD_METHOD_CACHED,
|
&&TARGET_LOAD_METHOD_ADAPTIVE,
|
||||||
&&TARGET_GET_AWAITABLE,
|
&&TARGET_GET_AWAITABLE,
|
||||||
&&TARGET_LOAD_ASSERTION_ERROR,
|
&&TARGET_LOAD_ASSERTION_ERROR,
|
||||||
&&TARGET_RETURN_GENERATOR,
|
&&TARGET_RETURN_GENERATOR,
|
||||||
|
&&TARGET_LOAD_METHOD_CACHED,
|
||||||
&&TARGET_LOAD_METHOD_CLASS,
|
&&TARGET_LOAD_METHOD_CLASS,
|
||||||
&&TARGET_LOAD_METHOD_MODULE,
|
&&TARGET_LOAD_METHOD_MODULE,
|
||||||
&&TARGET_LOAD_METHOD_NO_DICT,
|
&&TARGET_LOAD_METHOD_NO_DICT,
|
||||||
&&TARGET_RESUME_QUICK,
|
&&TARGET_RESUME_QUICK,
|
||||||
&&TARGET_STORE_ATTR_ADAPTIVE,
|
&&TARGET_STORE_ATTR_ADAPTIVE,
|
||||||
&&TARGET_STORE_ATTR_INSTANCE_VALUE,
|
|
||||||
&&TARGET_LIST_TO_TUPLE,
|
&&TARGET_LIST_TO_TUPLE,
|
||||||
&&TARGET_RETURN_VALUE,
|
&&TARGET_RETURN_VALUE,
|
||||||
&&TARGET_IMPORT_STAR,
|
&&TARGET_IMPORT_STAR,
|
||||||
|
@ -130,7 +130,7 @@ static void *opcode_targets[256] = {
|
||||||
&&TARGET_POP_JUMP_IF_NOT_NONE,
|
&&TARGET_POP_JUMP_IF_NOT_NONE,
|
||||||
&&TARGET_POP_JUMP_IF_NONE,
|
&&TARGET_POP_JUMP_IF_NONE,
|
||||||
&&TARGET_RAISE_VARARGS,
|
&&TARGET_RAISE_VARARGS,
|
||||||
&&TARGET_STORE_ATTR_SLOT,
|
&&TARGET_STORE_ATTR_INSTANCE_VALUE,
|
||||||
&&TARGET_MAKE_FUNCTION,
|
&&TARGET_MAKE_FUNCTION,
|
||||||
&&TARGET_BUILD_SLICE,
|
&&TARGET_BUILD_SLICE,
|
||||||
&&TARGET_JUMP_NO_INTERRUPT,
|
&&TARGET_JUMP_NO_INTERRUPT,
|
||||||
|
@ -139,35 +139,35 @@ static void *opcode_targets[256] = {
|
||||||
&&TARGET_LOAD_DEREF,
|
&&TARGET_LOAD_DEREF,
|
||||||
&&TARGET_STORE_DEREF,
|
&&TARGET_STORE_DEREF,
|
||||||
&&TARGET_DELETE_DEREF,
|
&&TARGET_DELETE_DEREF,
|
||||||
|
&&TARGET_STORE_ATTR_SLOT,
|
||||||
&&TARGET_STORE_ATTR_WITH_HINT,
|
&&TARGET_STORE_ATTR_WITH_HINT,
|
||||||
&&TARGET_UNPACK_SEQUENCE_ADAPTIVE,
|
|
||||||
&&TARGET_CALL_FUNCTION_EX,
|
&&TARGET_CALL_FUNCTION_EX,
|
||||||
&&TARGET_UNPACK_SEQUENCE_LIST,
|
&&TARGET_UNPACK_SEQUENCE_ADAPTIVE,
|
||||||
&&TARGET_EXTENDED_ARG,
|
&&TARGET_EXTENDED_ARG,
|
||||||
&&TARGET_LIST_APPEND,
|
&&TARGET_LIST_APPEND,
|
||||||
&&TARGET_SET_ADD,
|
&&TARGET_SET_ADD,
|
||||||
&&TARGET_MAP_ADD,
|
&&TARGET_MAP_ADD,
|
||||||
&&TARGET_LOAD_CLASSDEREF,
|
&&TARGET_LOAD_CLASSDEREF,
|
||||||
&&TARGET_COPY_FREE_VARS,
|
&&TARGET_COPY_FREE_VARS,
|
||||||
&&TARGET_UNPACK_SEQUENCE_TUPLE,
|
&&TARGET_UNPACK_SEQUENCE_LIST,
|
||||||
&&TARGET_RESUME,
|
&&TARGET_RESUME,
|
||||||
&&TARGET_MATCH_CLASS,
|
&&TARGET_MATCH_CLASS,
|
||||||
|
&&TARGET_UNPACK_SEQUENCE_TUPLE,
|
||||||
&&TARGET_UNPACK_SEQUENCE_TWO_TUPLE,
|
&&TARGET_UNPACK_SEQUENCE_TWO_TUPLE,
|
||||||
&&TARGET_LOAD_FAST__LOAD_FAST,
|
|
||||||
&&TARGET_FORMAT_VALUE,
|
&&TARGET_FORMAT_VALUE,
|
||||||
&&TARGET_BUILD_CONST_KEY_MAP,
|
&&TARGET_BUILD_CONST_KEY_MAP,
|
||||||
&&TARGET_BUILD_STRING,
|
&&TARGET_BUILD_STRING,
|
||||||
|
&&TARGET_LOAD_FAST__LOAD_FAST,
|
||||||
&&TARGET_STORE_FAST__LOAD_FAST,
|
&&TARGET_STORE_FAST__LOAD_FAST,
|
||||||
&&TARGET_LOAD_FAST__LOAD_CONST,
|
|
||||||
&&TARGET_LOAD_METHOD,
|
&&TARGET_LOAD_METHOD,
|
||||||
&&TARGET_LOAD_CONST__LOAD_FAST,
|
&&TARGET_LOAD_FAST__LOAD_CONST,
|
||||||
&&TARGET_LIST_EXTEND,
|
&&TARGET_LIST_EXTEND,
|
||||||
&&TARGET_SET_UPDATE,
|
&&TARGET_SET_UPDATE,
|
||||||
&&TARGET_DICT_MERGE,
|
&&TARGET_DICT_MERGE,
|
||||||
&&TARGET_DICT_UPDATE,
|
&&TARGET_DICT_UPDATE,
|
||||||
|
&&TARGET_PRECALL,
|
||||||
|
&&TARGET_LOAD_CONST__LOAD_FAST,
|
||||||
&&TARGET_STORE_FAST__STORE_FAST,
|
&&TARGET_STORE_FAST__STORE_FAST,
|
||||||
&&TARGET_PRECALL_FUNCTION,
|
|
||||||
&&TARGET_PRECALL_METHOD,
|
|
||||||
&&_unknown_opcode,
|
&&_unknown_opcode,
|
||||||
&&_unknown_opcode,
|
&&_unknown_opcode,
|
||||||
&&TARGET_CALL,
|
&&TARGET_CALL,
|
||||||
|
|
|
@ -178,8 +178,7 @@ print_spec_stats(FILE *out, OpcodeStats *stats)
|
||||||
/* Mark some opcodes as specializable for stats,
|
/* Mark some opcodes as specializable for stats,
|
||||||
* even though we don't specialize them yet. */
|
* even though we don't specialize them yet. */
|
||||||
fprintf(out, "opcode[%d].specializable : 1\n", FOR_ITER);
|
fprintf(out, "opcode[%d].specializable : 1\n", FOR_ITER);
|
||||||
fprintf(out, "opcode[%d].specializable : 1\n", PRECALL_FUNCTION);
|
fprintf(out, "opcode[%d].specializable : 1\n", PRECALL);
|
||||||
fprintf(out, "opcode[%d].specializable : 1\n", PRECALL_METHOD);
|
|
||||||
fprintf(out, "opcode[%d].specializable : 1\n", UNPACK_SEQUENCE);
|
fprintf(out, "opcode[%d].specializable : 1\n", UNPACK_SEQUENCE);
|
||||||
for (int i = 0; i < 256; i++) {
|
for (int i = 0; i < 256; i++) {
|
||||||
if (adaptive_opcodes[i]) {
|
if (adaptive_opcodes[i]) {
|
||||||
|
@ -1528,7 +1527,7 @@ specialize_method_descriptor(
|
||||||
}
|
}
|
||||||
assert(_list_append != NULL);
|
assert(_list_append != NULL);
|
||||||
if (nargs == 2 && descr == _list_append) {
|
if (nargs == 2 && descr == _list_append) {
|
||||||
assert(_Py_OPCODE(instr[-1]) == PRECALL_METHOD);
|
assert(_Py_OPCODE(instr[-1]) == PRECALL);
|
||||||
cache[-1].obj.obj = (PyObject *)_list_append;
|
cache[-1].obj.obj = (PyObject *)_list_append;
|
||||||
*instr = _Py_MAKECODEUNIT(CALL_NO_KW_LIST_APPEND, _Py_OPARG(*instr));
|
*instr = _Py_MAKECODEUNIT(CALL_NO_KW_LIST_APPEND, _Py_OPARG(*instr));
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue