FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
emscripten/tests/lua/src/lstate.h at universal-python · JavaScriptIOT/emscripten · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
JavaScriptIOT
/
emscripten
Public
forked from
emscripten-core/emscripten
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
emscripten
/
tests
/
lua
/
src
/
lstate.h
Copy path
More file actions
More file actions
Latest commit
History
History
History
228 lines (186 loc) · 7.36 KB
Breadcrumbs
emscripten
/
tests
/
lua
/
src
/
lstate.h
Copy path
File metadata and controls
228 lines (186 loc) · 7.36 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
/*
** $Id: lstate.h,v 2.82 2012/07/02 13:37:04 roberto Exp $
** Global State
** See Copyright Notice in lua.h
*/
#ifndef
lstate_h
#define
lstate_h
#include
"lua.h"
#include
"lobject.h"
#include
"ltm.h"
#include
"lzio.h"
/*
** Some notes about garbage-collected objects: All objects in Lua must
** be kept somehow accessible until being freed.
**
** Lua keeps most objects linked in list g->allgc. The link uses field
** 'next' of the CommonHeader.
**
** Strings are kept in several lists headed by the array g->strt.hash.
**
** Open upvalues are not subject to independent garbage collection. They
** are collected together with their respective threads. Lua keeps a
** double-linked list with all open upvalues (g->uvhead) so that it can
** mark objects referred by them. (They are always gray, so they must
** be remarked in the atomic step. Usually their contents would be marked
** when traversing the respective threads, but the thread may already be
** dead, while the upvalue is still accessible through closures.)
**
** Objects with finalizers are kept in the list g->finobj.
**
** The list g->tobefnz links all objects being finalized.
*/
struct
lua_longjmp
;
/* defined in ldo.c */
/* extra stack space to handle TM calls and some other extras */
#define
EXTRA_STACK
5
#define
BASIC_STACK_SIZE
(2*LUA_MINSTACK)
/* kinds of Garbage Collection */
#define
KGC_NORMAL
0
#define
KGC_EMERGENCY
1
/* gc was forced by an allocation failure */
#define
KGC_GEN
2
/* generational collection */
typedef
struct
stringtable
{
GCObject
*
*
hash
;
lu_int32
nuse
;
/* number of elements */
int
size
;
}
stringtable
;
/*
** information about a call
*/
typedef
struct
CallInfo
{
StkId
func
;
/* function index in the stack */
StkId
top
;
/* top for this function */
struct
CallInfo
*
previous
,
*
next
;
/* dynamic call link */
short
nresults
;
/* expected number of results from this function */
lu_byte
callstatus
;
ptrdiff_t
extra
;
union
{
struct
{
/* only for Lua functions */
StkId
base
;
/* base for this function */
const
Instruction
*
savedpc
;
}
l
;
struct
{
/* only for C functions */
int
ctx
;
/* context info. in case of yields */
lua_CFunction
k
;
/* continuation in case of yields */
ptrdiff_t
old_errfunc
;
lu_byte
old_allowhook
;
lu_byte
status
;
}
c
;
}
u
;
}
CallInfo
;
/*
** Bits in CallInfo status
*/
#define
CIST_LUA
(1<<0)
/* call is running a Lua function */
#define
CIST_HOOKED
(1<<1)
/* call is running a debug hook */
#define
CIST_REENTRY
(1<<2)
/* call is running on same invocation of
luaV_execute of previous call */
#define
CIST_YIELDED
(1<<3)
/* call reentered after suspension */
#define
CIST_YPCALL
(1<<4)
/* call is a yieldable protected call */
#define
CIST_STAT
(1<<5)
/* call has an error status (pcall) */
#define
CIST_TAIL
(1<<6)
/* call was tail called */
#define
CIST_HOOKYIELD
(1<<7)
/* last hook called yielded */
#define
isLua
(
ci
) ((ci)->callstatus & CIST_LUA)
/*
** `global state', shared by all threads of this state
*/
typedef
struct
global_State
{
lua_Alloc
frealloc
;
/* function to reallocate memory */
void
*
ud
;
/* auxiliary data to `frealloc' */
lu_mem
totalbytes
;
/* number of bytes currently allocated - GCdebt */
l_mem
GCdebt
;
/* bytes allocated not yet compensated by the collector */
lu_mem
GCmemtrav
;
/* memory traversed by the GC */
lu_mem
GCestimate
;
/* an estimate of the non-garbage memory in use */
stringtable
strt
;
/* hash table for strings */
TValue
l_registry
;
unsigned
int
seed
;
/* randomized seed for hashes */
lu_byte
currentwhite
;
lu_byte
gcstate
;
/* state of garbage collector */
lu_byte
gckind
;
/* kind of GC running */
lu_byte
gcrunning
;
/* true if GC is running */
int
sweepstrgc
;
/* position of sweep in `strt' */
GCObject
*
allgc
;
/* list of all collectable objects */
GCObject
*
finobj
;
/* list of collectable objects with finalizers */
GCObject
*
*
sweepgc
;
/* current position of sweep in list 'allgc' */
GCObject
*
*
sweepfin
;
/* current position of sweep in list 'finobj' */
GCObject
*
gray
;
/* list of gray objects */
GCObject
*
grayagain
;
/* list of objects to be traversed atomically */
GCObject
*
weak
;
/* list of tables with weak values */
GCObject
*
ephemeron
;
/* list of ephemeron tables (weak keys) */
GCObject
*
allweak
;
/* list of all-weak tables */
GCObject
*
tobefnz
;
/* list of userdata to be GC */
UpVal
uvhead
;
/* head of double-linked list of all open upvalues */
Mbuffer
buff
;
/* temporary buffer for string concatenation */
int
gcpause
;
/* size of pause between successive GCs */
int
gcmajorinc
;
/* pause between major collections (only in gen. mode) */
int
gcstepmul
;
/* GC `granularity' */
lua_CFunction
panic
;
/* to be called in unprotected errors */
struct
lua_State
*
mainthread
;
const
lua_Number
*
version
;
/* pointer to version number */
TString
*
memerrmsg
;
/* memory-error message */
TString
*
tmname
[
TM_N
];
/* array with tag-method names */
struct
Table
*
mt
[
LUA_NUMTAGS
];
/* metatables for basic types */
}
global_State
;
/*
** `per thread' state
*/
struct
lua_State
{
CommonHeader
;
lu_byte
status
;
StkId
top
;
/* first free slot in the stack */
global_State
*
l_G
;
CallInfo
*
ci
;
/* call info for current function */
const
Instruction
*
oldpc
;
/* last pc traced */
StkId
stack_last
;
/* last free slot in the stack */
StkId
stack
;
/* stack base */
int
stacksize
;
unsigned short
nny
;
/* number of non-yieldable calls in stack */
unsigned short
nCcalls
;
/* number of nested C calls */
lu_byte
hookmask
;
lu_byte
allowhook
;
int
basehookcount
;
int
hookcount
;
lua_Hook
hook
;
GCObject
*
openupval
;
/* list of open upvalues in this stack */
GCObject
*
gclist
;
struct
lua_longjmp
*
errorJmp
;
/* current error recover point */
ptrdiff_t
errfunc
;
/* current error handling function (stack index) */
CallInfo
base_ci
;
/* CallInfo for first level (C calling Lua) */
};
#define
G
(
L
) (L->l_G)
/*
** Union of all collectable objects
*/
union
GCObject
{
GCheader
gch
;
/* common header */
union
TString
ts
;
union
Udata
u
;
union
Closure
cl
;
struct
Table
h
;
struct
Proto
p
;
struct
UpVal
uv
;
struct
lua_State
th
;
/* thread */
};
#define
gch
(
o
) (&(o)->gch)
/* macros to convert a GCObject into a specific value */
#define
rawgco2ts
(
o
) \
check_exp(novariant((o)->gch.tt) == LUA_TSTRING, &((o)->ts))
#define
gco2ts
(
o
) (&rawgco2ts(o)->tsv)
#define
rawgco2u
(
o
) check_exp((o)->gch.tt == LUA_TUSERDATA, &((o)->u))
#define
gco2u
(
o
) (&rawgco2u(o)->uv)
#define
gco2lcl
(
o
) check_exp((o)->gch.tt == LUA_TLCL, &((o)->cl.l))
#define
gco2ccl
(
o
) check_exp((o)->gch.tt == LUA_TCCL, &((o)->cl.c))
#define
gco2cl
(
o
) \
check_exp(novariant((o)->gch.tt) == LUA_TFUNCTION, &((o)->cl))
#define
gco2t
(
o
) check_exp((o)->gch.tt == LUA_TTABLE, &((o)->h))
#define
gco2p
(
o
) check_exp((o)->gch.tt == LUA_TPROTO, &((o)->p))
#define
gco2uv
(
o
) check_exp((o)->gch.tt == LUA_TUPVAL, &((o)->uv))
#define
gco2th
(
o
) check_exp((o)->gch.tt == LUA_TTHREAD, &((o)->th))
/* macro to convert any Lua object into a GCObject */
#define
obj2gco
(
v
) (cast(GCObject *, (v)))
/* actual number of total bytes allocated */
#define
gettotalbytes
(
g
) ((g)->totalbytes + (g)->GCdebt)
LUAI_FUNC
void
luaE_setdebt
(
global_State
*
g
,
l_mem
debt
);
LUAI_FUNC
void
luaE_freethread
(
lua_State
*
L
,
lua_State
*
L1
);
LUAI_FUNC
CallInfo
*
luaE_extendCI
(
lua_State
*
L
);
LUAI_FUNC
void
luaE_freeCI
(
lua_State
*
L
);
#endif
Back
|
FazBrowse Home
|
New Git URL