aboutsummaryrefslogtreecommitdiff
path: root/ldo.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2013-08-27 15:53:35 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2013-08-27 15:53:35 -0300
commitaf35c7f398e8149b5f2481b63b399674e4ecdf7e (patch)
tree7d74f5c81bb0e2555cab4bce00a94a12a6d78604 /ldo.c
parent742b7377d38e43224ee5dda4bb83a42763c20af8 (diff)
downloadlua-af35c7f398e8149b5f2481b63b399674e4ecdf7e.tar.gz
lua-af35c7f398e8149b5f2481b63b399674e4ecdf7e.tar.bz2
lua-af35c7f398e8149b5f2481b63b399674e4ecdf7e.zip
upvalues collected by reference count
Diffstat (limited to 'ldo.c')
-rw-r--r--ldo.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/ldo.c b/ldo.c
index 47e80f8a..d90bf263 100644
--- a/ldo.c
+++ b/ldo.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: ldo.c,v 2.108.1.2 2013/04/19 21:03:23 roberto Exp $ 2** $Id: ldo.c,v 2.109 2013/04/19 21:05:04 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*/
@@ -141,10 +141,10 @@ int luaD_rawrunprotected (lua_State *L, Pfunc f, void *ud) {
141 141
142static void correctstack (lua_State *L, TValue *oldstack) { 142static void correctstack (lua_State *L, TValue *oldstack) {
143 CallInfo *ci; 143 CallInfo *ci;
144 GCObject *up; 144 UpVal *up;
145 L->top = (L->top - oldstack) + L->stack; 145 L->top = (L->top - oldstack) + L->stack;
146 for (up = L->openupval; up != NULL; up = up->gch.next) 146 for (up = L->openupval; up != NULL; up = up->u.op.next)
147 gco2uv(up)->v = (gco2uv(up)->v - oldstack) + L->stack; 147 up->v = (up->v - oldstack) + L->stack;
148 for (ci = L->ci; ci != NULL; ci = ci->previous) { 148 for (ci = L->ci; ci != NULL; ci = ci->previous) {
149 ci->top = (ci->top - oldstack) + L->stack; 149 ci->top = (ci->top - oldstack) + L->stack;
150 ci->func = (ci->func - oldstack) + L->stack; 150 ci->func = (ci->func - oldstack) + L->stack;
@@ -637,7 +637,6 @@ static void checkmode (lua_State *L, const char *mode, const char *x) {
637 637
638 638
639static void f_parser (lua_State *L, void *ud) { 639static void f_parser (lua_State *L, void *ud) {
640 int i;
641 Closure *cl; 640 Closure *cl;
642 struct SParser *p = cast(struct SParser *, ud); 641 struct SParser *p = cast(struct SParser *, ud);
643 int c = zgetc(p->z); /* read first character */ 642 int c = zgetc(p->z); /* read first character */
@@ -650,11 +649,7 @@ static void f_parser (lua_State *L, void *ud) {
650 cl = luaY_parser(L, p->z, &p->buff, &p->dyd, p->name, c); 649 cl = luaY_parser(L, p->z, &p->buff, &p->dyd, p->name, c);
651 } 650 }
652 lua_assert(cl->l.nupvalues == cl->l.p->sizeupvalues); 651 lua_assert(cl->l.nupvalues == cl->l.p->sizeupvalues);
653 for (i = 0; i < cl->l.nupvalues; i++) { /* initialize upvalues */ 652 luaF_initupvals(L, &cl->l);
654 UpVal *up = luaF_newupval(L);
655 cl->l.upvals[i] = up;
656 luaC_objbarrier(L, cl, up);
657 }
658} 653}
659 654
660 655