| 6695 | |
| 6696 | |
| 6697 | void luaC_linkupval (lua_State *L, UpVal *uv) { |
| 6698 | global_State *g = G(L); |
| 6699 | GCObject *o = obj2gco(uv); |
| 6700 | o->gch.next = g->rootgc; /* link upvalue into `rootgc' list */ |
| 6701 | g->rootgc = o; |
| 6702 | if (isgray(o)) { |
| 6703 | if (g->gcstate == GCSpropagate) { |
| 6704 | gray2black(o); /* closed upvalues need barrier */ |
| 6705 | luaC_barrier(L, uv, uv->v); |
| 6706 | } |
| 6707 | else { /* sweep phase: sweep it (turning it into white) */ |
| 6708 | makewhite(g, o); |
| 6709 | lua_assert(g->gcstate != GCSfinalize && g->gcstate != GCSpause); |
| 6710 | } |
| 6711 | } |
| 6712 | } |
| 6713 | |
| 6714 | /* |
| 6715 | ** $Id: llex.c,v 2.20.1.1 2007/12/27 13:02:25 roberto Exp $ |