summaryrefslogtreecommitdiffstatshomepage
path: root/py/emitnative.c
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-01-24 16:20:11 +0200
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-01-24 16:31:20 +0200
commitf46d87a30d09bfa904c2b9769ea52271abb86b0c (patch)
treef5fb8aa053f3e3e00843b990e0d49da56d1f2dbc /py/emitnative.c
parent2b2cb7b7f4f467b67082f79053118df78f48e66e (diff)
downloadmicropython-f46d87a30d09bfa904c2b9769ea52271abb86b0c.tar.gz
micropython-f46d87a30d09bfa904c2b9769ea52271abb86b0c.zip
Add support for freeing code emitter objects at the end of compilation.
Diffstat (limited to 'py/emitnative.c')
-rw-r--r--py/emitnative.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/py/emitnative.c b/py/emitnative.c
index 6fc1742489..ddda90659e 100644
--- a/py/emitnative.c
+++ b/py/emitnative.c
@@ -146,6 +146,15 @@ emit_t *EXPORT_FUN(new)(uint max_num_labels) {
return emit;
}
+static void emit_native_free(emit_t *emit) {
+#if N_X64
+ asm_x64_free(emit->as, false);
+#elif N_THUMB
+ asm_thumb_free(emit->as, false);
+#endif
+ m_del_obj(emit_t, emit);
+}
+
static void emit_native_set_viper_types(emit_t *emit, bool do_viper_types) {
emit->do_viper_types = do_viper_types;
}
@@ -1226,6 +1235,8 @@ static void emit_native_yield_from(emit_t *emit) {
}
const emit_method_table_t EXPORT_FUN(method_table) = {
+ emit_native_free,
+
emit_native_set_viper_types,
emit_native_start_pass,
emit_native_end_pass,