diff --git a/py/asmarm.h b/py/asmarm.h
index 219f88c53a76aadfa52e363bfd3a1e96fb1101b3..58a13cc83e7d85a1e514fce9adf34711b24ed2c6 100644
--- a/py/asmarm.h
+++ b/py/asmarm.h
@@ -174,7 +174,7 @@ void asm_arm_bx_reg(asm_arm_t *as, uint reg_src);
         asm_arm_bcc_label(as, ASM_ARM_CC_EQ, label); \
     } while (0)
 #define ASM_JUMP_REG(as, reg) asm_arm_bx_reg((as), (reg))
-#define ASM_CALL_IND(as, ptr, idx) asm_arm_bl_ind(as, idx, ASM_ARM_REG_R3)
+#define ASM_CALL_IND(as, idx) asm_arm_bl_ind(as, idx, ASM_ARM_REG_R3)
 
 #define ASM_MOV_LOCAL_REG(as, local_num, reg_src) asm_arm_mov_local_reg((as), (local_num), (reg_src))
 #define ASM_MOV_REG_IMM(as, reg_dest, imm) asm_arm_mov_reg_i32((as), (reg_dest), (imm))
diff --git a/py/asmthumb.h b/py/asmthumb.h
index 8db350fd0e6e3a3cee98757a29fe79d4ced2babd..9a44a78cae2b1393bbc32a81bd9a3caa92cffbcb 100644
--- a/py/asmthumb.h
+++ b/py/asmthumb.h
@@ -311,7 +311,7 @@ void asm_thumb_bl_ind(asm_thumb_t *as, uint fun_id, uint reg_temp); // convenien
         asm_thumb_bcc_label(as, ASM_THUMB_CC_EQ, label); \
     } while (0)
 #define ASM_JUMP_REG(as, reg) asm_thumb_bx_reg((as), (reg))
-#define ASM_CALL_IND(as, ptr, idx) asm_thumb_bl_ind(as, idx, ASM_THUMB_REG_R3)
+#define ASM_CALL_IND(as, idx) asm_thumb_bl_ind(as, idx, ASM_THUMB_REG_R3)
 
 #define ASM_MOV_LOCAL_REG(as, local_num, reg) asm_thumb_mov_local_reg((as), (local_num), (reg))
 #define ASM_MOV_REG_IMM(as, reg_dest, imm) asm_thumb_mov_reg_i32_optimised((as), (reg_dest), (imm))
diff --git a/py/asmx64.h b/py/asmx64.h
index 76e3ad55662b4a0a74b579dd77319faf0dbbf7c9..1c8755a84c503c47b02841a0feeca6210e1fdadc 100644
--- a/py/asmx64.h
+++ b/py/asmx64.h
@@ -177,7 +177,7 @@ void asm_x64_call_ind(asm_x64_t* as, size_t fun_id, int temp_r32);
         asm_x64_jcc_label(as, ASM_X64_CC_JE, label); \
     } while (0)
 #define ASM_JUMP_REG(as, reg) asm_x64_jmp_reg((as), (reg))
-#define ASM_CALL_IND(as, ptr, idx) asm_x64_call_ind(as, idx, ASM_X64_REG_RAX)
+#define ASM_CALL_IND(as, idx) asm_x64_call_ind(as, idx, ASM_X64_REG_RAX)
 
 #define ASM_MOV_LOCAL_REG(as, local_num, reg_src) asm_x64_mov_r64_to_local((as), (reg_src), (local_num))
 #define ASM_MOV_REG_IMM(as, reg_dest, imm) asm_x64_mov_i64_to_r64_optimised((as), (imm), (reg_dest))
diff --git a/py/asmx86.h b/py/asmx86.h
index 1e3d3170a843a9d7ab6f6317276822ea9832cceb..82a8629ddfa174fd0a61a07c65559e86618e06bb 100644
--- a/py/asmx86.h
+++ b/py/asmx86.h
@@ -175,7 +175,7 @@ void asm_x86_call_ind(asm_x86_t* as, size_t fun_id, mp_uint_t n_args, int temp_r
         asm_x86_jcc_label(as, ASM_X86_CC_JE, label); \
     } while (0)
 #define ASM_JUMP_REG(as, reg) asm_x86_jmp_reg((as), (reg))
-#define ASM_CALL_IND(as, ptr, idx) asm_x86_call_ind(as, idx, mp_f_n_args[idx], ASM_X86_REG_EAX)
+#define ASM_CALL_IND(as, idx) asm_x86_call_ind(as, idx, mp_f_n_args[idx], ASM_X86_REG_EAX)
 
 #define ASM_MOV_LOCAL_REG(as, local_num, reg_src) asm_x86_mov_r32_to_local((as), (reg_src), (local_num))
 #define ASM_MOV_REG_IMM(as, reg_dest, imm) asm_x86_mov_i32_to_r32((as), (imm), (reg_dest))
diff --git a/py/asmxtensa.h b/py/asmxtensa.h
index c348b854b809700bdb28272759458a0e6d437701..a595dc2b5af114c7f4a88c92a2879a9bb85a874c 100644
--- a/py/asmxtensa.h
+++ b/py/asmxtensa.h
@@ -286,7 +286,7 @@ void asm_xtensa_call_ind(asm_xtensa_t *as, uint idx);
 #define ASM_JUMP_IF_REG_EQ(as, reg1, reg2, label) \
     asm_xtensa_bcc_reg_reg_label(as, ASM_XTENSA_CC_EQ, reg1, reg2, label)
 #define ASM_JUMP_REG(as, reg) asm_xtensa_op_jx((as), (reg))
