aboutsummaryrefslogtreecommitdiff
path: root/src/lj_asm.c
diff options
context:
space:
mode:
authorMike Pall <mike>2010-02-04 03:08:29 +0100
committerMike Pall <mike>2010-02-04 03:08:29 +0100
commit7256690364a2c9a5e9269ffd89bc132ee188480d (patch)
tree20d8a6a37fb64492e12407ee412b4c2f10137e93 /src/lj_asm.c
parent78f5e2ffd34e01626b910341a7808ea4be8a6d0d (diff)
downloadluajit-7256690364a2c9a5e9269ffd89bc132ee188480d.tar.gz
luajit-7256690364a2c9a5e9269ffd89bc132ee188480d.tar.bz2
luajit-7256690364a2c9a5e9269ffd89bc132ee188480d.zip
Add shadow frame link stack for trace recorder.
Simplifies snapshots. Prerequisite for pre-call snapshots. Increases consistency for fast function calls, too.
Diffstat (limited to 'src/lj_asm.c')
-rw-r--r--src/lj_asm.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/lj_asm.c b/src/lj_asm.c
index 38bbb1c2..5e7ff7f5 100644
--- a/src/lj_asm.c
+++ b/src/lj_asm.c
@@ -3042,7 +3042,7 @@ static void asm_tail_sync(ASMState *as)
3042 SnapShot *snap = &as->T->snap[as->T->nsnap-1]; /* Last snapshot. */ 3042 SnapShot *snap = &as->T->snap[as->T->nsnap-1]; /* Last snapshot. */
3043 MSize n, nent = snap->nent; 3043 MSize n, nent = snap->nent;
3044 SnapEntry *map = &as->T->snapmap[snap->mapofs]; 3044 SnapEntry *map = &as->T->snapmap[snap->mapofs];
3045 SnapEntry *flinks = map + nent + snap->nframelinks; 3045 SnapEntry *flinks = map + nent + 1;
3046 BCReg newbase = 0; 3046 BCReg newbase = 0;
3047 BCReg nslots, topslot = 0; 3047 BCReg nslots, topslot = 0;
3048 3048
@@ -3116,11 +3116,11 @@ static void asm_tail_sync(ASMState *as)
3116 if (!(sn & (SNAP_CONT|SNAP_FRAME))) 3116 if (!(sn & (SNAP_CONT|SNAP_FRAME)))
3117 emit_movmroi(as, RID_BASE, ofs+4, irt_toitype(ir->t)); 3117 emit_movmroi(as, RID_BASE, ofs+4, irt_toitype(ir->t));
3118 else if (s != 0) /* Do not overwrite link to previous frame. */ 3118 else if (s != 0) /* Do not overwrite link to previous frame. */
3119 emit_movmroi(as, RID_BASE, ofs+4, (int32_t)(*--flinks)); 3119 emit_movmroi(as, RID_BASE, ofs+4, (int32_t)(*flinks++));
3120 } 3120 }
3121 checkmclim(as); 3121 checkmclim(as);
3122 } 3122 }
3123 lua_assert(map + nent == flinks-1); 3123 lua_assert(map + nent + 1 + snap->depth == flinks);
3124} 3124}
3125 3125
3126/* Fixup the tail code. */ 3126/* Fixup the tail code. */