From 9f6976b74e352d01bbfbb4b4d32465f9db5f3390 Mon Sep 17 00:00:00 2001 From: Damien George Date: Fri, 27 Nov 2015 12:50:54 +0000 Subject: [PATCH] py: Make mp_setup_code_state take concrete pointer for func arg. --- py/bc.c | 3 +-- py/bc.h | 3 ++- py/objfun.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/py/bc.c b/py/bc.c index b3d9fca6fc..909edb603b 100644 --- a/py/bc.c +++ b/py/bc.c @@ -89,10 +89,9 @@ STATIC void dump_args(const mp_obj_t *a, mp_uint_t sz) { // - code_state->ip should contain the offset in bytes from the start of // the bytecode chunk to just after n_state and n_exc_stack // - code_state->n_state should be set to the state size (locals plus stack) -void mp_setup_code_state(mp_code_state *code_state, mp_obj_t self_in, mp_uint_t n_args, mp_uint_t n_kw, const mp_obj_t *args) { +void mp_setup_code_state(mp_code_state *code_state, mp_obj_fun_bc_t *self, mp_uint_t n_args, mp_uint_t n_kw, const mp_obj_t *args) { // This function is pretty complicated. It's main aim is to be efficient in speed and RAM // usage for the common case of positional only args. - mp_obj_fun_bc_t *self = self_in; mp_uint_t n_state = code_state->n_state; // ip comes in as an offset into bytecode, so turn it into a true pointer diff --git a/py/bc.h b/py/bc.h index 0332a70074..14f5034f88 100644 --- a/py/bc.h +++ b/py/bc.h @@ -91,7 +91,8 @@ mp_uint_t mp_decode_uint(const byte **ptr); mp_vm_return_kind_t mp_execute_bytecode(mp_code_state *code_state, volatile mp_obj_t inject_exc); mp_code_state *mp_obj_fun_bc_prepare_codestate(mp_obj_t func, mp_uint_t n_args, mp_uint_t n_kw, const mp_obj_t *args); -void mp_setup_code_state(mp_code_state *code_state, mp_obj_t self_in, mp_uint_t n_args, mp_uint_t n_kw, const mp_obj_t *args); +struct _mp_obj_fun_bc_t; +void mp_setup_code_state(mp_code_state *code_state, struct _mp_obj_fun_bc_t *self, mp_uint_t n_args, mp_uint_t n_kw, const mp_obj_t *args); void mp_bytecode_print(const void *descr, const byte *code, mp_uint_t len, const mp_uint_t *const_table); void mp_bytecode_print2(const byte *code, mp_uint_t len); const byte *mp_bytecode_print_str(const byte *ip); diff --git a/py/objfun.c b/py/objfun.c index a39508e2b9..86dbe32e7f 100644 --- a/py/objfun.c +++ b/py/objfun.c @@ -231,7 +231,7 @@ STATIC mp_obj_t fun_bc_call(mp_obj_t self_in, mp_uint_t n_args, mp_uint_t n_kw, code_state->ip = (byte*)(ip - self->bytecode); // offset to after n_state/n_exc_stack code_state->n_state = n_state; - mp_setup_code_state(code_state, self_in, n_args, n_kw, args); + mp_setup_code_state(code_state, self, n_args, n_kw, args); // execute the byte code with the correct globals context code_state->old_globals = mp_globals_get();