MCPcopy Create free account
hub / github.com/CppCXY/EmmyLuaCodeStyle / freeobj

Function freeobj

3rd/lua-5.4.3/src/lgc.c:764–806  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

762
763
764static void freeobj (lua_State *L, GCObject *o) {
765 switch (o->tt) {
766 case LUA_VPROTO:
767 luaF_freeproto(L, gco2p(o));
768 break;
769 case LUA_VUPVAL:
770 freeupval(L, gco2upv(o));
771 break;
772 case LUA_VLCL: {
773 LClosure *cl = gco2lcl(o);
774 luaM_freemem(L, cl, sizeLclosure(cl->nupvalues));
775 break;
776 }
777 case LUA_VCCL: {
778 CClosure *cl = gco2ccl(o);
779 luaM_freemem(L, cl, sizeCclosure(cl->nupvalues));
780 break;
781 }
782 case LUA_VTABLE:
783 luaH_free(L, gco2t(o));
784 break;
785 case LUA_VTHREAD:
786 luaE_freethread(L, gco2th(o));
787 break;
788 case LUA_VUSERDATA: {
789 Udata *u = gco2u(o);
790 luaM_freemem(L, o, sizeudata(u->nuvalue, u->len));
791 break;
792 }
793 case LUA_VSHRSTR: {
794 TString *ts = gco2ts(o);
795 luaS_remove(L, ts); /* remove it from hash table */
796 luaM_freemem(L, ts, sizelstring(ts->shrlen));
797 break;
798 }
799 case LUA_VLNGSTR: {
800 TString *ts = gco2ts(o);
801 luaM_freemem(L, ts, sizelstring(ts->u.lnglen));
802 break;
803 }
804 default: lua_assert(0);
805 }
806}
807
808
809/*

Callers 4

sweeplistFunction · 0.85
sweep2oldFunction · 0.85
sweepgenFunction · 0.85
deletelistFunction · 0.85

Calls 5

luaF_freeprotoFunction · 0.85
freeupvalFunction · 0.85
luaH_freeFunction · 0.85
luaE_freethreadFunction · 0.85
luaS_removeFunction · 0.85

Tested by

no test coverage detected