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 #if MICROPY_PY_BUILTINS_SLICE
ENTRY(MP_BC_BUILD_SLICE): { ENTRY(MP_BC_BUILD_SLICE): {
MARK_EXC_IP_SELECTIVE(); MARK_EXC_IP_SELECTIVE();
DECODE_UINT; mp_obj_t step = mp_const_none;
if (unum == 2) { if (*ip++ == 3) {
mp_obj_t stop = POP(); // 3-argument slice includes step
mp_obj_t start = TOP(); step = POP();
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 stop = POP();
mp_obj_t start = TOP();
SET_TOP(mp_obj_new_slice(start, stop, step));
DISPATCH(); DISPATCH();
} }
#endif #endif