-#define ASM_CALL_IND(as, ptr, idx) asm_xtensa_call_ind((as), (idx))
+#define ASM_CALL_IND(as, idx) asm_xtensa_call_ind((as), (idx))
 
 #define ASM_MOV_LOCAL_REG(as, local_num, reg_src) asm_xtensa_mov_local_reg((as), (local_num), (reg_src))
 #define ASM_MOV_REG_IMM(as, reg_dest, imm) asm_xtensa_mov_reg_i32((as), (reg_dest), (imm))
diff --git a/py/emitnative.c b/py/emitnative.c
index 283959271dcfff2d0f1fb2faae822ab1619df07d..5f461ac33543e33b521a1857631e688bfb43df04 100644
--- a/py/emitnative.c
+++ b/py/emitnative.c
@@ -402,7 +402,7 @@ STATIC void emit_native_start_pass(emit_t *emit, pass_kind_t pass, scope_t *scop
         ASM_JUMP_IF_REG_EQ(emit->as, REG_ARG_1, REG_ARG_3, *emit->label_slot + 5);
         mp_asm_base_label_assign(&emit->as->base, *emit->label_slot + 4);
         ASM_MOV_REG_IMM(emit->as, REG_ARG_3, MP_OBJ_FUN_MAKE_SIG(scope->num_pos_args, scope->num_pos_args, false));
-        ASM_CALL_IND(emit->as, mp_fun_table[MP_F_ARG_CHECK_NUM_SIG], MP_F_ARG_CHECK_NUM_SIG);
+        ASM_CALL_IND(emit->as, MP_F_ARG_CHECK_NUM_SIG);
         mp_asm_base_label_assign(&emit->as->base, *emit->label_slot + 5);
 
         // Store arguments into locals (reg or stack), converting to native if needed
@@ -491,7 +491,7 @@ STATIC void emit_native_start_pass(emit_t *emit, pass_kind_t pass, scope_t *scop
             #elif N_ARM
             asm_arm_bl_ind(emit->as, MP_F_SETUP_CODE_STATE, ASM_ARM_REG_R4);
             #else
-            ASM_CALL_IND(emit->as, mp_fun_table[MP_F_SETUP_CODE_STATE], MP_F_SETUP_CODE_STATE);
+            ASM_CALL_IND(emit->as, MP_F_SETUP_CODE_STATE);
             #endif
         }
 
@@ -837,20 +837,20 @@ STATIC void emit_post_push_reg_reg_reg_reg(emit_t *emit, vtype_kind_t vtypea, in
 
 STATIC void emit_call(emit_t *emit, mp_fun_kind_t fun_kind) {
     need_reg_all(emit);
-    ASM_CALL_IND(emit->as, mp_fun_table[fun_kind], fun_kind);
+    ASM_CALL_IND(emit->as, fun_kind);
 }
 
 STATIC void emit_call_with_imm_arg(emit_t *emit, mp_fun_kind_t fun_kind, mp_int_t arg_val, int arg_reg) {
     need_reg_all(emit);
     ASM_MOV_REG_IMM(emit->as, arg_reg, arg_val);
-    ASM_CALL_IND(emit->as, mp_fun_table[fun_kind], fun_kind);
+    ASM_CALL_IND(emit->as, fun_kind);
 }
 
 STATIC void emit_call_with_2_imm_args(emit_t *emit, mp_fun_kind_t fun_kind, mp_int_t arg_val1, int arg_reg1, mp_int_t arg_val2, int arg_reg2) {
     need_reg_all(emit);
     ASM_MOV_REG_IMM(emit->as, arg_reg1, arg_val1);
     ASM_MOV_REG_IMM(emit->as, arg_reg2, arg_val2);
-    ASM_CALL_IND(emit->as, mp_fun_table[fun_kind], fun_kind);
+    ASM_CALL_IND(emit->as, fun_kind);
 }
 
 // vtype of all n_pop objects is VTYPE_PYOBJ
@@ -2459,7 +2459,7 @@ STATIC void emit_native_make_function(emit_t *emit, scope_t *scope, mp_uint_t n_
         need_reg_all(emit);
     }
     emit_load_reg_with_raw_code(emit, REG_ARG_1, scope->raw_code);
-    ASM_CALL_IND(emit->as, mp_fun_table[MP_F_MAKE_FUNCTION_FROM_RAW_CODE], MP_F_MAKE_FUNCTION_FROM_RAW_CODE);
+    ASM_CALL_IND(emit->as, MP_F_MAKE_FUNCTION_FROM_RAW_CODE);
     emit_post_push_reg(emit, VTYPE_PYOBJ, REG_RET);
 }
 
@@ -2473,7 +2473,7 @@ STATIC void emit_native_make_closure(emit_t *emit, scope_t *scope, mp_uint_t n_c
         ASM_MOV_REG_IMM(emit->as, REG_ARG_2, 0x100 | n_closed_over);
     }
     emit_load_reg_with_raw_code(emit, REG_ARG_1, scope->raw_code);
-    ASM_CALL_IND(emit->as, mp_fun_table[MP_F_MAKE_CLOSURE_FROM_RAW_CODE], MP_F_MAKE_CLOSURE_FROM_RAW_CODE);
+    ASM_CALL_IND(emit->as, MP_F_MAKE_CLOSURE_FROM_RAW_CODE);
     emit_post_push_reg(emit, VTYPE_PYOBJ, REG_RET);
 }