aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1997-11-26 18:28:22 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1997-11-26 18:28:22 -0200
commite962330df9311515cf414097cd077ab93a928089 (patch)
treea4c7b306661797f130aadd57870f2c19ffbca715
parentb291e5000612cff5fd9d80fe242236e846c17eb2 (diff)
downloadlua-e962330df9311515cf414097cd077ab93a928089.tar.gz
lua-e962330df9311515cf414097cd077ab93a928089.tar.bz2
lua-e962330df9311515cf414097cd077ab93a928089.zip
"stacklimit" is not necessary.
-rw-r--r--ldo.c14
-rw-r--r--lstate.h3
2 files changed, 6 insertions, 11 deletions
diff --git a/ldo.c b/ldo.c
index a50d9da3..5b03633f 100644
--- a/ldo.c
+++ b/ldo.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: ldo.c,v 1.9 1997/11/19 17:29:23 roberto Exp roberto $ 2** $Id: ldo.c,v 1.10 1997/11/21 19:00:46 roberto Exp roberto $
3** Stack and Call structure of Lua 3** Stack and Call structure of Lua
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -58,7 +58,6 @@ static void initCfunc (TObject *o, lua_CFunction f)
58 58
59void luaD_init (void) 59void luaD_init (void)
60{ 60{
61 L->stacklimit = STACK_LIMIT;
62 L->stack.stack = luaM_newvector(INIT_STACK_SIZE, TObject); 61 L->stack.stack = luaM_newvector(INIT_STACK_SIZE, TObject);
63 L->stack.top = L->stack.stack; 62 L->stack.top = L->stack.stack;
64 L->stack.last = L->stack.stack+(INIT_STACK_SIZE-1); 63 L->stack.last = L->stack.stack+(INIT_STACK_SIZE-1);
@@ -71,16 +70,13 @@ void luaD_checkstack (int n)
71 if (L->stack.last-L->stack.top <= n) { 70 if (L->stack.last-L->stack.top <= n) {
72 StkId top = L->stack.top-L->stack.stack; 71 StkId top = L->stack.top-L->stack.stack;
73 int stacksize = (L->stack.last-L->stack.stack)+1+STACK_EXTRA+n; 72 int stacksize = (L->stack.last-L->stack.stack)+1+STACK_EXTRA+n;
74 L->stack.stack = luaM_reallocvector(L->stack.stack, stacksize,TObject); 73 L->stack.stack = luaM_reallocvector(L->stack.stack, stacksize, TObject);
75 L->stack.last = L->stack.stack+(stacksize-1); 74 L->stack.last = L->stack.stack+(stacksize-1);
76 L->stack.top = L->stack.stack + top; 75 L->stack.top = L->stack.stack + top;
77 if (stacksize >= L->stacklimit) { 76 if (stacksize >= STACK_LIMIT) {
78 /* extra space to run error handler */ 77 if (lua_stackedfunction(100) == LUA_NOOBJECT)
79 L->stacklimit = stacksize+STACK_EXTRA; 78 /* doesn't look like a recursive loop */
80 if (lua_stackedfunction(100) == LUA_NOOBJECT) {
81 /* less than 100 functions on the stack: cannot be recursive loop */
82 lua_error("Lua2C - C2Lua overflow"); 79 lua_error("Lua2C - C2Lua overflow");
83 }
84 else 80 else
85 lua_error(stackEM); 81 lua_error(stackEM);
86 } 82 }
diff --git a/lstate.h b/lstate.h
index dc3a456b..83117949 100644
--- a/lstate.h
+++ b/lstate.h
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lstate.h,v 1.1 1997/11/19 17:30:36 roberto Exp roberto $ 2** $Id: lstate.h,v 1.2 1997/11/21 19:00:46 roberto Exp roberto $
3** Global State 3** Global State
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -47,7 +47,6 @@ struct ref {
47typedef struct LState { 47typedef struct LState {
48 struct Stack stack; /* Lua stack */ 48 struct Stack stack; /* Lua stack */
49 struct C_Lua_Stack Cstack; /* C2lua struct */ 49 struct C_Lua_Stack Cstack; /* C2lua struct */
50 int stacklimit; /* limit for stack overflow */
51 void *errorJmp; /* current error recover point */ 50 void *errorJmp; /* current error recover point */
52 TObject errorim; /* error tag method */ 51 TObject errorim; /* error tag method */
53 struct C_Lua_Stack Cblocks[MAX_C_BLOCKS]; 52 struct C_Lua_Stack Cblocks[MAX_C_BLOCKS];