diff options
author | Damien George <damien.p.george@gmail.com> | 2018-05-22 21:31:56 +1000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2018-05-23 00:22:55 +1000 |
commit | a4941a8ba49e3503f1a87f318b79b137a70b803b (patch) | |
tree | c154376ee020eb2c5c95db1687a0c0cbaad86f87 /py/emit.h | |
parent | d298013939b38fb05961cf05c03ac3aef6a4f00c (diff) |
py/emit: Combine load/store/delete subscr into one emit function.
Reduces code size by:
bare-arm: -8
minimal x86: -104
unix x64: -312
unix nanbox: -120
stm32: -60
cc3200: -16
esp8266: -92
esp32: -24
Diffstat (limited to 'py/emit.h')
-rw-r--r-- | py/emit.h | 13 |
1 files changed, 7 insertions, 6 deletions
@@ -63,6 +63,11 @@ typedef enum { #define MP_EMIT_IDOP_GLOBAL_NAME (0) #define MP_EMIT_IDOP_GLOBAL_GLOBAL (1) +// Kind for emit->subscr() +#define MP_EMIT_SUBSCR_LOAD (0) +#define MP_EMIT_SUBSCR_STORE (1) +#define MP_EMIT_SUBSCR_DELETE (2) + // Kind for emit->build() #define MP_EMIT_BUILD_TUPLE (0) #define MP_EMIT_BUILD_LIST (1) @@ -103,11 +108,9 @@ typedef struct _emit_method_table_t { void (*load_attr)(emit_t *emit, qstr qst); void (*load_method)(emit_t *emit, qstr qst, bool is_super); void (*load_build_class)(emit_t *emit); - void (*load_subscr)(emit_t *emit); + void (*subscr)(emit_t *emit, int kind); void (*store_attr)(emit_t *emit, qstr qst); - void (*store_subscr)(emit_t *emit); void (*delete_attr)(emit_t *emit, qstr qst); - void (*delete_subscr)(emit_t *emit); void (*dup_top)(emit_t *emit); void (*dup_top_two)(emit_t *emit); void (*pop_top)(emit_t *emit); @@ -211,11 +214,9 @@ void mp_emit_bc_load_null(emit_t *emit); void mp_emit_bc_load_attr(emit_t *emit, qstr qst); void mp_emit_bc_load_method(emit_t *emit, qstr qst, bool is_super); void mp_emit_bc_load_build_class(emit_t *emit); -void mp_emit_bc_load_subscr(emit_t *emit); +void mp_emit_bc_subscr(emit_t *emit, int kind); void mp_emit_bc_store_attr(emit_t *emit, qstr qst); -void mp_emit_bc_store_subscr(emit_t *emit); void mp_emit_bc_delete_attr(emit_t *emit, qstr qst); -void mp_emit_bc_delete_subscr(emit_t *emit); void mp_emit_bc_dup_top(emit_t *emit); void mp_emit_bc_dup_top_two(emit_t *emit); void mp_emit_bc_pop_top(emit_t *emit); |