aboutsummaryrefslogtreecommitdiff
path: root/lstate.c
diff options
context:
space:
mode:
Diffstat (limited to 'lstate.c')
-rw-r--r--lstate.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/lstate.c b/lstate.c
index ca606adb..15b771ee 100644
--- a/lstate.c
+++ b/lstate.c
@@ -20,6 +20,7 @@
20#include "ltm.h" 20#include "ltm.h"
21 21
22 22
23
23struct Sopen { 24struct Sopen {
24 int stacksize; 25 int stacksize;
25 lua_State *L; 26 lua_State *L;
@@ -29,21 +30,21 @@ struct Sopen {
29static void close_state (lua_State *L); 30static void close_state (lua_State *L);
30 31
31 32
32static void stack_init (lua_State *L, lua_State *OL, int stacksize) { 33static void stack_init (lua_State *L, lua_State *OL, int maxstacksize) {
33 if (stacksize == 0) 34 if (maxstacksize == 0)
34 stacksize = DEFAULT_STACK_SIZE; 35 maxstacksize = DEFAULT_MAXSTACK;
35 else 36 else
36 stacksize += LUA_MINSTACK; 37 maxstacksize += 2*LUA_MINSTACK;
37 stacksize += EXTRA_STACK; 38 L->stack = luaM_newvector(OL, BASIC_STACK_SIZE, TObject);
38 L->stack = luaM_newvector(OL, stacksize, TObject); 39 L->maxstacksize = maxstacksize;
39 L->stacksize = stacksize; 40 L->stacksize = BASIC_STACK_SIZE;
40 L->top = L->stack + RESERVED_STACK_PREFIX; 41 L->top = L->stack + RESERVED_STACK_PREFIX;
41 L->stack_last = L->stack+(L->stacksize-EXTRA_STACK)-1; 42 L->stack_last = L->stack+(BASIC_STACK_SIZE-EXTRA_STACK)-1;
42 L->base_ci = luaM_newvector(OL, 10, CallInfo); 43 L->base_ci = luaM_newvector(OL, BASIC_CI_SIZE, CallInfo);
43 L->ci = L->base_ci; 44 L->ci = L->base_ci;
44 L->ci->base = L->top; 45 L->ci->base = L->top;
45 L->ci->savedpc = NULL; 46 L->ci->pc = NULL;
46 L->size_ci = 10; 47 L->size_ci = BASIC_CI_SIZE;
47 L->end_ci = L->base_ci + L->size_ci; 48 L->end_ci = L->base_ci + L->size_ci;
48} 49}
49 50
@@ -84,6 +85,7 @@ static void f_luaopen (lua_State *L, void *ud) {
84static void preinit_state (lua_State *L) { 85static void preinit_state (lua_State *L) {
85 L->stack = NULL; 86 L->stack = NULL;
86 L->stacksize = 0; 87 L->stacksize = 0;
88 L->maxstacksize = 1;
87 L->errorJmp = NULL; 89 L->errorJmp = NULL;
88 L->callhook = NULL; 90 L->callhook = NULL;
89 L->linehook = NULL; 91 L->linehook = NULL;