aboutsummaryrefslogtreecommitdiff
path: root/src/lj_jit.h
diff options
context:
space:
mode:
authorMike Pall <mike>2021-09-19 17:49:25 +0200
committerMike Pall <mike>2021-09-19 17:49:25 +0200
commitbb0f24101565d34ea8b70fdec4dd3f3b35a70e7b (patch)
tree01ea9267c638c96967036e03ff296d8dac82d610 /src/lj_jit.h
parent986bb406ad6af93eebd781860c384cc853103827 (diff)
downloadluajit-bb0f24101565d34ea8b70fdec4dd3f3b35a70e7b.tar.gz
luajit-bb0f24101565d34ea8b70fdec4dd3f3b35a70e7b.tar.bz2
luajit-bb0f24101565d34ea8b70fdec4dd3f3b35a70e7b.zip
Compile table traversals: next(), pairs(), BC_ISNEXT/BC_ITERN.
Sponsored by OpenResty Inc.
Diffstat (limited to 'src/lj_jit.h')
-rw-r--r--src/lj_jit.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/lj_jit.h b/src/lj_jit.h
index 34ddf907..c9fe8319 100644
--- a/src/lj_jit.h
+++ b/src/lj_jit.h
@@ -150,6 +150,7 @@ typedef enum {
150 LJ_TRACE_IDLE, /* Trace compiler idle. */ 150 LJ_TRACE_IDLE, /* Trace compiler idle. */
151 LJ_TRACE_ACTIVE = 0x10, 151 LJ_TRACE_ACTIVE = 0x10,
152 LJ_TRACE_RECORD, /* Bytecode recording active. */ 152 LJ_TRACE_RECORD, /* Bytecode recording active. */
153 LJ_TRACE_RECORD_1ST, /* Record 1st instruction, too. */
153 LJ_TRACE_START, /* New trace started. */ 154 LJ_TRACE_START, /* New trace started. */
154 LJ_TRACE_END, /* End of trace. */ 155 LJ_TRACE_END, /* End of trace. */
155 LJ_TRACE_ASM, /* Assemble trace. */ 156 LJ_TRACE_ASM, /* Assemble trace. */
@@ -200,12 +201,15 @@ typedef uint32_t SnapEntry;
200#define SNAP_CONT 0x020000 /* Continuation slot. */ 201#define SNAP_CONT 0x020000 /* Continuation slot. */
201#define SNAP_NORESTORE 0x040000 /* No need to restore slot. */ 202#define SNAP_NORESTORE 0x040000 /* No need to restore slot. */
202#define SNAP_SOFTFPNUM 0x080000 /* Soft-float number. */ 203#define SNAP_SOFTFPNUM 0x080000 /* Soft-float number. */
204#define SNAP_KEYINDEX 0x100000 /* Traversal key index. */
203LJ_STATIC_ASSERT(SNAP_FRAME == TREF_FRAME); 205LJ_STATIC_ASSERT(SNAP_FRAME == TREF_FRAME);
204LJ_STATIC_ASSERT(SNAP_CONT == TREF_CONT); 206LJ_STATIC_ASSERT(SNAP_CONT == TREF_CONT);
207LJ_STATIC_ASSERT(SNAP_KEYINDEX == TREF_KEYINDEX);
205 208
206#define SNAP(slot, flags, ref) (((SnapEntry)(slot) << 24) + (flags) + (ref)) 209#define SNAP(slot, flags, ref) (((SnapEntry)(slot) << 24) + (flags) + (ref))
207#define SNAP_TR(slot, tr) \ 210#define SNAP_TR(slot, tr) \
208 (((SnapEntry)(slot) << 24) + ((tr) & (TREF_CONT|TREF_FRAME|TREF_REFMASK))) 211 (((SnapEntry)(slot) << 24) + \
212 ((tr) & (TREF_KEYINDEX|TREF_CONT|TREF_FRAME|TREF_REFMASK)))
209#if !LJ_FR2 213#if !LJ_FR2
210#define SNAP_MKPC(pc) ((SnapEntry)u32ptr(pc)) 214#define SNAP_MKPC(pc) ((SnapEntry)u32ptr(pc))
211#endif 215#endif