Răsfoiți Sursa

Reduce calls to 'luaC_step' when GC is stopped

Roberto Ierusalimschy 2 ani în urmă
părinte
comite
fa2f294dd1
1 a modificat fișierele cu 6 adăugiri și 3 ștergeri
  1. 6 3
      lgc.c

+ 6 - 3
lgc.c

@@ -1681,12 +1681,15 @@ static void incstep (lua_State *L, global_State *g) {
 }
 
 /*
-** performs a basic GC step if collector is running
+** Performs a basic GC step if collector is running. (If collector is
+** not running, set a reasonable debt to avoid it being called at
+** every single check.)
 */
 void luaC_step (lua_State *L) {
   global_State *g = G(L);
-  lua_assert(!g->gcemergency);
-  if (gcrunning(g)) {  /* running? */
+  if (!gcrunning(g))  /* not running? */
+    luaE_setdebt(g, -2000);
+  else {
     if(isdecGCmodegen(g))
       genstep(L, g);
     else