diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lj_trace.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/lj_trace.c b/src/lj_trace.c index 5de43f23..f907a77f 100644 --- a/src/lj_trace.c +++ b/src/lj_trace.c | |||
@@ -575,17 +575,16 @@ static TValue *trace_state(lua_State *L, lua_CFunction dummy, void *ud) | |||
575 | trace_pendpatch(J, 0); | 575 | trace_pendpatch(J, 0); |
576 | setvmstate(J2G(J), RECORD); | 576 | setvmstate(J2G(J), RECORD); |
577 | lj_vmevent_send_(L, RECORD, | 577 | lj_vmevent_send_(L, RECORD, |
578 | TValue savetv; /* Save tmptv state for trace recorder. */ | 578 | /* Save/restore tmptv state for trace recorder. */ |
579 | TValue savetv2; | 579 | TValue savetv = J2G(J)->tmptv; |
580 | copyTV(L, &savetv, &J2G(J)->tmptv); | 580 | TValue savetv2 = J2G(J)->tmptv2; |
581 | copyTV(L, &savetv2, &J2G(J)->tmptv2); | ||
582 | setintV(L->top++, J->cur.traceno); | 581 | setintV(L->top++, J->cur.traceno); |
583 | setfuncV(L, L->top++, J->fn); | 582 | setfuncV(L, L->top++, J->fn); |
584 | setintV(L->top++, J->pt ? (int32_t)proto_bcpos(J->pt, J->pc) : -1); | 583 | setintV(L->top++, J->pt ? (int32_t)proto_bcpos(J->pt, J->pc) : -1); |
585 | setintV(L->top++, J->framedepth); | 584 | setintV(L->top++, J->framedepth); |
586 | , | 585 | , |
587 | copyTV(L, &J2G(J)->tmptv, &savetv); | 586 | J2G(J)->tmptv = savetv; |
588 | copyTV(L, &J2G(J)->tmptv2, &savetv2); | 587 | J2G(J)->tmptv2 = savetv2; |
589 | ); | 588 | ); |
590 | lj_record_ins(J); | 589 | lj_record_ins(J); |
591 | break; | 590 | break; |