diff options
author | Damien George <damien.p.george@gmail.com> | 2019-08-22 14:36:27 +1000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2019-08-22 15:10:25 +1000 |
commit | 3d9bd80447c0834fae6746d45a0b45b3eb9cda6c (patch) | |
tree | 5af456cf04dfd9080211255dd32e9c7b67c3cb9a /py/emitbc.c | |
parent | 96ace8082e409c582911239ee913a95d955058bf (diff) | |
download | micropython-3d9bd80447c0834fae6746d45a0b45b3eb9cda6c.tar.gz micropython-3d9bd80447c0834fae6746d45a0b45b3eb9cda6c.zip |
py/emitbc: Rewrite switch in load_const_tok to reduce code size.
Diffstat (limited to 'py/emitbc.c')
-rw-r--r-- | py/emitbc.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/py/emitbc.c b/py/emitbc.c index 35eb6df9c0..bb05169da3 100644 --- a/py/emitbc.c +++ b/py/emitbc.c @@ -524,15 +524,13 @@ void mp_emit_bc_import(emit_t *emit, qstr qst, int kind) { } void mp_emit_bc_load_const_tok(emit_t *emit, mp_token_kind_t tok) { + MP_STATIC_ASSERT(MP_BC_LOAD_CONST_FALSE + (MP_TOKEN_KW_NONE - MP_TOKEN_KW_FALSE) == MP_BC_LOAD_CONST_NONE); + MP_STATIC_ASSERT(MP_BC_LOAD_CONST_FALSE + (MP_TOKEN_KW_TRUE - MP_TOKEN_KW_FALSE) == MP_BC_LOAD_CONST_TRUE); emit_bc_pre(emit, 1); - switch (tok) { - case MP_TOKEN_KW_FALSE: emit_write_bytecode_byte(emit, MP_BC_LOAD_CONST_FALSE); break; - case MP_TOKEN_KW_NONE: emit_write_bytecode_byte(emit, MP_BC_LOAD_CONST_NONE); break; - case MP_TOKEN_KW_TRUE: emit_write_bytecode_byte(emit, MP_BC_LOAD_CONST_TRUE); break; - default: - assert(tok == MP_TOKEN_ELLIPSIS); - emit_write_bytecode_byte_obj(emit, MP_BC_LOAD_CONST_OBJ, MP_OBJ_FROM_PTR(&mp_const_ellipsis_obj)); - break; + if (tok == MP_TOKEN_ELLIPSIS) { + emit_write_bytecode_byte_obj(emit, MP_BC_LOAD_CONST_OBJ, MP_OBJ_FROM_PTR(&mp_const_ellipsis_obj)); + } else { + emit_write_bytecode_byte(emit, MP_BC_LOAD_CONST_FALSE + (tok - MP_TOKEN_KW_FALSE)); } } |