diff options
Diffstat (limited to 'src/lj_func.c')
-rw-r--r-- | src/lj_func.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/lj_func.c b/src/lj_func.c index b679ec81..abb7afd5 100644 --- a/src/lj_func.c +++ b/src/lj_func.c | |||
@@ -76,9 +76,9 @@ static GCupval *func_finduv(lua_State *L, TValue *slot) | |||
76 | GCupval *p; | 76 | GCupval *p; |
77 | GCupval *uv; | 77 | GCupval *uv; |
78 | /* Search the sorted list of open upvalues. */ | 78 | /* Search the sorted list of open upvalues. */ |
79 | while (gcref(*pp) != NULL && (p = gco2uv(gcref(*pp)))->v >= slot) { | 79 | while (gcref(*pp) != NULL && uvval((p = gco2uv(gcref(*pp)))) >= slot) { |
80 | lua_assert(!p->closed && p->v != &p->tv); | 80 | lua_assert(!p->closed && uvval(p) != &p->tv); |
81 | if (p->v == slot) { /* Found open upvalue pointing to same slot? */ | 81 | if (uvval(p) == slot) { /* Found open upvalue pointing to same slot? */ |
82 | if (isdead(g, obj2gco(p))) /* Resurrect it, if it's dead. */ | 82 | if (isdead(g, obj2gco(p))) /* Resurrect it, if it's dead. */ |
83 | flipwhite(obj2gco(p)); | 83 | flipwhite(obj2gco(p)); |
84 | return p; | 84 | return p; |
@@ -90,7 +90,7 @@ static GCupval *func_finduv(lua_State *L, TValue *slot) | |||
90 | newwhite(g, uv); | 90 | newwhite(g, uv); |
91 | uv->gct = ~LJ_TUPVAL; | 91 | uv->gct = ~LJ_TUPVAL; |
92 | uv->closed = 0; /* Still open. */ | 92 | uv->closed = 0; /* Still open. */ |
93 | uv->v = slot; /* Pointing to the stack slot. */ | 93 | setmref(uv->v, slot); /* Pointing to the stack slot. */ |
94 | /* NOBARRIER: The GCupval is new (marked white) and open. */ | 94 | /* NOBARRIER: The GCupval is new (marked white) and open. */ |
95 | setgcrefr(uv->nextgc, *pp); /* Insert into sorted list of open upvalues. */ | 95 | setgcrefr(uv->nextgc, *pp); /* Insert into sorted list of open upvalues. */ |
96 | setgcref(*pp, obj2gco(uv)); | 96 | setgcref(*pp, obj2gco(uv)); |
@@ -108,9 +108,9 @@ void LJ_FASTCALL lj_func_closeuv(lua_State *L, TValue *level) | |||
108 | GCupval *uv; | 108 | GCupval *uv; |
109 | global_State *g = G(L); | 109 | global_State *g = G(L); |
110 | while (gcref(L->openupval) != NULL && | 110 | while (gcref(L->openupval) != NULL && |
111 | (uv = gco2uv(gcref(L->openupval)))->v >= level) { | 111 | uvval((uv = gco2uv(gcref(L->openupval)))) >= level) { |
112 | GCobj *o = obj2gco(uv); | 112 | GCobj *o = obj2gco(uv); |
113 | lua_assert(!isblack(o) && !uv->closed && uv->v != &uv->tv); | 113 | lua_assert(!isblack(o) && !uv->closed && uvval(uv) != &uv->tv); |
114 | setgcrefr(L->openupval, uv->nextgc); /* No longer in open list. */ | 114 | setgcrefr(L->openupval, uv->nextgc); /* No longer in open list. */ |
115 | if (isdead(g, o)) { | 115 | if (isdead(g, o)) { |
116 | lj_func_freeuv(g, uv); | 116 | lj_func_freeuv(g, uv); |