summaryrefslogtreecommitdiff
path: root/src/lj_trace.c
diff options
context:
space:
mode:
authorMike Pall <mike>2010-01-26 21:49:04 +0100
committerMike Pall <mike>2010-01-26 21:49:04 +0100
commit67ca399a30cec05acacd7ea33d5cb0e361f92755 (patch)
tree335806ea53e2f98a71eb2395baa1d3d7bea352ae /src/lj_trace.c
parente058714a2e3745a819b77e6b50551e423897026a (diff)
downloadluajit-67ca399a30cec05acacd7ea33d5cb0e361f92755.tar.gz
luajit-67ca399a30cec05acacd7ea33d5cb0e361f92755.tar.bz2
luajit-67ca399a30cec05acacd7ea33d5cb0e361f92755.zip
Compress snapshots using a simple, extensible 1D-compression.
Typically reduces storage overhead for snapshot maps by 60%. The extensible format is a prerequisite for the next redesign steps: Eliminate IR_FRAME and implement return-to-lower-frame.
Diffstat (limited to 'src/lj_trace.c')
-rw-r--r--src/lj_trace.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/lj_trace.c b/src/lj_trace.c
index a5468655..fb36c7ee 100644
--- a/src/lj_trace.c
+++ b/src/lj_trace.c
@@ -161,8 +161,8 @@ void lj_trace_reenableproto(GCproto *pt)
161static void trace_unpatch(jit_State *J, Trace *T) 161static void trace_unpatch(jit_State *J, Trace *T)
162{ 162{
163 BCOp op = bc_op(T->startins); 163 BCOp op = bc_op(T->startins);
164 uint32_t pcofs = T->snap[0].mapofs + T->snap[0].nslots; 164 MSize pcofs = T->snap[0].mapofs + T->snap[0].nent;
165 BCIns *pc = ((BCIns *)(uintptr_t)T->snapmap[pcofs]) - 1; 165 BCIns *pc = ((BCIns *)snap_pc(T->snapmap[pcofs])) - 1;
166 switch (op) { 166 switch (op) {
167 case BC_FORL: 167 case BC_FORL:
168 lua_assert(bc_op(*pc) == BC_JFORI); 168 lua_assert(bc_op(*pc) == BC_JFORI);
@@ -352,7 +352,6 @@ static void trace_start(jit_State *J)
352 J->cur.ir = J->irbuf; 352 J->cur.ir = J->irbuf;
353 J->cur.snap = J->snapbuf; 353 J->cur.snap = J->snapbuf;
354 J->cur.snapmap = J->snapmapbuf; 354 J->cur.snapmap = J->snapmapbuf;
355 /* J->cur.nsnapmap = 0; */
356 J->mergesnap = 0; 355 J->mergesnap = 0;
357 J->needsnap = 0; 356 J->needsnap = 0;
358 J->guardemit.irt = 0; 357 J->guardemit.irt = 0;