[pypy-commit] stmgc c8-fix-commit-signalling: Fix check for inevitable breaks commit signalling

tobweber pypy.commits at gmail.com
Tue Jul 4 11:28:00 EDT 2017


Author: Tobias Weber <tobias_weber89 at gmx.de>
Branch: c8-fix-commit-signalling
Changeset: r2086:2a092c9c9376
Date: 2017-07-04 15:59 +0200
http://bitbucket.org/pypy/stmgc/changeset/2a092c9c9376/

Log:	Fix check for inevitable breaks commit signalling

diff --git a/c8/stm/core.c b/c8/stm/core.c
--- a/c8/stm/core.c
+++ b/c8/stm/core.c
@@ -1571,7 +1571,7 @@
 
 void _stm_become_inevitable(const char *msg)
 {
-    int num_waits = NB_SEGMENTS; //0; // TODO try disable
+    int num_waits = NB_SEGMENTS; //0;
 
     timing_become_inevitable();
 
@@ -1614,7 +1614,8 @@
             }
             s_mutex_unlock();
             goto retry_from_start;
-        } else {
+        }
+        else {
             EMIT_WAIT_DONE();
             if (!_validate_and_turn_inevitable()) {
                 goto retry_from_start;
diff --git a/c8/stm/nursery.c b/c8/stm/nursery.c
--- a/c8/stm/nursery.c
+++ b/c8/stm/nursery.c
@@ -501,7 +501,7 @@
     pseg->pub.nursery_mark -= nursery_used;
 
     if (pseg->commit_if_not_atomic
-        && pseg->transaction_state == TS_INEVITABLE
+        // && pseg->transaction_state == TS_INEVITABLE // TODO why does this break the mechanism? 
         && pseg->pub.running_thread->self_or_0_if_atomic != 0) {
         // transaction is inevitable, not atomic, and commit has been signalled by waiting thread: commit immediately
         pseg->pub.nursery_mark = 0;


More information about the pypy-commit mailing list