/* barrier for prototypes. When creating first closure (cache is NULL), use a forward barrier; this may be the only closure of the prototype (if it is a "regular" function, with a single instance) and the prototype may be big, so it is better to avoid traversing it again. Otherwise, use a backward barrier, to avoid marking all possible instances.  */
LUAI_FUNC void luaC_barrierproto_(lua_State *L, Proto *p, Closure *c)
/* barrier for prototypes. When creating first closure (cache is NULL), use a forward barrier; this may be the only closure of the prototype (if it is a "regular" function, with a single instance) and the prototype may be big, so it is better to avoid traversing it again. Otherwise, use a backward barrier, to avoid marking all possible instances.  */
LUAI_FUNC void luaC_barrierproto_(lua_State *L, Proto *p, Closure *c)
{
    luaC_objbarrier(L, p, c);
  }
  else {
    black2gray(obj2gco(p));
    p->gclist = g->grayagain;
    g->grayagain = obj2gco(p);
  }
}