lua5.4
lvm.h
浏览该文件的文档.
1 /*
2 ** $Id: lvm.h $
3 ** Lua virtual machine
4 ** See Copyright Notice in lua.h
5 */
6 
7 #ifndef lvm_h
8 #define lvm_h
9 
10 
11 #include "ldo.h"
12 #include "lobject.h"
13 #include "ltm.h"
14 
15 
16 #if !defined(LUA_NOCVTN2S)
17 #define cvt2str(o) ttisnumber(o)
18 #else
19 #define cvt2str(o) 0 /* no conversion from numbers to strings */
20 #endif
21 
22 
23 #if !defined(LUA_NOCVTS2N)
24 #define cvt2num(o) ttisstring(o)
25 #else
26 #define cvt2num(o) 0 /* no conversion from strings to numbers */
27 #endif
28 
29 
30 /*
31 ** You can define LUA_FLOORN2I if you want to convert floats to integers
32 ** by flooring them (instead of raising an error if they are not
33 ** integral values)
34 */
35 #if !defined(LUA_FLOORN2I)
36 #define LUA_FLOORN2I F2Ieq
37 #endif
38 
39 
40 /*
41 ** Rounding modes for float->integer coercion
42  */
43 typedef enum {
44  F2Ieq, /* no rounding; accepts only integral values */
45  F2Ifloor, /* takes the floor of the number */
46  F2Iceil /* takes the ceil of the number */
48 
49 
50 /* convert an object to a float (including string coercion) */
51 #define tonumber(o,n) \
52  (ttisfloat(o) ? (*(n) = fltvalue(o), 1) : luaV_tonumber_(o,n))
53 
54 
55 /* convert an object to a float (without string coercion) */
56 #define tonumberns(o,n) \
57  (ttisfloat(o) ? ((n) = fltvalue(o), 1) : \
58  (ttisinteger(o) ? ((n) = cast_num(ivalue(o)), 1) : 0))
59 
60 
61 /* convert an object to an integer (including string coercion) */
62 #define tointeger(o,i) \
63  (ttisinteger(o) ? (*(i) = ivalue(o), 1) : luaV_tointeger(o,i,LUA_FLOORN2I))
64 
65 
66 /* convert an object to an integer (without string coercion) */
67 #define tointegerns(o,i) \
68  (ttisinteger(o) ? (*(i) = ivalue(o), 1) : luaV_tointegerns(o,i,LUA_FLOORN2I))
69 
70 
71 #define intop(op,v1,v2) l_castU2S(l_castS2U(v1) op l_castS2U(v2))
72 
73 #define luaV_rawequalobj(t1,t2) luaV_equalobj(NULL,t1,t2)
74 
75 
76 /*
77 ** fast track for 'gettable': if 't' is a table and 't[k]' is present,
78 ** return 1 with 'slot' pointing to 't[k]' (position of final result).
79 ** Otherwise, return 0 (meaning it will have to check metamethod)
80 ** with 'slot' pointing to an empty 't[k]' (if 't' is a table) or NULL
81 ** (otherwise). 'f' is the raw get function to use.
82 */
83 #define luaV_fastget(L,t,k,slot,f) \
84  (!ttistable(t) \
85  ? (slot = NULL, 0) /* not a table; 'slot' is NULL and result is 0 */ \
86  : (slot = f(hvalue(t), k), /* else, do raw access */ \
87  !isempty(slot))) /* result not empty? */
88 
89 
90 /*
91 ** Special case of 'luaV_fastget' for integers, inlining the fast case
92 ** of 'luaH_getint'.
93 */
94 #define luaV_fastgeti(L,t,k,slot) \
95  (!ttistable(t) \
96  ? (slot = NULL, 0) /* not a table; 'slot' is NULL and result is 0 */ \
97  : (slot = (l_castS2U(k) - 1u < hvalue(t)->alimit) \
98  ? &hvalue(t)->array[k - 1] : luaH_getint(hvalue(t), k), \
99  !isempty(slot))) /* result not empty? */
100 
101 
102 /*
103 ** Finish a fast set operation (when fast get succeeds). In that case,
104 ** 'slot' points to the place to put the value.
105 */
106 #define luaV_finishfastset(L,t,slot,v) \
107  { setobj2t(L, cast(TValue *,slot), v); \
108  luaC_barrierback(L, gcvalue(t), v); }
109 
110 
111 
112 
113 LUAI_FUNC int luaV_equalobj (lua_State *L, const TValue *t1, const TValue *t2);
114 LUAI_FUNC int luaV_lessthan (lua_State *L, const TValue *l, const TValue *r);
115 LUAI_FUNC int luaV_lessequal (lua_State *L, const TValue *l, const TValue *r);
116 LUAI_FUNC int luaV_tonumber_ (const TValue *obj, lua_Number *n);
117 LUAI_FUNC int luaV_tointeger (const TValue *obj, lua_Integer *p, F2Imod mode);
118 LUAI_FUNC int luaV_tointegerns (const TValue *obj, lua_Integer *p,
119  F2Imod mode);
121 LUAI_FUNC void luaV_finishget (lua_State *L, const TValue *t, TValue *key,
122  StkId val, const TValue *slot);
123 LUAI_FUNC void luaV_finishset (lua_State *L, const TValue *t, TValue *key,
124  TValue *val, const TValue *slot);
127 LUAI_FUNC void luaV_concat (lua_State *L, int total);
132 LUAI_FUNC void luaV_objlen (lua_State *L, StkId ra, const TValue *rb);
133 
134 #endif
luaT_callTM
void luaT_callTM(lua_State *L, const TValue *f, const TValue *p1, const TValue *p2, const TValue *p3)
Definition: ltm.c:103
luaV_mod
lua_Integer luaV_mod(lua_State *L, lua_Integer m, lua_Integer n)
Definition: lvm.c:733
l_addi
#define l_addi(L, a, b)
Definition: lvm.c:864
l_strton
static int l_strton(const TValue *obj, TValue *result)
Definition: lvm.c:90
setobjs2s
#define setobjs2s(L, o1, o2)
Definition: lobject.h:127
luaV_equalobj
int luaV_equalobj(lua_State *L, const TValue *t1, const TValue *t2)
Definition: lvm.c:565
s2v
#define s2v(o)
Definition: lobject.h:150
OP_SETLIST
@ OP_SETLIST
Definition: lopcodes.h:300
luai_numsub
#define luai_numsub(L, a, b)
Definition: llimits.h:336
op_orderI
#define op_orderI(L, opi, opf, inv, tm)
Definition: lvm.c:1002
OP_MODK
@ OP_MODK
Definition: lopcodes.h:231
Proto::upvalues
Upvaldesc * upvalues
Definition: lobject.h:547
l_isfalse
#define l_isfalse(o)
Definition: lobject.h:225
luai_numunm
#define luai_numunm(L, a)
Definition: llimits.h:338
luai_numle
#define luai_numle(a, b)
Definition: llimits.h:341
l_muli
#define l_muli(L, a, b)
Definition: lvm.c:866
lua_assert
#define lua_assert(c)
Definition: lauxlib.h:169
luaV_finishget
LUAI_FUNC void luaV_finishget(lua_State *L, const TValue *t, TValue *key, StkId val, const TValue *slot)
Definition: lvm.c:287
OP_VARARG
@ OP_VARARG
Definition: lopcodes.h:304
lua_Unsigned
LUA_UNSIGNED lua_Unsigned
Definition: lua.h:97
OP_SELF
@ OP_SELF
Definition: lopcodes.h:224
LUAI_FUNC
#define LUAI_FUNC
Definition: luaconf.h:307
CallInfo::previous
struct CallInfo * previous
Definition: lstate.h:163
Proto::code
Instruction * code
Definition: lobject.h:545
OP_TFORPREP
@ OP_TFORPREP
Definition: lopcodes.h:296
luaV_shiftl
LUAI_FUNC lua_Integer luaV_shiftl(lua_Integer x, lua_Integer y)
Definition: lvm.c:766
GETARG_Bx
#define GETARG_Bx(i)
Definition: lopcodes.h:140
pushutfchar
static void pushutfchar(lua_State *L, int arg)
Definition: lutf8lib.c:151
luaV_fastgeti
#define luaV_fastgeti(L, t, k, slot)
Definition: lvm.h:94
op_arithfK
#define op_arithfK(L, fop)
Definition: lvm.c:918
LUA_MULTRET
#define LUA_MULTRET
Definition: lua.h:36
F2Iceil
@ F2Iceil
Definition: lvm.h:46
ttisLclosure
#define ttisLclosure(o)
Definition: lobject.h:574
lstate.h
GETARG_B
#define GETARG_B(i)
Definition: lopcodes.h:128
LUAI_MAXSHORTLEN
#define LUAI_MAXSHORTLEN
Definition: llimits.h:205
luaD_poscall
void luaD_poscall(lua_State *L, CallInfo *ci, int nres)
Definition: ldo.c:434
LUA_OK
#define LUA_OK
Definition: lua.h:49
OP_TAILCALL
@ OP_TAILCALL
Definition: lopcodes.h:286
ttistable
#define ttistable(o)
Definition: lobject.h:657
eqshrstr
#define eqshrstr(a, b)
Definition: lstring.h:41
uvalue
#define uvalue(o)
Definition: lobject.h:415
KB
#define KB(i)
Definition: lvm.c:1035
OP_CALL
@ OP_CALL
Definition: lopcodes.h:285
luaS_newlstr
TString * luaS_newlstr(lua_State *L, const char *str, size_t l)
Definition: lstring.c:221
luaL_checkstring
#define luaL_checkstring(L, n)
Definition: lauxlib.h:138
OP_SHR
@ OP_SHR
Definition: lopcodes.h:255
luaV_finishfastset
#define luaV_finishfastset(L, t, slot, v)
Definition: lvm.h:106
luaC_objbarrier
#define luaC_objbarrier(L, p, o)
Definition: lgc.h:173
pvalue
#define pvalue(o)
Definition: lobject.h:414
updatetrap
#define updatetrap(ci)
Definition: lvm.c:1043
luai_numlt
#define luai_numlt(a, b)
Definition: llimits.h:340
OP_ADDI
@ OP_ADDI
Definition: lopcodes.h:226
op_arithK
#define op_arithK(L, iop, fop)
Definition: lvm.c:947
ttisfunction
#define ttisfunction(o)
Definition: lobject.h:572
luaL_buffinit
LUALIB_API void luaL_buffinit(lua_State *L, luaL_Buffer *B)
Definition: lauxlib.c:620
OP_GETUPVAL
@ OP_GETUPVAL
Definition: lopcodes.h:209
cond
static int cond(LexState *ls)
Definition: lparser.c:1394
GETARG_A
#define GETARG_A(i)
Definition: lopcodes.h:125
unlikely
#define unlikely(x)
Definition: llimits.h:162
lua_pushinteger
LUA_API void lua_pushinteger(lua_State *L, lua_Integer n)
Definition: lapi.c:489
luaC_barrierback
#define luaC_barrierback(L, p, v)
Definition: lgc.h:169
isIT
#define isIT(i)
Definition: lopcodes.h:383
ltable.h
vmbreak
#define vmbreak
Definition: lvm.c:1116
luaG_runerror
l_noret luaG_runerror(lua_State *L, const char *fmt,...)
Definition: ldebug.c:767
lessequalothers
static int lessequalothers(lua_State *L, const TValue *l, const TValue *r)
Definition: lvm.c:542
LUA_VNUMINT
#define LUA_VNUMINT
Definition: lobject.h:301
OP_FORLOOP
@ OP_FORLOOP
Definition: lopcodes.h:292
vmdispatch
#define vmdispatch(o)
Definition: lvm.c:1114
isempty
#define isempty(v)
Definition: lobject.h:195
OP_CONCAT
@ OP_CONCAT
Definition: lopcodes.h:266
OP_IDIVK
@ OP_IDIVK
Definition: lopcodes.h:234
op_arith
#define op_arith(L, iop, fop)
Definition: lvm.c:938
notm
#define notm(tm)
Definition: ltm.h:61
checkGC
#define checkGC(L, c)
Definition: lvm.c:1098
Proto::p
struct Proto ** p
Definition: lobject.h:546
luaV_finishOp
void luaV_finishOp(lua_State *L)
Definition: lvm.c:803
LUA_VNUMFLT
#define LUA_VNUMFLT
Definition: lobject.h:302
luaV_shiftl
lua_Integer luaV_shiftl(lua_Integer x, lua_Integer y)
Definition: lvm.c:766
obj2gco
#define obj2gco(v)
Definition: lstate.h:347
gcvalue
#define gcvalue(o)
Definition: lobject.h:283
fvalue
#define fvalue(o)
Definition: lobject.h:582
OP_BNOT
@ OP_BNOT
Definition: lopcodes.h:262
OP_LOADTRUE
@ OP_LOADTRUE
Definition: lopcodes.h:207
OP_LTI
@ OP_LTI
Definition: lopcodes.h:277
TM_INDEX
@ TM_INDEX
Definition: ltm.h:19
lua_pushlstring
LUA_API const char * lua_pushlstring(lua_State *L, const char *s, size_t len)
Definition: lapi.c:502
KC
#define KC(i)
Definition: lvm.c:1038
iter_codes
static int iter_codes(lua_State *L)
Definition: lutf8lib.c:257
OP_BXORK
@ OP_BXORK
Definition: lopcodes.h:238
forprep
static int forprep(lua_State *L, StkId ra)
Definition: lvm.c:206
ttisinteger
#define ttisinteger(o)
Definition: lobject.h:306
Proto::is_vararg
lu_byte is_vararg
Definition: lobject.h:533
luaL_checklstring
LUALIB_API const char * luaL_checklstring(lua_State *L, int arg, size_t *len)
Definition: lauxlib.c:402
TM_NEWINDEX
@ TM_NEWINDEX
Definition: ltm.h:20
lessthanothers
static int lessthanothers(lua_State *L, const TValue *l, const TValue *r)
Definition: lvm.c:520
lua_Number
LUA_NUMBER lua_Number
Definition: lua.h:90
TMS
TMS
Definition: ltm.h:18
LUA_VFALSE
#define LUA_VFALSE
Definition: lobject.h:217
l_gei
#define l_gei(a, b)
Definition: lvm.c:874
invalidateTMcache
#define invalidateTMcache(t)
Definition: ltable.h:23
ltm.h
OP_LOADI
@ OP_LOADI
Definition: lopcodes.h:201
GETARG_k
#define GETARG_k(i)
Definition: lopcodes.h:137
OP_LE
@ OP_LE
Definition: lopcodes.h:273
NOCLOSINGMETH
#define NOCLOSINGMETH
Definition: lfunc.h:50
OP_LOADF
@ OP_LOADF
Definition: lopcodes.h:202
luai_nummod
#define luai_nummod(L, a, b, m)
Definition: llimits.h:322
luaD_precall
CallInfo * luaD_precall(lua_State *L, StkId func, int nresults)
Definition: ldo.c:479
StackValue
Definition: lobject.h:141
savestate
#define savestate(L, ci)
Definition: lvm.c:1079
OP_SUBK
@ OP_SUBK
Definition: lopcodes.h:229
luaH_getshortstr
const TValue * luaH_getshortstr(Table *t, TString *key)
Definition: ltable.c:726
GETARG_sC
#define GETARG_sC(i)
Definition: lopcodes.h:133
TM_UNM
@ TM_UNM
Definition: ltm.h:37
luaL_pushresult
LUALIB_API void luaL_pushresult(luaL_Buffer *B)
Definition: lauxlib.c:584
OP_LOADFALSE
@ OP_LOADFALSE
Definition: lopcodes.h:205
luaV_mod
LUAI_FUNC lua_Integer luaV_mod(lua_State *L, lua_Integer x, lua_Integer y)
Definition: lvm.c:733
OP_UNM
@ OP_UNM
Definition: lopcodes.h:261
ProtectNT
#define ProtectNT(exp)
Definition: lvm.c:1089
OP_MOVE
@ OP_MOVE
Definition: lopcodes.h:200
tointegerns
#define tointegerns(o, i)
Definition: lvm.h:67
lua_State::oldpc
int oldpc
Definition: lstate.h:291
l_bxor
#define l_bxor(a, b)
Definition: lvm.c:869
LUA_VTABLE
#define LUA_VTABLE
Definition: lobject.h:655
l_lti
#define l_lti(a, b)
Definition: lvm.c:871
luaV_rawequalobj
#define luaV_rawequalobj(t1, t2)
Definition: lvm.h:73
l_bor
#define l_bor(a, b)
Definition: lvm.c:868
luaH_resize
void luaH_resize(lua_State *L, Table *t, unsigned int newasize, unsigned int nhsize)
Definition: ltable.c:523
luai_numidiv
#define luai_numidiv(L, a, b)
Definition: llimits.h:302
luaH_resizearray
void luaH_resizearray(lua_State *L, Table *t, unsigned int nasize)
Definition: ltable.c:560
setnilvalue
#define setnilvalue(obj)
Definition: lobject.h:178
l_intfitsf
#define l_intfitsf(i)
Definition: lvm.c:78
lua.h
OP_DIV
@ OP_DIV
Definition: lopcodes.h:248
OP_CLOSE
@ OP_CLOSE
Definition: lopcodes.h:268
OP_GETI
@ OP_GETI
Definition: lopcodes.h:214
UpVal
Definition: lobject.h:606
fltvalue
#define fltvalue(o)
Definition: lobject.h:310
luaD_pretailcall
void luaD_pretailcall(lua_State *L, CallInfo *ci, StkId func, int narg1)
Definition: ldo.c:452
vslen
#define vslen(o)
Definition: lobject.h:391
ljumptab.h
codepoint
static int codepoint(lua_State *L)
Definition: lutf8lib.c:122
ttisnil
#define ttisnil(v)
Definition: lobject.h:171
op_arithI
#define op_arithI(L, iop, fop)
Definition: lvm.c:881
OP_NOT
@ OP_NOT
Definition: lopcodes.h:263
ivalue
#define ivalue(o)
Definition: lobject.h:311
iter_aux
static int iter_aux(lua_State *L, int strict)
Definition: lutf8lib.c:224
OP_TFORLOOP
@ OP_TFORLOOP
Definition: lopcodes.h:298
setbfvalue
#define setbfvalue(obj)
Definition: lobject.h:228
OP_SETI
@ OP_SETI
Definition: lopcodes.h:219
GETARG_sB
#define GETARG_sB(i)
Definition: lopcodes.h:129
RB
#define RB(i)
Definition: lvm.c:1033
TM_BNOT
@ TM_BNOT
Definition: ltm.h:38
luaV_finishget
void luaV_finishget(lua_State *L, const TValue *t, TValue *key, StkId val, const TValue *slot)
Definition: lvm.c:287
luaV_flttointeger
LUAI_FUNC int luaV_flttointeger(lua_Number n, lua_Integer *p, F2Imod mode)
Definition: lvm.c:121
u_posrelat
static lua_Integer u_posrelat(lua_Integer pos, size_t len)
Definition: lutf8lib.c:43
OP_EXTRAARG
@ OP_EXTRAARG
Definition: lopcodes.h:308
luai_numpow
#define luai_numpow(L, a, b)
Definition: llimits.h:329
OP_GEI
@ OP_GEI
Definition: lopcodes.h:280
lua_State::stack_last
StkId stack_last
Definition: lstate.h:281
RA
#define RA(i)
Definition: lvm.c:1032
OP_MMBINI
@ OP_MMBINI
Definition: lopcodes.h:258
lua_tointeger
#define lua_tointeger(L, i)
Definition: lua.h:362
op_bitwiseK
#define op_bitwiseK(L, op)
Definition: lvm.c:956
OP_CLOSURE
@ OP_CLOSURE
Definition: lopcodes.h:302
l_strcmp
static int l_strcmp(const TString *ls, const TString *rs)
Definition: lvm.c:375
lua_setfield
LUA_API void lua_setfield(lua_State *L, int idx, const char *k)
Definition: lapi.c:847
OP_RETURN0
@ OP_RETURN0
Definition: lopcodes.h:289
luaV_tonumber_
int luaV_tonumber_(const TValue *obj, lua_Number *n)
Definition: lvm.c:103
cast_void
#define cast_void(i)
Definition: llimits.h:125
lvm.h
luaV_modf
lua_Number luaV_modf(lua_State *L, lua_Number m, lua_Number n)
Definition: lvm.c:751
setobj2t
#define setobj2t
Definition: lobject.h:135
luaL_Reg
Definition: lauxlib.h:37
OP_DIVK
@ OP_DIVK
Definition: lopcodes.h:233
luaH_get
const TValue * luaH_get(Table *t, const TValue *key)
Definition: ltable.c:756
LUA_VLNGSTR
#define LUA_VLNGSTR
Definition: lobject.h:339
savepc
#define savepc(L)
Definition: lvm.c:1072
luai_numge
#define luai_numge(a, b)
Definition: llimits.h:343
luaV_lessequal
int luaV_lessequal(lua_State *L, const TValue *l, const TValue *r)
Definition: lvm.c:554
LUA_VSHRSTR
#define LUA_VSHRSTR
Definition: lobject.h:338
vRC
#define vRC(i)
Definition: lvm.c:1037
TString
Definition: lobject.h:364
F2Imod
F2Imod
Definition: lvm.h:43
luaV_finishset
void luaV_finishset(lua_State *L, const TValue *t, TValue *key, TValue *val, const TValue *slot)
Definition: lvm.c:330
lua_numbertointeger
#define lua_numbertointeger(n, p)
Definition: luaconf.h:413
GETARG_sBx
#define GETARG_sBx(i)
Definition: lopcodes.h:146
lprefix.h
luaG_typeerror
l_noret luaG_typeerror(lua_State *L, const TValue *o, const char *op)
Definition: ldebug.c:694
OP_SETTABLE
@ OP_SETTABLE
Definition: lopcodes.h:218
LUA_VTRUE
#define LUA_VTRUE
Definition: lobject.h:218
op_arithf
#define op_arithf(L, fop)
Definition: lvm.c:909
setclLvalue2s
#define setclLvalue2s(L, o, cl)
Definition: lobject.h:592
luaF_newtbcupval
void luaF_newtbcupval(lua_State *L, StkId level)
Definition: lfunc.c:194
OP_SHRI
@ OP_SHRI
Definition: lopcodes.h:240
setsvalue2s
#define setsvalue2s(L, o, s)
Definition: lobject.h:355
CallInfo::nresults
short nresults
Definition: lstate.h:184
ldebug.h
luaV_flttointeger
int luaV_flttointeger(lua_Number n, lua_Integer *p, F2Imod mode)
Definition: lvm.c:121
CallInfo::func
StkId func
Definition: lstate.h:161
LUA_TNUMBER
#define LUA_TNUMBER
Definition: lua.h:68
OP_TBC
@ OP_TBC
Definition: lopcodes.h:269
getstr
#define getstr(ts)
Definition: lobject.h:381
TESTARG_k
#define TESTARG_k(i)
Definition: lopcodes.h:136
OP_IDIV
@ OP_IDIV
Definition: lopcodes.h:249
luaD_call
void luaD_call(lua_State *L, StkId func, int nResults)
Definition: ldo.c:557
l_subi
#define l_subi(L, a, b)
Definition: lvm.c:865
halfProtect
#define halfProtect(exp)
Definition: lvm.c:1095
setobj
#define setobj(L, obj1, obj2)
Definition: lobject.h:116
luaV_shiftr
#define luaV_shiftr(x, y)
Definition: lvm.c:764
luaV_lessequal
LUAI_FUNC int luaV_lessequal(lua_State *L, const TValue *l, const TValue *r)
Definition: lvm.c:554
lua_pushfstring
LUA_API const char * lua_pushfstring(lua_State *L, const char *fmt,...)
Definition: lapi.c:542
iter_auxstrict
static int iter_auxstrict(lua_State *L)
Definition: lutf8lib.c:248
utfint
unsigned long utfint
Definition: lutf8lib.c:34
OP_VARARGPREP
@ OP_VARARGPREP
Definition: lopcodes.h:306
op_bitwise
#define op_bitwise(L, op)
Definition: lvm.c:969
Table
Definition: lobject.h:714
OP_ADD
@ OP_ADD
Definition: lopcodes.h:243
luaV_finishset
LUAI_FUNC void luaV_finishset(lua_State *L, const TValue *t, TValue *key, TValue *val, const TValue *slot)
Definition: lvm.c:330
OP_MOD
@ OP_MOD
Definition: lopcodes.h:246
clLvalue
#define clLvalue(o)
Definition: lobject.h:581
OP_EQK
@ OP_EQK
Definition: lopcodes.h:275
LUA_VNIL
#define LUA_VNIL
Definition: lobject.h:161
OP_BXOR
@ OP_BXOR
Definition: lopcodes.h:253
OP_SHLI
@ OP_SHLI
Definition: lopcodes.h:241
isemptystr
#define isemptystr(o)
Definition: lvm.c:616
luaV_lessthan
LUAI_FUNC int luaV_lessthan(lua_State *L, const TValue *l, const TValue *r)
Definition: lvm.c:532
F2Ieq
@ F2Ieq
Definition: lvm.h:44
TM_LT
@ TM_LT
Definition: ltm.h:39
l_castU2S
#define l_castU2S(i)
Definition: llimits.h:148
luaL_Buffer
Definition: lauxlib.h:182
OP_EQI
@ OP_EQI
Definition: lopcodes.h:276
OP_LOADK
@ OP_LOADK
Definition: lopcodes.h:203
op_order
#define op_order(L, opi, opn, other)
Definition: lvm.c:983
luaH_getstr
const TValue * luaH_getstr(Table *t, TString *key)
Definition: ltable.c:742
CallInfo::l
struct CallInfo::@11::@13 l
luaV_objlen
void luaV_objlen(lua_State *L, StkId ra, const TValue *rb)
Definition: lvm.c:678
TM_LEN
@ TM_LEN
Definition: ltm.h:23
luaL_argcheck
#define luaL_argcheck(L, cond, arg, extramsg)
Definition: lauxlib.h:132
MAXARG_C
#define MAXARG_C
Definition: lopcodes.h:97
donextjump
#define donextjump(ci)
Definition: lvm.c:1059
CallInfo
Definition: lstate.h:160
l_band
#define l_band(a, b)
Definition: lvm.c:867
luaH_realasize
LUAI_FUNC unsigned int luaH_realasize(const Table *t)
Definition: ltable.c:222
OP_MUL
@ OP_MUL
Definition: lopcodes.h:245
lobject.h
luaT_getvarargs
void luaT_getvarargs(lua_State *L, CallInfo *ci, StkId where, int wanted)
Definition: ltm.c:257
Table::metatable
struct Table * metatable
Definition: lobject.h:722
luaH_new
Table * luaH_new(lua_State *L)
Definition: ltable.c:596
luai_numgt
#define luai_numgt(a, b)
Definition: llimits.h:342
luai_numdiv
#define luai_numdiv(L, a, b)
Definition: llimits.h:307
lua_gettop
LUA_API int lua_gettop(lua_State *L)
Definition: lapi.c:168
OP_BANDK
@ OP_BANDK
Definition: lopcodes.h:236
lua_State
Definition: lstate.h:273
LUA_VLIGHTUSERDATA
#define LUA_VLIGHTUSERDATA
Definition: lobject.h:407
lua_Integer
LUA_INTEGER lua_Integer
Definition: lua.h:94
lua_State::hookmask
volatile l_signalT hookmask
Definition: lstate.h:294
LClosure::p
struct Proto * p
Definition: lobject.h:633
docondjump
#define docondjump()
Definition: lvm.c:1066
copy2buff
static void copy2buff(StkId top, int n, char *buff)
Definition: lvm.c:619
GETARG_Ax
#define GETARG_Ax(i)
Definition: lopcodes.h:143
lauxlib.h
lualib.h
luaV_execute
LUAI_FUNC void luaV_execute(lua_State *L, CallInfo *ci)
Definition: lvm.c:1119
tonumber
#define tonumber(o, n)
Definition: lvm.h:51
lua_pushvalue
LUA_API void lua_pushvalue(lua_State *L, int idx)
Definition: lapi.c:246
TValue
Definition: lobject.h:65
tsslen
#define tsslen(s)
Definition: lobject.h:388
TM_EQ
@ TM_EQ
Definition: ltm.h:24
chgivalue
#define chgivalue(obj, x)
Definition: lobject.h:325
LEfloatint
static int LEfloatint(lua_Number f, lua_Integer i)
Definition: lvm.c:460
luai_numadd
#define luai_numadd(L, a, b)
Definition: llimits.h:335
UpVal::v
TValue * v
Definition: lobject.h:609
Table::array
TValue * array
Definition: lobject.h:719
Proto::k
TValue * k
Definition: lobject.h:544
LEintfloat
static int LEintfloat(lua_Integer i, lua_Number f)
Definition: lvm.c:426
OP_BORK
@ OP_BORK
Definition: lopcodes.h:237
intop
#define intop(op, v1, v2)
Definition: lvm.h:71
ttypetag
#define ttypetag(o)
Definition: lobject.h:82
vRB
#define vRB(i)
Definition: lvm.c:1034
l_castS2U
#define l_castS2U(i)
Definition: llimits.h:139
lua_pushcfunction
#define lua_pushcfunction(L, f)
Definition: lua.h:370
luaV_tointeger
LUAI_FUNC int luaV_tointeger(const TValue *obj, lua_Integer *p, F2Imod mode)
Definition: lvm.c:152
LClosure
Definition: lobject.h:631
luaV_concat
LUAI_FUNC void luaV_concat(lua_State *L, int total)
Definition: lvm.c:633
luai_nummul
#define luai_nummul(L, a, b)
Definition: llimits.h:337
LEnum
static int LEnum(const TValue *l, const TValue *r)
Definition: lvm.c:498
LTintfloat
static int LTintfloat(lua_Integer i, lua_Number f)
Definition: lvm.c:409
luaH_getn
lua_Unsigned luaH_getn(Table *t)
Definition: ltable.c:891
tsvalue
#define tsvalue(o)
Definition: lobject.h:347
luaV_execute
void luaV_execute(lua_State *L, CallInfo *ci)
Definition: lvm.c:1119
luaT_adjustvarargs
void luaT_adjustvarargs(lua_State *L, int nfixparams, CallInfo *ci, const Proto *p)
Definition: ltm.c:237
OP_GETFIELD
@ OP_GETFIELD
Definition: lopcodes.h:215
Proto::sizeupvalues
int sizeupvalues
Definition: lobject.h:535
tonumberns
#define tonumberns(o, n)
Definition: lvm.h:56
CIST_FRESH
#define CIST_FRESH
Definition: lstate.h:194
tostring
#define tostring(L, o)
Definition: lvm.c:613
OP_BOR
@ OP_BOR
Definition: lopcodes.h:252
luaV_objlen
LUAI_FUNC void luaV_objlen(lua_State *L, StkId ra, const TValue *rb)
Definition: lvm.c:678
NBITS
#define NBITS
Definition: lvm.c:759
Instruction
l_uint32 Instruction
Definition: llimits.h:194
OP_LEN
@ OP_LEN
Definition: lopcodes.h:264
OP_SUB
@ OP_SUB
Definition: lopcodes.h:244
OpCode
OpCode
Definition: lopcodes.h:196
l_gti
#define l_gti(a, b)
Definition: lvm.c:873
OP_TESTSET
@ OP_TESTSET
Definition: lopcodes.h:283
OP_LOADKX
@ OP_LOADKX
Definition: lopcodes.h:204
luaO_str2num
size_t luaO_str2num(const char *s, TValue *o)
Definition: lobject.c:308
luaT_callTMres
void luaT_callTMres(lua_State *L, const TValue *f, const TValue *p1, const TValue *p2, StkId res)
Definition: ltm.c:119
LUAMOD_API
#define LUAMOD_API
Definition: luaconf.h:286
luaV_concat
void luaV_concat(lua_State *L, int total)
Definition: lvm.c:633
vmfetch
#define vmfetch()
Definition: lvm.c:1105
luaopen_utf8
LUAMOD_API int luaopen_utf8(lua_State *L)
Definition: lutf8lib.c:283
lua_State::ci
CallInfo * ci
Definition: lstate.h:280
OP_SETFIELD
@ OP_SETFIELD
Definition: lopcodes.h:220
setivalue
#define setivalue(obj, x)
Definition: lobject.h:322
fasttm
#define fasttm(l, et, e)
Definition: ltm.h:67
UTF8PATT
#define UTF8PATT
Definition: lutf8lib.c:268
sethvalue2s
#define sethvalue2s(L, o, h)
Definition: lobject.h:666
luaL_optinteger
LUALIB_API lua_Integer luaL_optinteger(lua_State *L, int arg, lua_Integer def)
Definition: lauxlib.c:452
OP_TEST
@ OP_TEST
Definition: lopcodes.h:282
GET_OPCODE
#define GET_OPCODE(i)
Definition: lopcodes.h:114
Proto
Definition: lobject.h:530
updatebase
#define updatebase(ci)
Definition: lvm.c:1045
Protect
#define Protect(exp)
Definition: lvm.c:1086
utf8_decode
static const char * utf8_decode(const char *s, utfint *val, int strict)
Definition: lutf8lib.c:57
l_floor
#define l_floor(x)
Definition: luaconf.h:399
luaT_trybinassocTM
void luaT_trybinassocTM(lua_State *L, const TValue *p1, const TValue *p2, int flip, StkId res, TMS event)
Definition: ltm.c:174
luaL_checkstack
LUALIB_API void luaL_checkstack(lua_State *L, int space, const char *msg)
Definition: lauxlib.c:380
floatforloop
static int floatforloop(StkId ra)
Definition: lvm.c:266
MAXTAGLOOP
#define MAXTAGLOOP
Definition: lvm.c:49
luaT_callorderTM
int luaT_callorderTM(lua_State *L, const TValue *p1, const TValue *p2, TMS event)
Definition: ltm.c:200
luaL_newlib
#define luaL_newlib(L, l)
Definition: lauxlib.h:129
luaV_tointegerns
int luaV_tointegerns(const TValue *obj, lua_Integer *p, F2Imod mode)
Definition: lvm.c:137
luaT_trybiniTM
void luaT_trybiniTM(lua_State *L, const TValue *p1, lua_Integer i2, int flip, StkId res, TMS event)
Definition: ltm.c:183
luaL_error
LUALIB_API int luaL_error(lua_State *L, const char *fmt,...)
Definition: lauxlib.c:234
cvt2str
#define cvt2str(o)
Definition: lvm.h:17
luaT_gettmbyobj
const TValue * luaT_gettmbyobj(lua_State *L, const TValue *o, TMS event)
Definition: ltm.c:71
iscont
#define iscont(p)
Definition: lutf8lib.c:38
OP_MMBINK
@ OP_MMBINK
Definition: lopcodes.h:259
MAXUNICODE
#define MAXUNICODE
Definition: lutf8lib.c:24
setobj2s
#define setobj2s(L, o1, o2)
Definition: lobject.h:129
luaV_tonumber_
LUAI_FUNC int luaV_tonumber_(const TValue *obj, lua_Number *n)
Definition: lvm.c:103
luaV_finishOp
LUAI_FUNC void luaV_finishOp(lua_State *L)
Definition: lvm.c:803
lstring.h
luaF_newLclosure
LClosure * luaF_newLclosure(lua_State *L, int nupvals)
Definition: lfunc.c:35
MAX_SIZE
#define MAX_SIZE
Definition: llimits.h:44
utflen
static int utflen(lua_State *L)
Definition: lutf8lib.c:92
OP_MMBIN
@ OP_MMBIN
Definition: lopcodes.h:257
Upvaldesc
Definition: lobject.h:493
ttisnumber
#define ttisnumber(o)
Definition: lobject.h:304
Upvaldesc::idx
lu_byte idx
Definition: lobject.h:496
luaL_checkinteger
LUALIB_API lua_Integer luaL_checkinteger(lua_State *L, int arg)
Definition: lauxlib.c:442
luai_numeq
#define luai_numeq(a, b)
Definition: llimits.h:339
luaV_equalobj
LUAI_FUNC int luaV_equalobj(lua_State *L, const TValue *t1, const TValue *t2)
Definition: lvm.c:565
OP_JMP
@ OP_JMP
Definition: lopcodes.h:270
OP_ADDK
@ OP_ADDK
Definition: lopcodes.h:228
chgfltvalue
#define chgfltvalue(obj, x)
Definition: lobject.h:319
luaV_modf
LUAI_FUNC lua_Number luaV_modf(lua_State *L, lua_Number x, lua_Number y)
Definition: lvm.c:751
OP_POWK
@ OP_POWK
Definition: lopcodes.h:232
OP_GETTABLE
@ OP_GETTABLE
Definition: lopcodes.h:213
luaV_idiv
LUAI_FUNC lua_Integer luaV_idiv(lua_State *L, lua_Integer x, lua_Integer y)
Definition: lvm.c:713
RKC
#define RKC(i)
Definition: lvm.c:1039
OP_GETTABUP
@ OP_GETTABUP
Definition: lopcodes.h:212
ttype
#define ttype(o)
Definition: lobject.h:85
lua_State::top
StkId top
Definition: lstate.h:278
luaF_findupval
UpVal * luaF_findupval(lua_State *L, StkId level)
Definition: lfunc.c:88
luaV_tointegerns
LUAI_FUNC int luaV_tointegerns(const TValue *obj, lua_Integer *p, F2Imod mode)
Definition: lvm.c:137
LUA_VLCF
#define LUA_VLCF
Definition: lobject.h:569
OP_POW
@ OP_POW
Definition: lopcodes.h:247
OP_TFORCALL
@ OP_TFORCALL
Definition: lopcodes.h:297
setfltvalue
#define setfltvalue(obj, x)
Definition: lobject.h:316
dojump
#define dojump(ci, i, e)
Definition: lvm.c:1055
lua_toboolean
LUA_API int lua_toboolean(lua_State *L, int idx)
Definition: lapi.c:375
lgc.h
byteoffset
static int byteoffset(lua_State *L)
Definition: lutf8lib.c:183
luaV_idiv
lua_Integer luaV_idiv(lua_State *L, lua_Integer m, lua_Integer n)
Definition: lvm.c:713
luaV_fastget
#define luaV_fastget(L, t, k, slot, f)
Definition: lvm.h:83
LTnum
static int LTnum(const TValue *l, const TValue *r)
Definition: lvm.c:476
OP_EQ
@ OP_EQ
Definition: lopcodes.h:271
OP_LFALSESKIP
@ OP_LFALSESKIP
Definition: lopcodes.h:206
checkstackGCp
#define checkstackGCp(L, n, p)
Definition: ldo.h:40
MAXUTF
#define MAXUTF
Definition: lutf8lib.c:26
luaD_hookcall
void luaD_hookcall(lua_State *L, CallInfo *ci)
Definition: ldo.c:333
luaS_createlngstrobj
TString * luaS_createlngstrobj(lua_State *L, size_t l)
Definition: lstring.c:157
setbtvalue
#define setbtvalue(obj)
Definition: lobject.h:229
luaV_lessthan
int luaV_lessthan(lua_State *L, const TValue *l, const TValue *r)
Definition: lvm.c:532
vmcase
#define vmcase(l)
Definition: lvm.c:1115
luaD_tryfuncTM
void luaD_tryfuncTM(lua_State *L, StkId func)
Definition: ldo.c:374
luaT_trybinTM
void luaT_trybinTM(lua_State *L, const TValue *p1, const TValue *p2, StkId res, TMS event)
Definition: ltm.c:148
TM_LE
@ TM_LE
Definition: ltm.h:40
next
#define next(ls)
Definition: llex.c:32
luaL_addvalue
LUALIB_API void luaL_addvalue(luaL_Buffer *B)
Definition: lauxlib.c:609
LTfloatint
static int LTfloatint(lua_Number f, lua_Integer i)
Definition: lvm.c:443
CallInfo::top
StkId top
Definition: lstate.h:162
OP_BAND
@ OP_BAND
Definition: lopcodes.h:251
nvalue
#define nvalue(o)
Definition: lobject.h:308
luaS_eqlngstr
int luaS_eqlngstr(TString *a, TString *b)
Definition: lstring.c:34
CallInfo::callstatus
unsigned short callstatus
Definition: lstate.h:185
l_lei
#define l_lei(a, b)
Definition: lvm.c:872
utfchar
static int utfchar(lua_State *L)
Definition: lutf8lib.c:161
luaF_close
int luaF_close(lua_State *L, StkId level, int status)
Definition: lfunc.c:223
GETARG_C
#define GETARG_C(i)
Definition: lopcodes.h:132
hvalue
#define hvalue(o)
Definition: lobject.h:659
luaH_finishset
void luaH_finishset(lua_State *L, Table *t, const TValue *key, const TValue *slot, TValue *value)
Definition: ltable.c:779
updatestack
#define updatestack(ci)
Definition: lvm.c:1048
OP_FORPREP
@ OP_FORPREP
Definition: lopcodes.h:293
OP_LT
@ OP_LT
Definition: lopcodes.h:272
svalue
#define svalue(o)
Definition: lobject.h:385
LUA_VUSERDATA
#define LUA_VUSERDATA
Definition: lobject.h:409
forlimit
static int forlimit(lua_State *L, lua_Integer init, const TValue *lim, lua_Integer *p, lua_Integer step)
Definition: lvm.c:176
OP_NEWTABLE
@ OP_NEWTABLE
Definition: lopcodes.h:222
OP_RETURN1
@ OP_RETURN1
Definition: lopcodes.h:290
luaG_forerror
l_noret luaG_forerror(lua_State *L, const TValue *o, const char *what)
Definition: ldebug.c:700
OP_SETUPVAL
@ OP_SETUPVAL
Definition: lopcodes.h:210
luaL_pushfail
#define luaL_pushfail(L)
Definition: lauxlib.h:157
luaC_barrier
#define luaC_barrier(L, p, v)
Definition: lgc.h:165
funcs
static const luaL_Reg funcs[]
Definition: lutf8lib.c:271
CallInfo::u
union CallInfo::@11 u
OP_LOADNIL
@ OP_LOADNIL
Definition: lopcodes.h:208
LClosure::upvals
UpVal * upvals[1]
Definition: lobject.h:634
OP_LEI
@ OP_LEI
Definition: lopcodes.h:278
luaV_tointeger
int luaV_tointeger(const TValue *obj, lua_Integer *p, F2Imod mode)
Definition: lvm.c:152
OP_SHL
@ OP_SHL
Definition: lopcodes.h:254
lopcodes.h
OP_MULK
@ OP_MULK
Definition: lopcodes.h:230
cvt2num
#define cvt2num(o)
Definition: lvm.h:24
lfunc.h
OP_SETTABUP
@ OP_SETTABUP
Definition: lopcodes.h:217
cast_num
#define cast_num(i)
Definition: llimits.h:127
ldo.h
F2Ifloor
@ F2Ifloor
Definition: lvm.h:45
OP_RETURN
@ OP_RETURN
Definition: lopcodes.h:288
pushclosure
static void pushclosure(lua_State *L, Proto *p, UpVal **encup, StkId base, StkId ra)
Definition: lvm.c:782
luaT_tryconcatTM
void luaT_tryconcatTM(lua_State *L)
Definition: ltm.c:167
cast_int
#define cast_int(i)
Definition: llimits.h:128
ttisfloat
#define ttisfloat(o)
Definition: lobject.h:305
OP_GTI
@ OP_GTI
Definition: lopcodes.h:279
ttisstring
#define ttisstring(o)
Definition: lobject.h:341
iter_auxlax
static int iter_auxlax(lua_State *L)
Definition: lutf8lib.c:252