aboutsummaryrefslogtreecommitdiff
path: root/py/emit.h
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2015-06-25 14:42:13 +0000
committerDamien George <damien.p.george@gmail.com>2015-06-25 14:42:13 +0000
commit59fba2d6ea31c134c9c0b88dc73cd25b236f167c (patch)
tree58038f6437d92ea5bf7b5395175c8e844e169556 /py/emit.h
parented570e4b2a0a68e43b191fb0d5b45fb2ec83aca4 (diff)
py: Remove mp_load_const_bytes and instead load precreated bytes object.
Previous to this patch each time a bytes object was referenced a new instance (with the same data) was created. With this patch a single bytes object is created in the compiler and is loaded directly at execute time as a true constant (similar to loading bignum and float objects). This saves on allocating RAM and means that bytes objects can now be used when the memory manager is locked (eg in interrupts). The MP_BC_LOAD_CONST_BYTES bytecode was removed as part of this. Generated bytecode is slightly larger due to storing a pointer to the bytes object instead of the qstr identifier. Code size is reduced by about 60 bytes on Thumb2 architectures.
Diffstat (limited to 'py/emit.h')
-rw-r--r--py/emit.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/py/emit.h b/py/emit.h
index 35ba08db9..8b980c102 100644
--- a/py/emit.h
+++ b/py/emit.h
@@ -84,7 +84,7 @@ typedef struct _emit_method_table_t {
void (*import_star)(emit_t *emit);
void (*load_const_tok)(emit_t *emit, mp_token_kind_t tok);
void (*load_const_small_int)(emit_t *emit, mp_int_t arg);
- void (*load_const_str)(emit_t *emit, qstr qst, bool bytes);
+ void (*load_const_str)(emit_t *emit, qstr qst);
void (*load_const_obj)(emit_t *emit, void *obj);
void (*load_null)(emit_t *emit);
void (*load_attr)(emit_t *emit, qstr qst);
@@ -212,7 +212,7 @@ void mp_emit_bc_import_from(emit_t *emit, qstr qst);
void mp_emit_bc_import_star(emit_t *emit);
void mp_emit_bc_load_const_tok(emit_t *emit, mp_token_kind_t tok);
void mp_emit_bc_load_const_small_int(emit_t *emit, mp_int_t arg);
-void mp_emit_bc_load_const_str(emit_t *emit, qstr qst, bool bytes);
+void mp_emit_bc_load_const_str(emit_t *emit, qstr qst);
void mp_emit_bc_load_const_obj(emit_t *emit, void *obj);
void mp_emit_bc_load_null(emit_t *emit);
void mp_emit_bc_load_attr(emit_t *emit, qstr qst);