MCPcopy Create free account
hub / github.com/EmmyLua/EmmyLuaDebugger / traversetable

Function traversetable

third-party/lua-5.5.0/src/lgc.c:608–628  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

606
607
608static l_mem traversetable (global_State *g, Table *h) {
609 markobjectN(g, h->metatable);
610 switch (getmode(g, h)) {
611 case 0: /* not weak */
612 traversestrongtable(g, h);
613 break;
614 case 1: /* weak values */
615 traverseweakvalue(g, h);
616 break;
617 case 2: /* weak keys */
618 traverseephemeron(g, h, 0);
619 break;
620 case 3: /* all weak; nothing to traverse */
621 if (g->gcstate == GCSpropagate)
622 linkgclist(h, g->grayagain); /* must visit again its metatable */
623 else
624 linkgclist(h, g->allweak); /* must clear collected entries */
625 break;
626 }
627 return cast(l_mem, 1 + 2*sizenode(h) + h->asize);
628}
629
630
631static l_mem traverseudata (global_State *g, Udata *u) {

Callers 1

propagatemarkFunction · 0.70

Calls 4

getmodeFunction · 0.85
traversestrongtableFunction · 0.70
traverseweakvalueFunction · 0.70
traverseephemeronFunction · 0.70

Tested by

no test coverage detected