diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2001-03-07 15:09:25 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2001-03-07 15:09:25 -0300 |
commit | 6048c4f74d7d63d6c2f5a53cd8e4ee01f6702be9 (patch) | |
tree | 1f8fd00995288958a32ebd8f97863c5f1cb8f776 /lgc.c | |
parent | 5e870f86a255988ca85eda795adc31063ec1ac70 (diff) | |
download | lua-6048c4f74d7d63d6c2f5a53cd8e4ee01f6702be9.tar.gz lua-6048c4f74d7d63d6c2f5a53cd8e4ee01f6702be9.tar.bz2 lua-6048c4f74d7d63d6c2f5a53cd8e4ee01f6702be9.zip |
better way to link callinfo's and stack
Diffstat (limited to 'lgc.c')
-rw-r--r-- | lgc.c | 9 |
1 files changed, 3 insertions, 6 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lgc.c,v 1.92 2001/02/23 17:17:25 roberto Exp roberto $ | 2 | ** $Id: lgc.c,v 1.93 2001/03/02 17:27:50 roberto Exp roberto $ |
3 | ** Garbage Collector | 3 | ** Garbage Collector |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -85,9 +85,6 @@ static void markobject (GCState *st, TObject *o) { | |||
85 | case LUA_TUSERDATA: case LUA_TSTRING: | 85 | case LUA_TUSERDATA: case LUA_TSTRING: |
86 | strmark(tsvalue(o)); | 86 | strmark(tsvalue(o)); |
87 | break; | 87 | break; |
88 | case LUA_TMARK: | ||
89 | markclosure(st, infovalue(o)->func); | ||
90 | break; | ||
91 | case LUA_TFUNCTION: | 88 | case LUA_TFUNCTION: |
92 | markclosure(st, clvalue(o)); | 89 | markclosure(st, clvalue(o)); |
93 | break; | 90 | break; |
@@ -107,8 +104,8 @@ static void markstacks (lua_State *L, GCState *st) { | |||
107 | marktable(st, L1->gt); /* mark table of globals */ | 104 | marktable(st, L1->gt); /* mark table of globals */ |
108 | for (o=L1->stack; o<L1->top; o++) | 105 | for (o=L1->stack; o<L1->top; o++) |
109 | markobject(st, o); | 106 | markobject(st, o); |
110 | lim = (L1->stack_last - L1->top > MAXSTACK) ? L1->top+MAXSTACK | 107 | lim = (L1->stack_last - L1->ci->base > MAXSTACK) ? L1->ci->base+MAXSTACK |
111 | : L1->stack_last; | 108 | : L1->stack_last; |
112 | for (; o<=lim; o++) setnilvalue(o); | 109 | for (; o<=lim; o++) setnilvalue(o); |
113 | lua_assert(L1->previous->next == L1 && L1->next->previous == L1); | 110 | lua_assert(L1->previous->next == L1 && L1->next->previous == L1); |
114 | L1 = L1->next; | 111 | L1 = L1->next; |