MCPcopy Create free account
hub / github.com/BZFlag-Dev/bzflag / lua_gc

Function lua_gc

other_src/lua/src/lapi.cpp:935–991  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

933*/
934
935LUA_API int lua_gc (lua_State *L, int what, int data) {
936 int res = 0;
937 global_State *g;
938 lua_lock(L);
939 g = G(L);
940 switch (what) {
941 case LUA_GCSTOP: {
942 g->GCthreshold = MAX_LUMEM;
943 break;
944 }
945 case LUA_GCRESTART: {
946 g->GCthreshold = g->totalbytes;
947 break;
948 }
949 case LUA_GCCOLLECT: {
950 luaC_fullgc(L);
951 break;
952 }
953 case LUA_GCCOUNT: {
954 /* GC values are expressed in Kbytes: #bytes/2^10 */
955 res = cast_int(g->totalbytes >> 10);
956 break;
957 }
958 case LUA_GCCOUNTB: {
959 res = cast_int(g->totalbytes & 0x3ff);
960 break;
961 }
962 case LUA_GCSTEP: {
963 lu_mem a = (cast(lu_mem, data) << 10);
964 if (a <= g->totalbytes)
965 g->GCthreshold = g->totalbytes - a;
966 else
967 g->GCthreshold = 0;
968 while (g->GCthreshold <= g->totalbytes) {
969 luaC_step(L);
970 if (g->gcstate == GCSpause) { /* end of cycle? */
971 res = 1; /* signal it */
972 break;
973 }
974 }
975 break;
976 }
977 case LUA_GCSETPAUSE: {
978 res = g->gcpause;
979 g->gcpause = data;
980 break;
981 }
982 case LUA_GCSETSTEPMUL: {
983 res = g->gcstepmul;
984 g->gcstepmul = data;
985 break;
986 }
987 default: res = -1; /* invalid option */
988 }
989 lua_unlock(L);
990 return res;
991}
992

Callers 4

luaB_collectgarbageFunction · 0.70
docallFunction · 0.70
pmainFunction · 0.70
createLuaMethod · 0.50

Calls 2

luaC_fullgcFunction · 0.70
luaC_stepFunction · 0.70

Tested by

no test coverage detected