summaryrefslogtreecommitdiff
path: root/py/bc.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2015-04-07 00:08:17 +0100
committerDamien George <damien.p.george@gmail.com>2015-04-07 00:08:17 +0100
commitc9aa1883ed87da61d5745036dc55c382c3f4d6ca (patch)
treed4967e844be00547c329f38606f4ac3fc7fc4728 /py/bc.c
parent78772ada0ddc9222c0338f94a42e33e10bb24b55 (diff)
py: Simplify bytecode prelude when encoding closed over variables.
Diffstat (limited to 'py/bc.c')
-rw-r--r--py/bc.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/py/bc.c b/py/bc.c
index af855e947..865065ab1 100644
--- a/py/bc.c
+++ b/py/bc.c
@@ -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