|
|
@ -62,12 +62,11 @@ void luaF_initupvals (lua_State *L, LClosure *cl) { |
|
|
|
** Create a new upvalue at the given level, and link it to the list of |
|
|
|
** open upvalues of 'L' after entry 'prev'. |
|
|
|
**/ |
|
|
|
static UpVal *newupval (lua_State *L, int tbc, StkId level, UpVal **prev) { |
|
|
|
static UpVal *newupval (lua_State *L, StkId level, UpVal **prev) { |
|
|
|
GCObject *o = luaC_newobj(L, LUA_VUPVAL, sizeof(UpVal)); |
|
|
|
UpVal *uv = gco2upv(o); |
|
|
|
UpVal *next = *prev; |
|
|
|
uv->v.p = s2v(level); /* current value lives in the stack */ |
|
|
|
uv->tbc = tbc; |
|
|
|
uv->u.open.next = next; /* link it to list of open upvalues */ |
|
|
|
uv->u.open.previous = prev; |
|
|
|
if (next) |
|
|
@ -96,7 +95,7 @@ UpVal *luaF_findupval (lua_State *L, StkId level) { |
|
|
|
pp = &p->u.open.next; |
|
|
|
} |
|
|
|
/* not found: create a new upvalue after 'pp' */ |
|
|
|
return newupval(L, 0, level, pp); |
|
|
|
return newupval(L, level, pp); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|