diff options
-rw-r--r-- | libguile/jit.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/libguile/jit.c b/libguile/jit.c index 6cea8bbc5..d8e892b90 100644 --- a/libguile/jit.c +++ b/libguile/jit.c @@ -796,22 +796,20 @@ emit_push_frame (scm_jit_state *j, uint32_t proc_slot, uint32_t nlocals, static void emit_indirect_tail_call (scm_jit_state *j) { - jit_reloc_t not_instrumented, no_mcode; - emit_get_callee_vcode (j, T0); /* FIXME: If all functions start with instrument-entry, no need for this check. */ emit_get_vcode_low_byte (j, T1, T0); - not_instrumented = jit_bnei (j->jit, T1, scm_op_instrument_entry); - + jit_reloc_t instrumented = jit_beqi (j->jit, T1, scm_op_instrument_entry); + jit_breakpoint (j->jit); + jit_patch_here (j->jit, instrumented); emit_get_ip_relative_addr (j, T1, T0, 1); emit_ldxi (j, T1, T1, 0); - no_mcode = jit_beqi (j->jit, T1, 0); + jit_reloc_t no_mcode = jit_beqi (j->jit, T1, 0); ASSERT_HAS_REGISTER_STATE (FP_IN_REGISTER | SP_IN_REGISTER); jit_jmpr (j->jit, T1); - jit_patch_here (j->jit, not_instrumented); jit_patch_here (j->jit, no_mcode); emit_store_ip (j, T0); |