diff options
| author | Mike Pall <mike> | 2011-01-18 22:17:27 +0100 |
|---|---|---|
| committer | Mike Pall <mike> | 2011-01-18 22:17:27 +0100 |
| commit | 685dfc317270642fbf2a686799ca2b31ea42e0de (patch) | |
| tree | 93e83dfb7643dc640d198f048eeec682853b6d58 | |
| parent | 751eff9f97d5055fb3f64405771aeee2f34696c2 (diff) | |
| download | luajit-685dfc317270642fbf2a686799ca2b31ea42e0de.tar.gz luajit-685dfc317270642fbf2a686799ca2b31ea42e0de.tar.bz2 luajit-685dfc317270642fbf2a686799ca2b31ea42e0de.zip | |
Fix for the fix for the trace flush logic.
| -rw-r--r-- | src/lj_trace.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/lj_trace.c b/src/lj_trace.c index 5ab6c852..c6e87bb5 100644 --- a/src/lj_trace.c +++ b/src/lj_trace.c | |||
| @@ -187,12 +187,12 @@ static void trace_unpatch(jit_State *J, GCtrace *T) | |||
| 187 | if (op == BC_JMP) | 187 | if (op == BC_JMP) |
| 188 | return; /* No need to unpatch branches in parent traces (yet). */ | 188 | return; /* No need to unpatch branches in parent traces (yet). */ |
| 189 | switch (bc_op(*pc)) { | 189 | switch (bc_op(*pc)) { |
| 190 | case BC_JFORI: | 190 | case BC_JFORL: |
| 191 | lua_assert(op == BC_FORL); | 191 | lua_assert(traceref(J, bc_d(*pc)) == T); |
| 192 | setbc_op(pc, BC_FORI); | ||
| 193 | pc += bc_j(*pc); | ||
| 194 | lua_assert(bc_op(*pc) == BC_JFORL && traceref(J, bc_d(*pc)) == T); | ||
| 195 | *pc = T->startins; | 192 | *pc = T->startins; |
| 193 | pc += bc_j(T->startins); | ||
| 194 | lua_assert(bc_op(*pc) == BC_JFORI); | ||
| 195 | setbc_op(pc, BC_FORI); | ||
| 196 | break; | 196 | break; |
| 197 | case BC_JLOOP: | 197 | case BC_JLOOP: |
| 198 | lua_assert(op == BC_LOOP || bc_isret(op)); | 198 | lua_assert(op == BC_LOOP || bc_isret(op)); |
