2 ** Trace recorder (bytecode -> SSA IR).
3 ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
13 /* Context for recording an indexed load/store. */
14 typedef struct RecordIndex
{
15 TValue tabv
; /* Runtime value of table (or indexed object). */
16 TValue keyv
; /* Runtime value of key. */
17 TValue valv
; /* Runtime value of stored value. */
18 TValue mobjv
; /* Runtime value of metamethod object. */
19 GCtab
*mtv
; /* Runtime value of metatable object. */
20 cTValue
*oldv
; /* Runtime value of previously stored value. */
21 TRef tab
; /* Table (or indexed object) reference. */
22 TRef key
; /* Key reference. */
23 TRef val
; /* Value reference for a store or 0 for a load. */
24 TRef mt
; /* Metatable reference. */
25 TRef mobj
; /* Metamethod object reference. */
26 int idxchain
; /* Index indirections left or 0 for raw lookup. */
29 LJ_FUNC
int lj_record_objcmp(jit_State
*J
, TRef a
, TRef b
,
30 cTValue
*av
, cTValue
*bv
);
31 LJ_FUNC
void lj_record_stop(jit_State
*J
, TraceLink linktype
, TraceNo lnk
);
32 LJ_FUNC TRef
lj_record_constify(jit_State
*J
, cTValue
*o
);
34 LJ_FUNC
void lj_record_call(jit_State
*J
, BCReg func
, ptrdiff_t nargs
);
35 LJ_FUNC
void lj_record_tailcall(jit_State
*J
, BCReg func
, ptrdiff_t nargs
);
36 LJ_FUNC
void lj_record_ret(jit_State
*J
, BCReg rbase
, ptrdiff_t gotresults
);
38 LJ_FUNC
int lj_record_mm_lookup(jit_State
*J
, RecordIndex
*ix
, MMS mm
);
39 LJ_FUNC TRef
lj_record_idx(jit_State
*J
, RecordIndex
*ix
);
41 LJ_FUNC
void lj_record_ins(jit_State
*J
);
42 LJ_FUNC
void lj_record_setup(jit_State
*J
);