Author: Armin Rigo <ar...@tunes.org>
Branch: 
Changeset: r888:73ad02610b81
Date: 2014-02-27 09:55 +0100
http://bitbucket.org/pypy/stmgc/changeset/73ad02610b81/

Log:    Fix comments (only, for now)

diff --git a/c7/stm/gcpage.c b/c7/stm/gcpage.c
--- a/c7/stm/gcpage.c
+++ b/c7/stm/gcpage.c
@@ -5,16 +5,12 @@
 
 static void setup_gcpage(void)
 {
-    /* NB. the very last page is not used, which allows a speed-up in
-       reset_all_creation_markers() */
     char *base = stm_object_pages + END_NURSERY_PAGE * 4096UL;
-    uintptr_t length = (NB_PAGES - END_NURSERY_PAGE - 1) * 4096UL;
+    uintptr_t length = (NB_PAGES - END_NURSERY_PAGE) * 4096UL;
     _stm_largemalloc_init_arena(base, length);
 
     uninitialized_page_start = stm_object_pages + END_NURSERY_PAGE * 4096UL;
     uninitialized_page_stop  = stm_object_pages + NB_PAGES * 4096UL;
-
-    assert(GC_MEDIUM_REQUEST >= (1 << 8));
 }
 
 static void teardown_gcpage(void)
diff --git a/c7/stm/gcpage.h b/c7/stm/gcpage.h
--- a/c7/stm/gcpage.h
+++ b/c7/stm/gcpage.h
@@ -1,14 +1,14 @@
 
 /* Outside the nursery, we are taking from the highest addresses
-   complete pages, one at a time, which uniformly contain objects
-   of size "8 * N" for some N in range(2, GC_N_SMALL_REQUESTS).  We
-   are taking from the lowest addresses "large" objects, which are
-   guaranteed to be at least 256 bytes long (actually 288),
-   allocated by largemalloc.c.
+   complete pages, one at a time, which uniformly contain objects of
+   size "8 * N" for some N in range(2, GC_N_SMALL_REQUESTS).  We are
+   taking from the lowest addresses "large" objects, which are at least
+   128 bytes long, allocated by largemalloc.c.  The limit was picked
+   from a run a PyPy, showing that (in this case) the number of
+   allocations of at least 128 bytes is a lot below 1%.
 */
 
-#define GC_N_SMALL_REQUESTS    36
-#define GC_MEDIUM_REQUEST      (GC_N_SMALL_REQUESTS * 8)
+#define GC_N_SMALL_REQUESTS    16
 
 
 static char *uninitialized_page_start;   /* within segment 0 */
diff --git a/c7/stm/list.h b/c7/stm/list.h
--- a/c7/stm/list.h
+++ b/c7/stm/list.h
@@ -73,7 +73,8 @@
 /* The tree_xx functions are, like the name hints, implemented as a tree,
    supporting very high performance in TREE_FIND in the common case where
    there are no or few elements in the tree, but scaling correctly
-   if the number of items becomes large. */
+   if the number of items becomes large (logarithmically, rather
+   than almost-constant-time with hash maps, but with low constants). */
 
 #define TREE_BITS   4
 #define TREE_ARITY  (1 << TREE_BITS)
diff --git a/c7/stm/nursery.c b/c7/stm/nursery.c
--- a/c7/stm/nursery.c
+++ b/c7/stm/nursery.c
@@ -89,7 +89,7 @@
         char *realobj = REAL_ADDRESS(STM_SEGMENT->segment_base, obj);
         size_t size = stmcb_size_rounded_up((struct object_s *)realobj);
 
-        if (1 /*size >= GC_MEDIUM_REQUEST*/) {
+        if (1 /*size >= GC_N_SMALL_REQUESTS*8*/) {
 
             /* case 1: object is not small enough.
                Ask gcpage.c for an allocation via largemalloc. */
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to