Author: Armin Rigo <ar...@tunes.org>
Branch: 
Changeset: r1202:dcea4c839318
Date: 2014-05-08 15:00 +0200
http://bitbucket.org/pypy/stmgc/changeset/dcea4c839318/

Log:    Small fix. Without this, the first 255 transaction's read markers
        are written in the shared mmap, but then we mount a private zero
        mmap for every 255 transactions. It means the initial 255
        transaction's read markers stay around in memory (I think), even if
        they are never accessed any more.

diff --git a/c7/stm/setup.c b/c7/stm/setup.c
--- a/c7/stm/setup.c
+++ b/c7/stm/setup.c
@@ -86,15 +86,16 @@
         pr->callbacks_on_abort = tree_create();
         pr->overflow_number = GCFLAG_OVERFLOW_NUMBER_bit0 * i;
         highest_overflow_number = pr->overflow_number;
+        pr->pub.transaction_read_version = 0xff;
     }
 
     /* The pages are shared lazily, as remap_file_pages() takes a relatively
        long time for each page.
 
-       The read markers are initially zero, which is correct:
-       STM_SEGMENT->transaction_read_version never contains zero,
-       so a null read marker means "not read" whatever the
-       current transaction_read_version is.
+       The read markers are initially zero, but we set anyway
+       transaction_read_version to 0xff in order to force the first
+       transaction to "clear" the read markers by mapping a different,
+       private range of addresses.
     */
 
     setup_sync();
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to