From 463400fc7e1597b354d29396567230655293b5cb Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Mon, 4 Jul 2011 22:27:48 +0900 Subject: [PATCH] skipping over calls to reserve on tail jumps --- vm.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vm.c b/vm.c index c7aa845d..784f4b22 100644 --- a/vm.c +++ b/vm.c @@ -385,7 +385,9 @@ static void generate_tail_jump (sexp ctx, sexp name, sexp loc, sexp lam, sexp ap /* jump */ emit(ctx, SEXP_OP_JUMP); - emit_word(ctx, (sexp_uint_t)-sexp_context_pos(ctx)-1); + emit_word(ctx, (sexp_uint_t) (-sexp_context_pos(ctx) - 1 + + (sexp_pairp(sexp_lambda_locals(lam)) + ? 1 + sizeof(sexp) : 0))); sexp_context_tailp(ctx) = 1; sexp_gc_release3(ctx);