]> granicus.if.org Git - gc/commitdiff
2008-01-07 Hans Boehm <Hans.Boehm@hp.com>
authorhboehm <hboehm>
Tue, 8 Jan 2008 06:07:39 +0000 (06:07 +0000)
committerIvan Maidanski <ivmai@mail.ru>
Tue, 26 Jul 2011 17:06:42 +0000 (21:06 +0400)
* include/private/gc_priv.h: Update MAX_ROOT_SETS
and LOG_PHT_ENTRIES to handle larger heaps.

ChangeLog
include/private/gc_priv.h

index 89bd1a999d01e5753ebcae3b495d39a8c7f9bd47..93abf1778cde2e041b01fdf8c0132d8fdcb10524 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,15 +1,20 @@
-2007-01-03  Hans Boehm <Hans.Boehm@hp.com>
+2008-01-07  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/private/gc_priv.h: Update MAX_ROOT_SETS
+       and LOG_PHT_ENTRIES to handle larger heaps.
+
+2008-01-03  Hans Boehm <Hans.Boehm@hp.com>
 
        * include/gc.h (GC_INIT,GC_init): Update comments.
 
-2007-01-03  Hans Boehm <Hans.Boehm@hp.com> (based on a patch from
+2008-01-03  Hans Boehm <Hans.Boehm@hp.com> (based on a patch from
        John Bowman, and an ancient patch from Fergus Henderson)
 
        * allchblk.c, alloc.c, include/private/gc_priv.h:
        Track GC_bytes_dropped and use in GC triggering decisions.
        * alloc.c (min_bytes_allocd): Weight atomic blocks less.
 
-2007-01-02  Hans Boehm <Hans.Boehm@hp.com>
+2008-01-02  Hans Boehm <Hans.Boehm@hp.com>
 
        * alloc.c (GC_add_to_heap): Call GC_install_header(p) AFTER
        adjusting p.
index a1e931e5b0779aa24bfbab4653731e8012eb1bb6..8feeabdb96e02304907a405e431eff35581b286d 100644 (file)
@@ -589,19 +589,26 @@ extern GC_warn_proc GC_current_warn_proc;
  */
  
 # ifdef LARGE_CONFIG
-#   define LOG_PHT_ENTRIES  20  /* Collisions likely at 1M blocks,     */
+#   if CPP_WORDSZ == 32
+#    define LOG_PHT_ENTRIES  20 /* Collisions likely at 1M blocks,     */
                                /* which is >= 4GB.  Each table takes   */
                                /* 128KB, some of which may never be    */
                                /* touched.                             */
+#   else
+#    define LOG_PHT_ENTRIES  21 /* Collisions likely at 2M blocks,     */
+                               /* which is >= 8GB.  Each table takes   */
+                               /* 256KB, some of which may never be    */
+                               /* touched.                             */
+#   endif
 # else
 #   ifdef SMALL_CONFIG
-#     define LOG_PHT_ENTRIES  14 /* Collisions are likely if heap grows        */
-                                /* to more than 16K hblks = 64MB.      */
-                                /* Each hash table occupies 2K bytes.   */
+#     define LOG_PHT_ENTRIES  15 /* Collisions are likely if heap grows        */
+                                /* to more than 32K hblks = 128MB.     */
+                                /* Each hash table occupies 4K bytes.  */
 #   else /* default "medium" configuration */
-#     define LOG_PHT_ENTRIES  16 /* Collisions are likely if heap grows        */
-                                /* to more than 64K hblks >= 256MB.    */
-                                /* Each hash table occupies 8K bytes.  */
+#     define LOG_PHT_ENTRIES  18 /* Collisions are likely if heap grows        */
+                                /* to more than 256K hblks >= 1GB.     */
+                                /* Each hash table occupies 32K bytes. */
                                 /* Even for somewhat smaller heaps,    */
                                 /* say half that, collisions may be an */
                                 /* issue because we blacklist          */
@@ -780,11 +787,13 @@ struct hblk {
 /* MAX_ROOT_SETS is the maximum number of ranges that can be   */
 /* registered as static roots.                                         */
 # ifdef LARGE_CONFIG
-#   define MAX_ROOT_SETS 4096
+#   define MAX_ROOT_SETS 8192
 # else
-    /* GCJ LOCAL: MAX_ROOT_SETS increased to permit more shared */
-    /* libraries to be loaded.                                  */ 
-#   define MAX_ROOT_SETS 1024
+#   ifdef SMALL_CONFIG
+#     define MAX_ROOT_SETS 512
+#   else
+#     define MAX_ROOT_SETS 2048
+#   endif
 # endif
 
 # define MAX_EXCLUSIONS (MAX_ROOT_SETS/4)