aboutsummaryrefslogtreecommitdiff
path: root/src/lj_jit.h
diff options
context:
space:
mode:
authorMike Pall <mike>2016-05-23 01:49:00 +0200
committerMike Pall <mike>2016-05-23 01:49:00 +0200
commit6c8258d74b7d4ae7f288897518f23c809b9395f2 (patch)
tree7479dce31b17ed704f20ee3920b6de6696521f26 /src/lj_jit.h
parent8f868a9d02340bae8b3b4a703118b324213f5c6d (diff)
downloadluajit-6c8258d74b7d4ae7f288897518f23c809b9395f2.tar.gz
luajit-6c8258d74b7d4ae7f288897518f23c809b9395f2.tar.bz2
luajit-6c8258d74b7d4ae7f288897518f23c809b9395f2.zip
LJ_FR2: Add support for trace recording and snapshots.
Contributed by Peter Cawley.
Diffstat (limited to 'src/lj_jit.h')
-rw-r--r--src/lj_jit.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/lj_jit.h b/src/lj_jit.h
index 55fbea8b..f460a0ab 100644
--- a/src/lj_jit.h
+++ b/src/lj_jit.h
@@ -179,14 +179,26 @@ LJ_STATIC_ASSERT(SNAP_CONT == TREF_CONT);
179#define SNAP(slot, flags, ref) (((SnapEntry)(slot) << 24) + (flags) + (ref)) 179#define SNAP(slot, flags, ref) (((SnapEntry)(slot) << 24) + (flags) + (ref))
180#define SNAP_TR(slot, tr) \ 180#define SNAP_TR(slot, tr) \
181 (((SnapEntry)(slot) << 24) + ((tr) & (TREF_CONT|TREF_FRAME|TREF_REFMASK))) 181 (((SnapEntry)(slot) << 24) + ((tr) & (TREF_CONT|TREF_FRAME|TREF_REFMASK)))
182#if !LJ_FR2
182#define SNAP_MKPC(pc) ((SnapEntry)u32ptr(pc)) 183#define SNAP_MKPC(pc) ((SnapEntry)u32ptr(pc))
184#endif
183#define SNAP_MKFTSZ(ftsz) ((SnapEntry)(ftsz)) 185#define SNAP_MKFTSZ(ftsz) ((SnapEntry)(ftsz))
184#define snap_ref(sn) ((sn) & 0xffff) 186#define snap_ref(sn) ((sn) & 0xffff)
185#define snap_slot(sn) ((BCReg)((sn) >> 24)) 187#define snap_slot(sn) ((BCReg)((sn) >> 24))
186#define snap_isframe(sn) ((sn) & SNAP_FRAME) 188#define snap_isframe(sn) ((sn) & SNAP_FRAME)
187#define snap_pc(sn) ((const BCIns *)(uintptr_t)(sn))
188#define snap_setref(sn, ref) (((sn) & (0xffff0000&~SNAP_NORESTORE)) | (ref)) 189#define snap_setref(sn, ref) (((sn) & (0xffff0000&~SNAP_NORESTORE)) | (ref))
189 190
191static LJ_AINLINE const BCIns *snap_pc(SnapEntry *sn)
192{
193#if LJ_FR2
194 uint64_t pcbase;
195 memcpy(&pcbase, sn, sizeof(uint64_t));
196 return (const BCIns *)(pcbase >> 8);
197#else
198 return (const BCIns *)(uintptr_t)*sn;
199#endif
200}
201
190/* Snapshot and exit numbers. */ 202/* Snapshot and exit numbers. */
191typedef uint32_t SnapNo; 203typedef uint32_t SnapNo;
192typedef uint32_t ExitNo; 204typedef uint32_t ExitNo;