mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-08 07:34:07 +00:00
Fix for the fix for the trace flush logic.
This commit is contained in:
parent
751eff9f97
commit
685dfc3172
@ -187,12 +187,12 @@ static void trace_unpatch(jit_State *J, GCtrace *T)
|
|||||||
if (op == BC_JMP)
|
if (op == BC_JMP)
|
||||||
return; /* No need to unpatch branches in parent traces (yet). */
|
return; /* No need to unpatch branches in parent traces (yet). */
|
||||||
switch (bc_op(*pc)) {
|
switch (bc_op(*pc)) {
|
||||||
case BC_JFORI:
|
case BC_JFORL:
|
||||||
lua_assert(op == BC_FORL);
|
lua_assert(traceref(J, bc_d(*pc)) == T);
|
||||||
setbc_op(pc, BC_FORI);
|
|
||||||
pc += bc_j(*pc);
|
|
||||||
lua_assert(bc_op(*pc) == BC_JFORL && traceref(J, bc_d(*pc)) == T);
|
|
||||||
*pc = T->startins;
|
*pc = T->startins;
|
||||||
|
pc += bc_j(T->startins);
|
||||||
|
lua_assert(bc_op(*pc) == BC_JFORI);
|
||||||
|
setbc_op(pc, BC_FORI);
|
||||||
break;
|
break;
|
||||||
case BC_JLOOP:
|
case BC_JLOOP:
|
||||||
lua_assert(op == BC_LOOP || bc_isret(op));
|
lua_assert(op == BC_LOOP || bc_isret(op));
|
||||||
|
Loading…
Reference in New Issue
Block a user