diff options
author | Mike Pall <mike> | 2011-10-14 00:43:17 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2011-10-14 00:43:17 +0200 |
commit | 4c9318792f455c776a840ad2cf011db152ff48e9 (patch) | |
tree | df39f5d7984cd71d90417967216c97734df662b4 /src/lj_trace.c | |
parent | 882537a8744a75681355fb520923e6e867f99d23 (diff) | |
download | luajit2-4c9318792f455c776a840ad2cf011db152ff48e9.tar.gz |
Save tmptv state for trace recorder across RECORD vmevent.
Diffstat (limited to 'src/lj_trace.c')
-rw-r--r-- | src/lj_trace.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/lj_trace.c b/src/lj_trace.c index afaeb300..5de43f23 100644 --- a/src/lj_trace.c +++ b/src/lj_trace.c @@ -574,11 +574,18 @@ static TValue *trace_state(lua_State *L, lua_CFunction dummy, void *ud) case LJ_TRACE_RECORD: trace_pendpatch(J, 0); setvmstate(J2G(J), RECORD); - lj_vmevent_send(L, RECORD, + lj_vmevent_send_(L, RECORD, + TValue savetv; /* Save tmptv state for trace recorder. */ + TValue savetv2; + copyTV(L, &savetv, &J2G(J)->tmptv); + copyTV(L, &savetv2, &J2G(J)->tmptv2); setintV(L->top++, J->cur.traceno); setfuncV(L, L->top++, J->fn); setintV(L->top++, J->pt ? (int32_t)proto_bcpos(J->pt, J->pc) : -1); setintV(L->top++, J->framedepth); + , + copyTV(L, &J2G(J)->tmptv, &savetv); + copyTV(L, &J2G(J)->tmptv2, &savetv2); ); lj_record_ins(J); break; |