From 439d74e29f3234a034777f88b260523afe8c0446 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Fri, 16 Aug 2013 15:55:49 -0300 Subject: added 'local' bit (true => object is only refered by local variables) --- lfunc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'lfunc.c') diff --git a/lfunc.c b/lfunc.c index 82d05656..cb0b4ef6 100644 --- a/lfunc.c +++ b/lfunc.c @@ -1,5 +1,5 @@ /* -** $Id: lfunc.c,v 2.31 2013/08/05 16:58:28 roberto Exp roberto $ +** $Id: lfunc.c,v 2.32 2013/08/07 12:18:11 roberto Exp roberto $ ** Auxiliary functions to manipulate prototypes and closures ** See Copyright Notice in lua.h */ @@ -80,6 +80,7 @@ void luaF_close (lua_State *L, StkId level) { uv->v = &uv->value; /* now current value lives here */ gch(o)->next = g->allgc; /* link upvalue into 'allgc' list */ g->allgc = o; + valnolocal(uv->v); /* keep local invariant */ luaC_checkupvalcolor(g, uv); } } @@ -88,6 +89,7 @@ void luaF_close (lua_State *L, StkId level) { Proto *luaF_newproto (lua_State *L) { Proto *f = &luaC_newobj(L, LUA_TPROTO, sizeof(Proto), NULL, 0)->p; + nolocal(obj2gco(f)); /* prototypes are never local */ f->k = NULL; f->sizek = 0; f->p = NULL; -- cgit v1.2.3-55-g6feb