MCPcopy Create free account
hub / github.com/RomanKubiak/ctrlr / reallymarkobject

Function reallymarkobject

Source/Misc/lua/src/lua.c:6071–6114  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6069
6070
6071static void reallymarkobject (global_State *g, GCObject *o) {
6072lua_assert(iswhite(o) && !isdead(g, o));
6073white2gray(o);
6074switch (o->gch.tt) {
6075case LUA_TSTRING: {
6076return;
6077}
6078case LUA_TUSERDATA: {
6079Table *mt = gco2u(o)->metatable;
6080gray2black(o); /* udata are never gray */
6081if (mt) markobject(g, mt);
6082markobject(g, gco2u(o)->env);
6083return;
6084}
6085case LUA_TUPVAL: {
6086UpVal *uv = gco2uv(o);
6087markvalue(g, uv->v);
6088if (uv->v == &uv->u.value) /* closed? */
6089gray2black(o); /* open upvalues are never black */
6090return;
6091}
6092case LUA_TFUNCTION: {
6093gco2cl(o)->c.gclist = g->gray;
6094g->gray = o;
6095break;
6096}
6097case LUA_TTABLE: {
6098gco2h(o)->gclist = g->gray;
6099g->gray = o;
6100break;
6101}
6102case LUA_TTHREAD: {
6103gco2th(o)->gclist = g->gray;
6104g->gray = o;
6105break;
6106}
6107case LUA_TPROTO: {
6108gco2p(o)->gclist = g->gray;
6109g->gray = o;
6110break;
6111}
6112default: lua_assert(0);
6113}
6114}
6115
6116
6117static void marktmu (global_State *g) {

Callers 2

marktmuFunction · 0.85
luaC_barrierfFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected