py/runtime0.h: Put inplace arith ops in front of normal operations.
This is to allow to place reverse ops immediately after normal ops, so they can be tested as one range (which is optimization for reverse ops introduction in the next patch).
This commit is contained in:
parent
c460f6f15a
commit
b8ee7ab5b9
|
@ -221,7 +221,7 @@ mp_obj_t mp_obj_int_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_obj_t rhs_i
|
|||
return mp_obj_new_float(flhs / frhs);
|
||||
#endif
|
||||
|
||||
} else if (op >= MP_BINARY_OP_OR) {
|
||||
} else if (op >= MP_BINARY_OP_INPLACE_OR) {
|
||||
mp_obj_int_t *res = mp_obj_int_new_mpz();
|
||||
|
||||
switch (op) {
|
||||
|
|
|
@ -70,20 +70,6 @@ typedef enum {
|
|||
MP_BINARY_OP_IS_NOT,
|
||||
|
||||
// Arithmetic operations
|
||||
MP_BINARY_OP_OR,
|
||||
MP_BINARY_OP_XOR,
|
||||
MP_BINARY_OP_AND,
|
||||
MP_BINARY_OP_LSHIFT,
|
||||
MP_BINARY_OP_RSHIFT,
|
||||
MP_BINARY_OP_ADD,
|
||||
|
||||
MP_BINARY_OP_SUBTRACT,
|
||||
MP_BINARY_OP_MULTIPLY,
|
||||
MP_BINARY_OP_FLOOR_DIVIDE,
|
||||
MP_BINARY_OP_TRUE_DIVIDE,
|
||||
MP_BINARY_OP_MODULO,
|
||||
MP_BINARY_OP_POWER,
|
||||
|
||||
MP_BINARY_OP_INPLACE_OR,
|
||||
MP_BINARY_OP_INPLACE_XOR,
|
||||
MP_BINARY_OP_INPLACE_AND,
|
||||
|
@ -98,6 +84,20 @@ typedef enum {
|
|||
MP_BINARY_OP_INPLACE_MODULO,
|
||||
MP_BINARY_OP_INPLACE_POWER,
|
||||
|
||||
MP_BINARY_OP_OR,
|
||||
MP_BINARY_OP_XOR,
|
||||
MP_BINARY_OP_AND,
|
||||
MP_BINARY_OP_LSHIFT,
|
||||
MP_BINARY_OP_RSHIFT,
|
||||
MP_BINARY_OP_ADD,
|
||||
|
||||
MP_BINARY_OP_SUBTRACT,
|
||||
MP_BINARY_OP_MULTIPLY,
|
||||
MP_BINARY_OP_FLOOR_DIVIDE,
|
||||
MP_BINARY_OP_TRUE_DIVIDE,
|
||||
MP_BINARY_OP_MODULO,
|
||||
MP_BINARY_OP_POWER,
|
||||
|
||||
// Operations below this line don't appear in bytecode, they
|
||||
// just identify special methods.
|
||||
|
||||
|
|
|
@ -43,9 +43,9 @@ Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
|
|||
bc=\\d\+ line=126
|
||||
00 LOAD_CONST_NONE
|
||||
01 LOAD_CONST_FALSE
|
||||
02 BINARY_OP 16 __add__
|
||||
02 BINARY_OP 28 __add__
|
||||
03 LOAD_CONST_TRUE
|
||||
04 BINARY_OP 16 __add__
|
||||
04 BINARY_OP 28 __add__
|
||||
05 STORE_FAST 0
|
||||
06 LOAD_CONST_SMALL_INT 0
|
||||
07 STORE_FAST 0
|
||||
|
@ -84,7 +84,7 @@ Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
|
|||
\\d\+ STORE_FAST 7
|
||||
\\d\+ LOAD_FAST 0
|
||||
\\d\+ LOAD_DEREF 14
|
||||
\\d\+ BINARY_OP 16 __add__
|
||||
\\d\+ BINARY_OP 28 __add__
|
||||
\\d\+ STORE_FAST 8
|
||||
\\d\+ LOAD_FAST 0
|
||||
\\d\+ UNARY_OP 4
|
||||
|
@ -132,7 +132,7 @@ Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
|
|||
\\d\+ DUP_TOP_TWO
|
||||
\\d\+ LOAD_SUBSCR
|
||||
\\d\+ LOAD_FAST 12
|
||||
\\d\+ BINARY_OP 28 __iadd__
|
||||
\\d\+ BINARY_OP 16 __iadd__
|
||||
\\d\+ ROT_THREE
|
||||
\\d\+ STORE_SUBSCR
|
||||
\\d\+ LOAD_DEREF 14
|
||||
|
@ -369,7 +369,7 @@ Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
|
|||
42 STORE_FAST_N 19
|
||||
44 LOAD_FAST 9
|
||||
45 LOAD_FAST_N 19
|
||||
47 BINARY_OP 16 __add__
|
||||
47 BINARY_OP 28 __add__
|
||||
48 POP_TOP
|
||||
49 LOAD_CONST_NONE
|
||||
50 RETURN_VALUE
|
||||
|
@ -521,7 +521,7 @@ arg names: *
|
|||
bc=\\d\+ line=113
|
||||
00 LOAD_DEREF 0
|
||||
02 LOAD_CONST_SMALL_INT 1
|
||||
03 BINARY_OP 16 __add__
|
||||
03 BINARY_OP 28 __add__
|
||||
04 STORE_FAST 1
|
||||
05 LOAD_CONST_SMALL_INT 1
|
||||
06 STORE_DEREF 0
|
||||
|
@ -540,7 +540,7 @@ arg names: * b
|
|||
bc=\\d\+ line=139
|
||||
00 LOAD_FAST 1
|
||||
01 LOAD_DEREF 0
|
||||
03 BINARY_OP 16 __add__
|
||||
03 BINARY_OP 28 __add__
|
||||
04 RETURN_VALUE
|
||||
mem: total=\\d\+, current=\\d\+, peak=\\d\+
|
||||
stack: \\d\+ out of \\d\+
|
||||
|
|
Loading…
Reference in New Issue