root/lj_trace.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2 ** Trace management.
   3 ** Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h
   4 */
   5 
   6 #ifndef _LJ_TRACE_H
   7 #define _LJ_TRACE_H
   8 
   9 #include "lj_obj.h"
  10 
  11 #if LJ_HASJIT
  12 #include "lj_jit.h"
  13 #include "lj_dispatch.h"
  14 
  15 /* Trace errors. */
  16 typedef enum {
  17 #define TREDEF(name, msg)       LJ_TRERR_##name,
  18 #include "lj_traceerr.h"
  19   LJ_TRERR__MAX
  20 } TraceError;
  21 
  22 LJ_FUNC_NORET void lj_trace_err(jit_State *J, TraceError e);
  23 LJ_FUNC_NORET void lj_trace_err_info(jit_State *J, TraceError e);
  24 
  25 /* Trace management. */
  26 LJ_FUNC void LJ_FASTCALL lj_trace_free(global_State *g, GCtrace *T);
  27 LJ_FUNC void lj_trace_reenableproto(GCproto *pt);
  28 LJ_FUNC void lj_trace_flushproto(global_State *g, GCproto *pt);
  29 LJ_FUNC void lj_trace_flush(jit_State *J, TraceNo traceno);
  30 LJ_FUNC int lj_trace_flushall(lua_State *L);
  31 LJ_FUNC void lj_trace_initstate(global_State *g);
  32 LJ_FUNC void lj_trace_freestate(global_State *g);
  33 
  34 /* Event handling. */
  35 LJ_FUNC void lj_trace_ins(jit_State *J, const BCIns *pc);
  36 LJ_FUNCA void LJ_FASTCALL lj_trace_hot(jit_State *J, const BCIns *pc);
  37 LJ_FUNCA int LJ_FASTCALL lj_trace_exit(jit_State *J, void *exptr);
  38 
  39 /* Signal asynchronous abort of trace or end of trace. */
  40 #define lj_trace_abort(g)       (G2J(g)->state &= ~LJ_TRACE_ACTIVE)
  41 #define lj_trace_end(J)         (J->state = LJ_TRACE_END)
  42 
  43 #else
  44 
  45 #define lj_trace_flushall(L)    (UNUSED(L), 0)
  46 #define lj_trace_initstate(g)   UNUSED(g)
  47 #define lj_trace_freestate(g)   UNUSED(g)
  48 #define lj_trace_abort(g)       UNUSED(g)
  49 #define lj_trace_end(J)         UNUSED(J)
  50 
  51 #endif
  52 
  53 #endif

/* [<][>][^][v][top][bottom][index][help] */