static GCObject *udata2finalize (global_State *g) {
  GCObject *o = g->tobefnz;  /* get first element */
  lua_assert(tofinalize(o));
  g->tobefnz = o->next;  /* remove it from 'tobefnz' list */
  o->next = g->allgc;  /* return it to 'allgc' list */
  g->allgc = o;
  resetbit(o->marked, FINALIZEDBIT);  /* object is "normal" again */
  if (issweepphase(g))
    makewhite(g, o);  /* "sweep" object */
  return o;
}
static GCObject *udata2finalize (global_State *g) {
  GCObject *o = g->tobefnz;   
  lua_assert(tofinalize(o));
  g->tobefnz = o->next;   
  o->next = g->allgc;   
  g->allgc = o;
  resetbit(o->marked, FINALIZEDBIT);   
  if (issweepphase(g))
    makewhite(g, o);   
  return o;
}