diff options
| author | Damien George <damien.p.george@gmail.com> | 2015-04-06 22:38:53 +0100 |
|---|---|---|
| committer | Damien George <damien.p.george@gmail.com> | 2015-04-07 22:43:28 +0100 |
| commit | 9988618e0e0f5c319e31b135d993e22efb593093 (patch) | |
| tree | d89d8df392ce2669c9e516a05b11742e72dc8cf2 /py/objgenerator.c | |
| parent | 18bd51707c218137005cd73cb5a35ebfe2bccd6e (diff) | |
py: Implement full func arg passing for native emitter.
This patch gets full function argument passing working with native
emitter. Includes named args, keyword args, default args, var args
and var keyword args. Fully Python compliant.
It reuses the bytecode mp_setup_code_state function to do all the hard
work. This function is slightly adjusted to accommodate native calls,
and the native emitter is forced a bit to emit similar prelude and
code-info as bytecode.
Diffstat (limited to 'py/objgenerator.c')
| -rw-r--r-- | py/objgenerator.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/py/objgenerator.c b/py/objgenerator.c index 112becb46..f672b8d99 100644 --- a/py/objgenerator.c +++ b/py/objgenerator.c @@ -73,7 +73,8 @@ STATIC mp_obj_t gen_wrap_call(mp_obj_t self_in, mp_uint_t n_args, mp_uint_t n_kw o->globals = self_fun->globals; o->code_state.n_state = n_state; - o->code_state.ip = ip; + o->code_state.code_info = 0; // offset to code-info + o->code_state.ip = (byte*)(ip - self_fun->bytecode); // offset to prelude mp_setup_code_state(&o->code_state, self_fun, n_args, n_kw, args); return o; } |
