Browse Source

definition of 'GCSTEPSIZE' moved to header file + small changes

Roberto Ierusalimschy 13 years ago
parent
commit
e29f3a5751
2 changed files with 13 additions and 10 deletions
  1. 2 5
      lgc.c
  2. 11 5
      lgc.h

+ 2 - 5
lgc.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lgc.c,v 2.126 2012/05/22 17:50:39 roberto Exp roberto $
+** $Id: lgc.c,v 2.127 2012/05/22 18:38:56 roberto Exp roberto $
 ** Garbage Collector
 ** See Copyright Notice in lua.h
 */
@@ -24,11 +24,8 @@
 
 
 
-/* how much to allocate before next GC step */
-#define GCSTEPSIZE	(cast_int(256 * sizeof(void*)))
-
 /* cost of sweeping one element (half the size of a small object) */
-#define GCSWEEPCOST	((sizeof(TString) + 2) / 2)
+#define GCSWEEPCOST	((sizeof(TString) + 4) / 2)
 
 /* maximum number of elements to sweep in each single step */
 #define GCSWEEPMAX	(cast_int((GCSTEPSIZE / GCSWEEPCOST) / 4))

+ 11 - 5
lgc.h

@@ -1,5 +1,5 @@
 /*
-** $Id: lgc.h,v 2.54 2012/05/11 19:22:33 roberto Exp roberto $
+** $Id: lgc.h,v 2.55 2012/05/21 13:18:10 roberto Exp roberto $
 ** Garbage Collector
 ** See Copyright Notice in lua.h
 */
@@ -20,13 +20,19 @@
 ** is that a black object can never point to a white one. Moreover,
 ** any gray object must be in a "gray list" (gray, grayagain, weak,
 ** allweak, ephemeron) so that it can be visited again before finishing
-** the collection cycle. (These rule does not apply to strings,
-** which are never black but do not need to be visited again.)
-**  These lists have no meaning when the invariant is not being enforced
-** (e.g., sweep phase).
+** the collection cycle. These lists have no meaning when the invariant
+** is not being enforced (e.g., sweep phase).
 */
 
 
+
+/* how much to allocate before next GC step */
+#if !defined(GCSTEPSIZE)
+/* ~100 small strings */
+#define GCSTEPSIZE	(cast_int(100 * sizeof(TString)))
+#endif
+
+
 /*
 ** Possible states of the Garbage Collector
 */