| 661 | |
| 662 | |
| 663 | static void freeobj (lua_State *L, GCObject *o) { |
| 664 | switch (gch(o)->tt) { |
| 665 | case LUA_TPROTO: luaF_freeproto(L, gco2p(o)); break; |
| 666 | case LUA_TLCL: { |
| 667 | luaM_freemem(L, o, sizeLclosure(gco2lcl(o)->nupvalues)); |
| 668 | break; |
| 669 | } |
| 670 | case LUA_TCCL: { |
| 671 | luaM_freemem(L, o, sizeCclosure(gco2ccl(o)->nupvalues)); |
| 672 | break; |
| 673 | } |
| 674 | case LUA_TUPVAL: luaF_freeupval(L, gco2uv(o)); break; |
| 675 | case LUA_TTABLE: luaH_free(L, gco2t(o)); break; |
| 676 | case LUA_TTHREAD: luaE_freethread(L, gco2th(o)); break; |
| 677 | case LUA_TUSERDATA: luaM_freemem(L, o, sizeudata(gco2u(o))); break; |
| 678 | case LUA_TSHRSTR: |
| 679 | G(L)->strt.nuse--; |
| 680 | /* go through */ |
| 681 | case LUA_TLNGSTR: { |
| 682 | luaM_freemem(L, o, sizestring(gco2ts(o))); |
| 683 | break; |
| 684 | } |
| 685 | default: lua_assert(0); |
| 686 | } |
| 687 | } |
| 688 | |
| 689 | |
| 690 | #define sweepwholelist(L,p) sweeplist(L,p,MAX_LUMEM) |
no test coverage detected