summaryrefslogtreecommitdiffstatshomepage
path: root/py/runtime.c
diff options
context:
space:
mode:
Diffstat (limited to 'py/runtime.c')
-rw-r--r--py/runtime.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/py/runtime.c b/py/runtime.c
index 4ac680562c..b133b31e06 100644
--- a/py/runtime.c
+++ b/py/runtime.c
@@ -772,6 +772,17 @@ py_obj_t rt_call_function_1(py_obj_t fun, py_obj_t arg) {
assert(o->u_fun_bc.n_args == 1);
DEBUG_OP_printf("calling byte code %p with 1 arg\n", o->u_fun_bc.code);
return py_execute_byte_code(o->u_fun_bc.code, o->u_fun_bc.len, &arg, 1);
+ } else if (IS_O(fun, O_FUN_ASM)) {
+ py_obj_base_t *o = fun;
+ assert(o->u_fun_asm.n_args == 1);
+ DEBUG_OP_printf("calling inline asm %p with 1 arg\n", o->u_fun_asm.fun);
+ machine_int_t arg_val;
+ if (IS_SMALL_INT(arg)) {
+ arg_val = FROM_SMALL_INT(arg);
+ } else {
+ arg_val = arg;
+ }
+ return ((py_fun_1_t)o->u_fun_asm.fun)(arg_val);
} else if (IS_O(fun, O_BOUND_METH)) {
py_obj_base_t *o = fun;
return rt_call_function_2(o->u_bound_meth.meth, o->u_bound_meth.self, arg);