py/vm: Make small optimisation of BUILD_SLICE opcode.

No need to call DECODE_UINT since the value will always be either 2 or 3.
pull/4191/merge
Damien George 2018-09-27 11:22:33 +10:00
rodzic 57a7d5be9a
commit 76355c8863
1 zmienionych plików z 7 dodań i 10 usunięć

17
py/vm.c
Wyświetl plik

@ -817,17 +817,14 @@ unwind_jump:;
#if MICROPY_PY_BUILTINS_SLICE
ENTRY(MP_BC_BUILD_SLICE): {
MARK_EXC_IP_SELECTIVE();
DECODE_UINT;
if (unum == 2) {
mp_obj_t stop = POP();
mp_obj_t start = TOP();
SET_TOP(mp_obj_new_slice(start, stop, mp_const_none));
} else {
mp_obj_t step = POP();
mp_obj_t stop = POP();
mp_obj_t start = TOP();
SET_TOP(mp_obj_new_slice(start, stop, step));
mp_obj_t step = mp_const_none;
if (*ip++ == 3) {
// 3-argument slice includes step
step = POP();
}
mp_obj_t stop = POP();
mp_obj_t start = TOP();
SET_TOP(mp_obj_new_slice(start, stop, step));
DISPATCH();
}
#endif