From bf035d9385ea875c6cb0fb140078a8d4effb046c Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Thu, 23 Aug 2018 17:19:15 +0200 Subject: [PATCH] Fix load width of get-ip-relative-addr * libguile/jit.c (emit_get_ip_relative_addr): Fix load width. --- libguile/jit.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libguile/jit.c b/libguile/jit.c index b9d5970d6..ef9534b71 100644 --- a/libguile/jit.c +++ b/libguile/jit.c @@ -441,7 +441,7 @@ emit_get_ip_relative_addr (scm_jit_state *j, jit_gpr_t dst, jit_gpr_t ip, uint32_t offset) { uint32_t byte_offset = offset * sizeof (uint32_t); - jit_ldxi (dst, ip, byte_offset); + jit_ldxi_i (dst, ip, byte_offset); jit_lshi (dst, dst, 2); /* Multiply by sizeof (uint32_t) */ jit_addr (dst, dst, ip); } @@ -477,8 +477,11 @@ emit_indirect_tail_call (scm_jit_state *j) 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 (T1, scm_op_instrument_entry); + emit_get_ip_relative_addr (j, T1, T0, 1); jit_ldr (T1, T1); no_mcode = jit_beqi (T1, 0);