浏览代码

Fix stack slot updates for down-recursion.

Mike Pall 14 年之前
父节点
当前提交
b4006ba9a8
共有 1 个文件被更改,包括 2 次插入1 次删除
  1. 2 1
      src/lj_record.c

+ 2 - 1
src/lj_record.c

@@ -666,7 +666,8 @@ void lj_record_ret(jit_State *J, BCReg rbase, ptrdiff_t gotresults)
     GCproto *pt = funcproto(frame_func(frame - (cbase+1)));
     GCproto *pt = funcproto(frame_func(frame - (cbase+1)));
     if (J->framedepth == 0 && J->pt && frame == J->L->base - 1) {
     if (J->framedepth == 0 && J->pt && frame == J->L->base - 1) {
       if (check_downrec_unroll(J, pt)) {
       if (check_downrec_unroll(J, pt)) {
-	J->maxslot = (BCReg)(rbase + nresults);
+	J->maxslot = (BCReg)(rbase + gotresults);
+	lj_snap_purge(J);
 	rec_stop(J, J->cur.traceno);  /* Down-recursion. */
 	rec_stop(J, J->cur.traceno);  /* Down-recursion. */
 	return;
 	return;
       }
       }