aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Sokolovsky2017-09-08 00:10:10 +0300
committerPaul Sokolovsky2017-09-08 00:10:10 +0300
commitb8ee7ab5b988f424e34e778fe3a679710d675efa (patch)
tree82191926bbaef91a9ea4bd6497378f498ff6ca63
parentc460f6f15af681860f7606761da7579c9945761b (diff)
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).
-rw-r--r--py/objint_mpz.c2
-rw-r--r--py/runtime0.h28
-rw-r--r--tests/cmdline/cmd_showbc.py.exp14
3 files changed, 22 insertions, 22 deletions
diff --git a/py/objint_mpz.c b/py/objint_mpz.c
index c7a3074ba..0e318b492 100644
--- a/py/objint_mpz.c
+++ b/py/objint_mpz.c
@@ -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) {
diff --git a/py/runtime0.h b/py/runtime0.h
index b34211d57..3cf5e530d 100644
--- a/py/runtime0.h
+++ b/py/runtime0.h
@@ -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.
diff --git a/tests/cmdline/cmd_showbc.py.exp b/tests/cmdline/cmd_showbc.py.exp
index 0919aac53..0e66a013d 100644
--- a/tests/cmdline/cmd_showbc.py.exp
+++ b/tests/cmdline/cmd_showbc.py.exp
@@ -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\+