/* All marks are conditional because a GC may happen while the prototype is still being created  */
static void traverseproto(global_State *g, Proto *f)
/* All marks are conditional because a GC may happen while the prototype is still being created  */
static void traverseproto(global_State *g, Proto *f)
{
    if (f->upvalues[i])
      stringmark(f->upvalues[i]);
  }
  for (i=0; i<f->sizep; i++) {
    if (f->p[i])
      markobject(g, f->p[i]);
  }
  for (i=0; i<f->sizelocvars; i++) {
    if (f->locvars[i].varname)
      stringmark(f->locvars[i].varname);
  }
}