| 786 | |
| 787 | |
| 788 | static GCObject *udata2finalize (global_State *g) { |
| 789 | GCObject *o = g->tobefnz; /* get first element */ |
| 790 | lua_assert(isfinalized(o)); |
| 791 | g->tobefnz = gch(o)->next; /* remove it from 'tobefnz' list */ |
| 792 | gch(o)->next = g->allgc; /* return it to 'allgc' list */ |
| 793 | g->allgc = o; |
| 794 | resetbit(gch(o)->marked, SEPARATED); /* mark that it is not in 'tobefnz' */ |
| 795 | lua_assert(!isold(o)); /* see MOVE OLD rule */ |
| 796 | if (!keepinvariantout(g)) /* not keeping invariant? */ |
| 797 | makewhite(g, o); /* "sweep" object */ |
| 798 | return o; |
| 799 | } |
| 800 | |
| 801 | |
| 802 | static void dothecall (lua_State *L, void *ud) { |