瀏覽代碼

Do not avoid major collections when GCdebt is zero

'collectgarbage("step")' (without an argument) does not have any
special meaning, it means "do a step with some default size".
Roberto Ierusalimschy 2 年之前
父節點
當前提交
8dea54877a
共有 1 個文件被更改,包括 2 次插入5 次删除
  1. 2 5
      lgc.c

+ 2 - 5
lgc.c

@@ -9,7 +9,6 @@
 
 #include "lprefix.h"
 
-#include <stdio.h>
 #include <string.h>
 
 
@@ -1377,14 +1376,12 @@ static void genmajorstep (lua_State *L, global_State *g) {
 /*
 ** Does a generational "step".  If the total number of objects grew
 ** more than 'majormul'% since the last major collection, does a
-** major collection.  Otherwise, does a minor collection.  The test
-** ('GCdebt' != 0) avoids major collections when the step originated from
-** 'collectgarbage("step")'.
+** major collection.  Otherwise, does a minor collection.
 */
 static void genstep (lua_State *L, global_State *g) {
   l_obj majorbase = g->GClastmajor;  /* count after last major collection */
   l_obj majorinc = applygcparam(g, genmajormul, majorbase);
-  if (g->GCdebt != 0 && gettotalobjs(g) > majorbase + majorinc) {
+  if (gettotalobjs(g) > majorbase + majorinc && 0) {
     /* do a major collection */
     enterinc(g);
     g->gckind = KGC_GENMAJOR;