1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
/*
** Debugging and introspection.
** Copyright (C) 2005-2022 Mike Pall. See Copyright Notice in luajit.h
*/
#ifndef _LJ_DEBUG_H
#define _LJ_DEBUG_H
#include "lj_obj.h"
typedef struct lj_Debug {
/* Common fields. Must be in the same order as in lua.h. */
int event;
const char *name;
const char *namewhat;
const char *what;
const char *source;
int currentline;
int nups;
int linedefined;
int lastlinedefined;
char short_src[LUA_IDSIZE];
int i_ci;
/* Extended fields. Only valid if lj_debug_getinfo() is called with ext = 1.*/
int nparams;
int isvararg;
} lj_Debug;
LJ_FUNC cTValue *lj_debug_frame(lua_State *L, int level, int *size);
LJ_FUNC BCLine LJ_FASTCALL lj_debug_line(GCproto *pt, BCPos pc);
LJ_FUNC const char *lj_debug_uvname(GCproto *pt, uint32_t idx);
LJ_FUNC const char *lj_debug_uvnamev(cTValue *o, uint32_t idx, TValue **tvp,
GCobj **op);
LJ_FUNC const char *lj_debug_slotname(GCproto *pt, const BCIns *pc,
BCReg slot, const char **name);
LJ_FUNC const char *lj_debug_funcname(lua_State *L, cTValue *frame,
const char **name);
LJ_FUNC void lj_debug_shortname(char *out, GCstr *str, BCLine line);
LJ_FUNC void lj_debug_addloc(lua_State *L, const char *msg,
cTValue *frame, cTValue *nextframe);
LJ_FUNC void lj_debug_pushloc(lua_State *L, GCproto *pt, BCPos pc);
LJ_FUNC int lj_debug_getinfo(lua_State *L, const char *what, lj_Debug *ar,
int ext);
#if LJ_HASPROFILE
LJ_FUNC void lj_debug_dumpstack(lua_State *L, SBuf *sb, const char *fmt,
int depth);
#endif
/* Fixed internal variable names. */
#define VARNAMEDEF(_) \
_(FOR_IDX, "(for index)") \
_(FOR_STOP, "(for limit)") \
_(FOR_STEP, "(for step)") \
_(FOR_GEN, "(for generator)") \
_(FOR_STATE, "(for state)") \
_(FOR_CTL, "(for control)")
enum {
VARNAME_END,
#define VARNAMEENUM(name, str) VARNAME_##name,
VARNAMEDEF(VARNAMEENUM)
#undef VARNAMEENUM
VARNAME__MAX
};
#endif
|