diff options
author | Damien George <damien.p.george@gmail.com> | 2015-04-07 00:08:17 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2015-04-07 00:08:17 +0100 |
commit | c9aa1883ed87da61d5745036dc55c382c3f4d6ca (patch) | |
tree | d4967e844be00547c329f38606f4ac3fc7fc4728 /py/bc.c | |
parent | 78772ada0ddc9222c0338f94a42e33e10bb24b55 (diff) |
py: Simplify bytecode prelude when encoding closed over variables.
Diffstat (limited to 'py/bc.c')
-rw-r--r-- | py/bc.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -228,9 +228,10 @@ continue2:; // bytecode prelude: initialise closed over variables const byte *ip = code_state->ip; - for (mp_uint_t n_local = *ip++; n_local > 0; n_local--) { - mp_uint_t local_num = *ip++; - code_state->state[n_state - 1 - local_num] = mp_obj_new_cell(code_state->state[n_state - 1 - local_num]); + mp_uint_t local_num; + while ((local_num = *ip++) != 255) { + code_state->state[n_state - 1 - local_num] = + mp_obj_new_cell(code_state->state[n_state - 1 - local_num]); } // now that we skipped over the prelude, set the ip for the VM |