summaryrefslogtreecommitdiff
path: root/src/lj_state.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_state.c')
-rw-r--r--src/lj_state.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/lj_state.c b/src/lj_state.c
index 69f182ed..8f8be97b 100644
--- a/src/lj_state.c
+++ b/src/lj_state.c
@@ -37,8 +37,8 @@
37** Calls to metamethods store their arguments beyond the current top 37** Calls to metamethods store their arguments beyond the current top
38** without checking for the stack limit. This avoids stack resizes which 38** without checking for the stack limit. This avoids stack resizes which
39** would invalidate passed TValue pointers. The stack check is performed 39** would invalidate passed TValue pointers. The stack check is performed
40** later by the call gate. This can safely resize the stack or raise an 40** later by the function header. This can safely resize the stack or raise
41** error. Thus we need some extra slots beyond the current stack limit. 41** an error. Thus we need some extra slots beyond the current stack limit.
42** 42**
43** Most metamethods need 4 slots above top (cont, mobj, arg1, arg2) plus 43** Most metamethods need 4 slots above top (cont, mobj, arg1, arg2) plus
44** one extra slot if mobj is not a function. Only lj_meta_tset needs 5 44** one extra slot if mobj is not a function. Only lj_meta_tset needs 5
@@ -119,8 +119,6 @@ static void stack_init(lua_State *L1, lua_State *L)
119 119
120/* -- State handling ------------------------------------------------------ */ 120/* -- State handling ------------------------------------------------------ */
121 121
122#define GG_SIZE (sizeof(GG_State)+(BC__MAX*2)*sizeof(ASMFunction))
123
124/* Open parts that may cause memory-allocation errors. */ 122/* Open parts that may cause memory-allocation errors. */
125static TValue *cpluaopen(lua_State *L, lua_CFunction dummy, void *ud) 123static TValue *cpluaopen(lua_State *L, lua_CFunction dummy, void *ud)
126{ 124{
@@ -156,8 +154,8 @@ static void close_state(lua_State *L)
156 lj_mem_freevec(g, g->strhash, g->strmask+1, GCRef); 154 lj_mem_freevec(g, g->strhash, g->strmask+1, GCRef);
157 lj_str_freebuf(g, &g->tmpbuf); 155 lj_str_freebuf(g, &g->tmpbuf);
158 lj_mem_freevec(g, L->stack, L->stacksize, TValue); 156 lj_mem_freevec(g, L->stack, L->stacksize, TValue);
159 lua_assert(g->gc.total == GG_SIZE); 157 lua_assert(g->gc.total == sizeof(GG_State));
160 g->allocf(g->allocd, G2GG(g), GG_SIZE, 0); 158 g->allocf(g->allocd, G2GG(g), sizeof(GG_State), 0);
161 } 159 }
162} 160}
163 161
@@ -167,7 +165,7 @@ lua_State *lj_state_newstate(lua_Alloc f, void *ud)
167LUA_API lua_State *lua_newstate(lua_Alloc f, void *ud) 165LUA_API lua_State *lua_newstate(lua_Alloc f, void *ud)
168#endif 166#endif
169{ 167{
170 GG_State *GG = cast(GG_State *, f(ud, NULL, 0, GG_SIZE)); 168 GG_State *GG = cast(GG_State *, f(ud, NULL, 0, sizeof(GG_State)));
171 lua_State *L = &GG->L; 169 lua_State *L = &GG->L;
172 global_State *g = &GG->g; 170 global_State *g = &GG->g;
173 if (GG == NULL || !checkptr32(GG)) return NULL; 171 if (GG == NULL || !checkptr32(GG)) return NULL;
@@ -190,7 +188,7 @@ LUA_API lua_State *lua_newstate(lua_Alloc f, void *ud)
190 g->gc.state = GCSpause; 188 g->gc.state = GCSpause;
191 setgcref(g->gc.root, obj2gco(L)); 189 setgcref(g->gc.root, obj2gco(L));
192 g->gc.sweep = &g->gc.root; 190 g->gc.sweep = &g->gc.root;
193 g->gc.total = GG_SIZE; 191 g->gc.total = sizeof(GG_State);
194 g->gc.pause = LUAI_GCPAUSE; 192 g->gc.pause = LUAI_GCPAUSE;
195 g->gc.stepmul = LUAI_GCMUL; 193 g->gc.stepmul = LUAI_GCMUL;
196 lj_dispatch_init((GG_State *)L); 194 lj_dispatch_init((GG_State *)L);