diff options
Diffstat (limited to 'lstate.c')
-rw-r--r-- | lstate.c | 24 |
1 files changed, 13 insertions, 11 deletions
@@ -20,6 +20,7 @@ | |||
20 | #include "ltm.h" | 20 | #include "ltm.h" |
21 | 21 | ||
22 | 22 | ||
23 | |||
23 | struct Sopen { | 24 | struct Sopen { |
24 | int stacksize; | 25 | int stacksize; |
25 | lua_State *L; | 26 | lua_State *L; |
@@ -29,21 +30,21 @@ struct Sopen { | |||
29 | static void close_state (lua_State *L); | 30 | static void close_state (lua_State *L); |
30 | 31 | ||
31 | 32 | ||
32 | static void stack_init (lua_State *L, lua_State *OL, int stacksize) { | 33 | static 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) { | |||
84 | static void preinit_state (lua_State *L) { | 85 | static 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; |