]> granicus.if.org Git - gc/commitdiff
2011-03-15 Ivan Maidanski <ivmai@mail.ru>
authorivmai <ivmai>
Tue, 15 Mar 2011 16:06:57 +0000 (16:06 +0000)
committerIvan Maidanski <ivmai@mail.ru>
Tue, 26 Jul 2011 17:06:56 +0000 (21:06 +0400)
* doc/README.macros (SMALL_CONFIG, LARGE_CONFIG): Refine the
documentation.
* include/private/gc_hdrs.h (LOG_BOTTOM_SZ): Ignore SMALL_CONFIG
if LARGE_CONFIG is defined.
* include/private/gc_priv.h (CPP_LOG_HBLKSIZE): Ditto.

ChangeLog
doc/README.macros
include/private/gc_hdrs.h
include/private/gc_priv.h

index ef7689203dada675b3fc7e9083e3c889e2ca60be..69f23836e9715af83c8e13778257b90ed20a4110 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2011-03-15  Ivan Maidanski  <ivmai@mail.ru>
+
+       * doc/README.macros (SMALL_CONFIG, LARGE_CONFIG): Refine the
+       documentation.
+       * include/private/gc_hdrs.h (LOG_BOTTOM_SZ): Ignore SMALL_CONFIG
+       if LARGE_CONFIG is defined.
+       * include/private/gc_priv.h (CPP_LOG_HBLKSIZE): Ditto.
+
 2011-03-15  Ivan Maidanski  <ivmai@mail.ru>
 
        * alloc.c (GC_finish_collection): Replace "#else #ifdef" with
index 6e9ebd8b500de9530d3089b12a47ef45577162be..ee42f4ee778317194d4dd1511ebd28db1e02b959 100644 (file)
@@ -146,8 +146,10 @@ ALL_INTERIOR_POINTERS   Allows all pointers to the interior of objects to be
   GC_all_interior_pointers can be set at process initialization time.
 
 SMALL_CONFIG    Tries to tune the collector for small heap sizes,
-  usually causing it to use less space in such situations.
-  Incremental collection no longer works in this case.
+  usually causing it to use less space in such situations.  Incremental
+  collection no longer works in this case.  Also, removes some
+  statistic-printing code.  Turns off some optimization algorithms (like data
+  prefetching in the mark routine).
 
 GC_DISABLE_INCREMENTAL  Turn off the incremental collection support.
 
@@ -159,7 +161,9 @@ NO_INCREMENTAL  Causes the gctest program to not invoke the incremental
 LARGE_CONFIG    Tunes the collector for unusually large heaps.
   Necessary for heaps larger than about 4 GiB on most (64-bit) machines.
   Recommended for heaps larger than about 500 MiB.  Not recommended for
-  embedded systems.
+  embedded systems.  Could be used in conjunction with SMALL_CONFIG to
+  generate smaller code (by disabling incremental collection support,
+  statistic printing and some optimization algorithms).
 
 DONT_ADD_BYTE_AT_END    Meaningful only with ALL_INTERIOR_POINTERS or
   GC_all_interior_pointers = 1.  Normally ALL_INTERIOR_POINTERS
index f2acb4cccb7a46d5063af99515b4e948b0833a97..777b016a2f9fe7a978680e2dfc92fa8586f74cb9 100644 (file)
@@ -41,11 +41,11 @@ typedef struct hblkhdr hdr;
 #endif
 
 /* Define appropriate out-degrees for each of the two tree levels       */
-#ifdef SMALL_CONFIG
+#if defined(LARGE_CONFIG) || !defined(SMALL_CONFIG)
+# define LOG_BOTTOM_SZ 10
+#else
 # define LOG_BOTTOM_SZ 11
         /* Keep top index size reasonable with smaller blocks.  */
-#else
-# define LOG_BOTTOM_SZ 10
 #endif
 #define BOTTOM_SZ (1 << LOG_BOTTOM_SZ)
 
index d9815ce87803e349868bc4007806f1e3321ff278..79e9555594f5ec5654844c135ebb79d1dd09b26b 100644 (file)
@@ -620,12 +620,14 @@ GC_EXTERN GC_warn_proc GC_current_warn_proc;
 /*   Alpha: Seems to be used with 8K pages.                     */
 /*   SMALL_CONFIG: Want less block-level fragmentation.         */
 #ifndef HBLKSIZE
-# ifdef SMALL_CONFIG
-#   define CPP_LOG_HBLKSIZE 10
-# elif defined(ALPHA)
-#   define CPP_LOG_HBLKSIZE 13
+# if defined(LARGE_CONFIG) || !defined(SMALL_CONFIG)
+#   ifdef ALPHA
+#     define CPP_LOG_HBLKSIZE 13
+#   else
+#     define CPP_LOG_HBLKSIZE 12
+#   endif
 # else
-#   define CPP_LOG_HBLKSIZE 12
+#   define CPP_LOG_HBLKSIZE 10
 # endif
 #else
 # if HBLKSIZE == 512