From d2d64f00fb7f1487c1fa21a456e003a801d7e711 Mon Sep 17 00:00:00 2001 From: Damien George Date: Wed, 14 Jan 2015 21:32:42 +0000 Subject: py: Add "default" to switches to allow better code flow analysis. This helps compiler produce smaller code. Saves 124 bytes on stmhal and bare-arm. --- py/objgenerator.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) (limited to 'py/objgenerator.c') diff --git a/py/objgenerator.c b/py/objgenerator.c index 1b06975c9..a4d22aa8d 100644 --- a/py/objgenerator.c +++ b/py/objgenerator.c @@ -120,6 +120,7 @@ mp_vm_return_kind_t mp_obj_gen_resume(mp_obj_t self_in, mp_obj_t send_value, mp_ switch (ret_kind) { case MP_VM_RETURN_NORMAL: + default: // Explicitly mark generator as completed. If we don't do this, // subsequent next() may re-execute statements after last yield // again and again, leading to side effects. @@ -137,11 +138,6 @@ mp_vm_return_kind_t mp_obj_gen_resume(mp_obj_t self_in, mp_obj_t send_value, mp_ self->code_state.ip = 0; *ret_val = self->code_state.state[self->code_state.n_state - 1]; break; - - default: - assert(0); - *ret_val = mp_const_none; - break; } return ret_kind; @@ -151,6 +147,7 @@ STATIC mp_obj_t gen_resume_and_raise(mp_obj_t self_in, mp_obj_t send_value, mp_o mp_obj_t ret; switch (mp_obj_gen_resume(self_in, send_value, throw_value, &ret)) { case MP_VM_RETURN_NORMAL: + default: // Optimize return w/o value in case generator is used in for loop if (ret == mp_const_none || ret == MP_OBJ_STOP_ITERATION) { return MP_OBJ_STOP_ITERATION; @@ -173,10 +170,6 @@ STATIC mp_obj_t gen_resume_and_raise(mp_obj_t self_in, mp_obj_t send_value, mp_o } else { nlr_raise(ret); } - - default: - assert(0); - return mp_const_none; } } -- cgit v1.2.3