diff options
author | Damien George <damien.p.george@gmail.com> | 2014-08-28 23:37:02 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-08-28 23:37:02 +0100 |
commit | 110ba35980d03da2e744a8aadd85d08c0c06a23b (patch) | |
tree | 5969d8ae43712976882c2a8470a7b02e153f0602 /py/runtime.c | |
parent | 1ac6faa73218d3049b3e8e8f008dbfdc756628cb (diff) |
py: Move native glue code from runtime.c to new file nativeglue.c.v1.3.1
This way, the native glue code is only compiled if native code is
enabled (which makes complete sense; thanks to Paul Sokolovsky for
the idea).
Should fix issue #834.
Diffstat (limited to 'py/runtime.c')
-rw-r--r-- | py/runtime.c | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/py/runtime.c b/py/runtime.c index 8dbdac9d9..68033675b 100644 --- a/py/runtime.c +++ b/py/runtime.c @@ -1156,91 +1156,3 @@ void *m_malloc_fail(int num_bytes) { NORETURN void mp_not_implemented(const char *msg) { nlr_raise(mp_obj_new_exception_msg(&mp_type_NotImplementedError, msg)); } - -// convert a Micro Python object to a valid native value based on type -mp_uint_t mp_convert_obj_to_native(mp_obj_t obj, mp_uint_t type) { - DEBUG_printf("mp_convert_obj_to_native(%p, " UINT_FMT ")\n", obj, type); - switch (type & 3) { - case MP_NATIVE_TYPE_OBJ: return (mp_uint_t)obj; - case MP_NATIVE_TYPE_BOOL: - case MP_NATIVE_TYPE_INT: - case MP_NATIVE_TYPE_UINT: return mp_obj_get_int(obj); - default: assert(0); return 0; - } -} - -// convert a native value to a Micro Python object based on type -mp_obj_t mp_convert_native_to_obj(mp_uint_t val, mp_uint_t type) { - DEBUG_printf("mp_convert_native_to_obj(" UINT_FMT ", " UINT_FMT ")\n", val, type); - switch (type & 3) { - case MP_NATIVE_TYPE_OBJ: return (mp_obj_t)val; - case MP_NATIVE_TYPE_BOOL: return MP_BOOL(val); - case MP_NATIVE_TYPE_INT: return mp_obj_new_int(val); - case MP_NATIVE_TYPE_UINT: return mp_obj_new_int_from_uint(val); - default: assert(0); return mp_const_none; - } -} - -// wrapper that accepts n_args and n_kw in one argument -// (native emitter can only pass at most 3 arguments to a function) -mp_obj_t mp_native_call_function_n_kw(mp_obj_t fun_in, uint n_args_kw, const mp_obj_t *args) { - return mp_call_function_n_kw(fun_in, n_args_kw & 0xff, (n_args_kw >> 8) & 0xff, args); -} - -// wrapper that makes raise obj and raises it -NORETURN void mp_native_raise(mp_obj_t o) { - nlr_raise(mp_make_raise_obj(o)); -} - -// these must correspond to the respective enum in runtime0.h -void *const mp_fun_table[MP_F_NUMBER_OF] = { - mp_convert_obj_to_native, - mp_convert_native_to_obj, - mp_load_const_int, - mp_load_const_dec, - mp_load_const_str, - mp_load_const_bytes, - mp_load_name, - mp_load_global, - mp_load_build_class, - mp_load_attr, - mp_load_method, - mp_store_name, - mp_store_global, - mp_store_attr, - mp_obj_subscr, - mp_obj_is_true, - mp_unary_op, - mp_binary_op, - mp_obj_new_tuple, - mp_obj_new_list, - mp_obj_list_append, - mp_obj_new_dict, - mp_obj_dict_store, -#if MICROPY_PY_BUILTINS_SET - mp_obj_new_set, - mp_obj_set_store, -#endif - mp_make_function_from_raw_code, - mp_native_call_function_n_kw, - mp_call_method_n_kw, - mp_getiter, - mp_iternext, - nlr_push, - nlr_pop, - mp_native_raise, - mp_import_name, - mp_import_from, - mp_import_all, -#if MICROPY_PY_BUILTINS_SLICE - mp_obj_new_slice, -#endif - mp_unpack_sequence, - mp_unpack_ex, -}; - -/* -void mp_f_vector(mp_fun_kind_t fun_kind) { - (mp_f_table[fun_kind])(); -} -*/ |