From 519287550c184db3c3843f10e27111a006fec4b1 Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Thu, 28 Jun 2018 10:38:57 -0700 Subject: Long-live code.py itself. --- lib/utils/pyexec.c | 8 ++++++++ 1 file changed, 8 insertions(+) mode change 100644 => 100755 lib/utils/pyexec.c (limited to 'lib/utils') diff --git a/lib/utils/pyexec.c b/lib/utils/pyexec.c old mode 100644 new mode 100755 index 718c6828c..929ee5224 --- a/lib/utils/pyexec.c +++ b/lib/utils/pyexec.c @@ -33,6 +33,7 @@ #include "py/runtime.h" #include "py/repl.h" #include "py/gc.h" +#include "py/gc_long_lived.h" #include "py/frozenmod.h" #include "py/mphal.h" #if defined(USE_DEVICE_MODE) @@ -97,6 +98,13 @@ STATIC int parse_compile_execute(const void *source, mp_parse_input_kind_t input #endif } + // If the code was loaded from a file its likely to be running for a while so we'll long + // live it and collect any garbage before running. + if (input_kind == MP_PARSE_FILE_INPUT) { + module_fun = make_obj_long_lived(module_fun, 6); + gc_collect(); + } + // execute code mp_hal_set_interrupt_char(CHAR_CTRL_C); // allow ctrl-C to interrupt us start = mp_hal_ticks_ms(); -- cgit v1.2.3