diff options
author | Damien George <damien.p.george@gmail.com> | 2014-01-14 15:13:40 -0800 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-01-14 15:13:40 -0800 |
commit | 6c2401e935b38ca87fd8f52efbb614a428b6938c (patch) | |
tree | 9314200eddfd45d99491cb29f47533404ef030f5 /py/vm.c | |
parent | 8bc96471f0219b9d3f24ae879f60b509927e1df4 (diff) | |
parent | 93451002f04e0b89e41e1faa82f86e937bb219f1 (diff) | |
download | micropython-6c2401e935b38ca87fd8f52efbb614a428b6938c.tar.gz micropython-6c2401e935b38ca87fd8f52efbb614a428b6938c.zip |
Merge pull request #165 from chipaca/builtins
added zip()
Diffstat (limited to 'py/vm.c')
-rw-r--r-- | py/vm.c | 15 |
1 files changed, 11 insertions, 4 deletions
@@ -440,10 +440,17 @@ bool mp_execute_byte_code_2(const byte **ip_in_out, mp_obj_t *fastn, mp_obj_t ** case MP_BC_CALL_FUNCTION: DECODE_UINT; - assert((unum & 0xff00) == 0); // n_keyword - unum &= 0xff; // n_positional - sp += unum; - *sp = rt_call_function_n(*sp, unum, sp - unum); + if ((unum & 0xff00) == 0) { + // no keywords + unum &= 0xff; // n_positional + sp += unum; + *sp = rt_call_function_n(*sp, unum, sp - unum); + } else { + // keywords + int argsize = (unum & 0xff) + ((unum >> 7) & 0x1fe); + sp += argsize; + *sp = rt_call_function_n_kw(*sp, unum & 0xff, (unum >> 8) & 0xff, sp - argsize); + } break; case MP_BC_CALL_METHOD: |