MCPcopy Create free account
hub / github.com/bloomberg/comdb2 / lua_gc

Function lua_gc

lua/lapi.c:906–962  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

904*/
905
906LUA_API int lua_gc (lua_State *L, int what, int data) {
907 int res = 0;
908 global_State *g;
909 lua_lock(L);
910 g = G(L);
911 switch (what) {
912 case LUA_GCSTOP: {
913 g->GCthreshold = MAX_LUMEM;
914 break;
915 }
916 case LUA_GCRESTART: {
917 g->GCthreshold = g->totalbytes;
918 break;
919 }
920 case LUA_GCCOLLECT: {
921 luaC_fullgc(L);
922 break;
923 }
924 case LUA_GCCOUNT: {
925 /* GC values are expressed in Kbytes: #bytes/2^10 */
926 res = cast_int(g->totalbytes >> 10);
927 break;
928 }
929 case LUA_GCCOUNTB: {
930 res = cast_int(g->totalbytes & 0x3ff);
931 break;
932 }
933 case LUA_GCSTEP: {
934 lu_mem a = (cast(lu_mem, data) << 10);
935 if (a <= g->totalbytes)
936 g->GCthreshold = g->totalbytes - a;
937 else
938 g->GCthreshold = 0;
939 while (g->GCthreshold <= g->totalbytes) {
940 luaC_step(L);
941 if (g->gcstate == GCSpause) { /* end of cycle? */
942 res = 1; /* signal it */
943 break;
944 }
945 }
946 break;
947 }
948 case LUA_GCSETPAUSE: {
949 res = g->gcpause;
950 g->gcpause = data;
951 break;
952 }
953 case LUA_GCSETSTEPMUL: {
954 res = g->gcstepmul;
955 g->gcstepmul = data;
956 break;
957 }
958 default: res = -1; /* invalid option */
959 }
960 lua_unlock(L);
961 return res;
962}
963

Callers 5

docallFunction · 0.85
pmainFunction · 0.85
luaB_collectgarbageFunction · 0.85
reset_spFunction · 0.85
exec_threadFunction · 0.85

Calls 2

luaC_fullgcFunction · 0.85
luaC_stepFunction · 0.85

Tested by

no test coverage detected