diff options
author | Damien George <damien.p.george@gmail.com> | 2015-11-13 13:38:28 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2015-11-20 12:30:37 +0000 |
commit | d4dba8823655c2715867f4d64e407de390c9d29e (patch) | |
tree | d1161baf36d6af39738fbe58b1343c67803b1dc3 /py/compile.c | |
parent | f5c554dfe3da8564196a7bd65233171f40b7f8d4 (diff) |
py/compile: Add mp_compile_to_raw_code() to return raw code object.
This can then be passed to mp_raw_code_save_file to save a .mpy file.
Diffstat (limited to 'py/compile.c')
-rw-r--r-- | py/compile.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/py/compile.c b/py/compile.c index 10c3e2f48..e15e7b3b8 100644 --- a/py/compile.c +++ b/py/compile.c @@ -3090,7 +3090,10 @@ STATIC void scope_compute_things(scope_t *scope) { } } -mp_obj_t mp_compile(mp_parse_tree_t *parse_tree, qstr source_file, uint emit_opt, bool is_repl) { +#if !MICROPY_PERSISTENT_CODE_SAVE +STATIC +#endif +mp_raw_code_t *mp_compile_to_raw_code(mp_parse_tree_t *parse_tree, qstr source_file, uint emit_opt, bool is_repl) { // put compiler state on the stack, it's relatively small compiler_t comp_state = {0}; compiler_t *comp = &comp_state; @@ -3263,7 +3266,12 @@ mp_obj_t mp_compile(mp_parse_tree_t *parse_tree, qstr source_file, uint emit_opt if (comp->compile_error != MP_OBJ_NULL) { nlr_raise(comp->compile_error); } else { - // return function that executes the outer module - return mp_make_function_from_raw_code(outer_raw_code, MP_OBJ_NULL, MP_OBJ_NULL); + return outer_raw_code; } } + +mp_obj_t mp_compile(mp_parse_tree_t *parse_tree, qstr source_file, uint emit_opt, bool is_repl) { + mp_raw_code_t *rc = mp_compile_to_raw_code(parse_tree, source_file, emit_opt, is_repl); + // return function that executes the outer module + return mp_make_function_from_raw_code(rc, MP_OBJ_NULL, MP_OBJ_NULL); +} |