summaryrefslogtreecommitdiff
path: root/lfunc.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2003-12-09 14:56:11 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2003-12-09 14:56:11 -0200
commitdf429f163ada6581d921e7f51b016f1abfeefddd (patch)
treea1af3ce961377e6548074f706f65e2b34181918f /lfunc.c
parentfe595a45c246faf2cf12084e7aac4b772f8f72da (diff)
downloadlua-df429f163ada6581d921e7f51b016f1abfeefddd.tar.gz
lua-df429f163ada6581d921e7f51b016f1abfeefddd.tar.bz2
lua-df429f163ada6581d921e7f51b016f1abfeefddd.zip
First version of incremental GC
Diffstat (limited to 'lfunc.c')
-rw-r--r--lfunc.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/lfunc.c b/lfunc.c
index 449bfd9a..77193ad7 100644
--- a/lfunc.c
+++ b/lfunc.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lfunc.c,v 1.72 2003/11/24 18:50:36 roberto Exp roberto $ 2** $Id: lfunc.c,v 1.73 2003/12/03 20:03:07 roberto Exp roberto $
3** Auxiliary functions to manipulate prototypes and closures 3** Auxiliary functions to manipulate prototypes and closures
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -68,7 +68,8 @@ UpVal *luaF_findupval (lua_State *L, StkId level) {
68void luaF_close (lua_State *L, StkId level) { 68void luaF_close (lua_State *L, StkId level) {
69 UpVal *uv; 69 UpVal *uv;
70 while ((uv = ngcotouv(L->openupval)) != NULL && uv->v >= level) { 70 while ((uv = ngcotouv(L->openupval)) != NULL && uv->v >= level) {
71 setobj(&uv->value, uv->v); /* save current value (write barrier) */ 71 setobj(&uv->value, uv->v);
72 luaC_barrier(L, uv, uv->v);
72 uv->v = &uv->value; /* now current value lives here */ 73 uv->v = &uv->value; /* now current value lives here */
73 L->openupval = uv->next; /* remove from `open' list */ 74 L->openupval = uv->next; /* remove from `open' list */
74 luaC_link(L, valtogco(uv), LUA_TUPVAL); 75 luaC_link(L, valtogco(uv), LUA_TUPVAL);