diff options
author | Mike Pall <mike> | 2016-05-23 01:49:00 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2016-05-23 01:49:00 +0200 |
commit | 6c8258d74b7d4ae7f288897518f23c809b9395f2 (patch) | |
tree | 7479dce31b17ed704f20ee3920b6de6696521f26 /src/lj_jit.h | |
parent | 8f868a9d02340bae8b3b4a703118b324213f5c6d (diff) | |
download | luajit-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.h | 14 |
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 | ||
191 | static 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. */ |
191 | typedef uint32_t SnapNo; | 203 | typedef uint32_t SnapNo; |
192 | typedef uint32_t ExitNo; | 204 | typedef uint32_t ExitNo; |