commit e29f3a57511565caf117cf3c2e5e4ed8f22869cb
parent 21ed264a38862a25964fc02365e1deea5ffcb6c9
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date: Wed, 23 May 2012 12:42:50 -0300
definition of 'GCSTEPSIZE' moved to header file + small changes
Diffstat:
2 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/lgc.c b/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))
diff --git a/lgc.h b/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
*/