From e42bf573e1bc9d003499e6a7593a3787ffcd35f8 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 20 Jan 2015 11:37:04 -0700 Subject: [PATCH] JIT: clear tail-call rator when handling directly Clearing is needed for space safety. --- racket/src/racket/src/jitcall.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/racket/src/racket/src/jitcall.c b/racket/src/racket/src/jitcall.c index 7ec60a5600..72b9bc2d5b 100644 --- a/racket/src/racket/src/jitcall.c +++ b/racket/src/racket/src/jitcall.c @@ -694,6 +694,8 @@ static int generate_retry_call(mz_jit_state *jitter, int num_rands, int multi_ok Put procedure and argc in place, then jump to apply: */ mz_patch_branch(ref2); jit_ldxi_p(JIT_V1, JIT_R1, &((Scheme_Thread *)0x0)->ku.apply.tail_rator); + (void)jit_movi_p(JIT_R0, NULL); + jit_stxi_p(&((Scheme_Thread *)0x0)->ku.apply.tail_rator, JIT_R1, JIT_R0); jit_ldxi_l(JIT_R0, JIT_R1, &((Scheme_Thread *)0x0)->ku.apply.tail_num_rands); __END_SHORT_JUMPS__(1); (void)jit_jmpi(reftop);