[pypy-commit] stmgc c8-adaptive-trx-length-per-thread: Fix nested measurement of waiting time and time in validation;

tobweber pypy.commits at gmail.com
Fri May 12 10:10:54 EDT 2017


Author: Tobias Weber <tobias_weber89 at gmx.de>
Branch: c8-adaptive-trx-length-per-thread
Changeset: r2060:66afe82c56ce
Date: 2017-05-12 16:10 +0200
http://bitbucket.org/pypy/stmgc/changeset/66afe82c56ce/

Log:	Fix nested measurement of waiting time and time in validation; fix
	transaction size was not exponentially reduced in case of a retry

diff --git a/c8/stm/core.c b/c8/stm/core.c
--- a/c8/stm/core.c
+++ b/c8/stm/core.c
@@ -464,7 +464,9 @@
 #endif
 
     if (STM_PSEGMENT->last_commit_log_entry->next == INEV_RUNNING) {
-        wait_for_inevitable();
+        pause_timer();
+        wait_for_inevitable(); // TODO may abort!! timing event lost
+        continue_timer();
         goto retry_from_start;   /* redo _stm_validate() now */
     }
 
@@ -1165,11 +1167,10 @@
     if (number_of_segments_in_use() < 2) {
         stm_become_inevitable(tl, "single thread mode");
     }
-    if (repeat_count == 0) {  /* else, 'nursery_mark' was already set
-                                 in abort_data_structures_from_segment_num() */
-        STM_SEGMENT->nursery_mark = ((stm_char *)_stm_nursery_start +
+    /* TODO remove: else, 'nursery_mark' was already set
+        in abort_data_structures_from_segment_num() */
+    STM_SEGMENT->nursery_mark = ((stm_char *)_stm_nursery_start +
                                         stm_get_transaction_length(tl));
-    }
     return repeat_count;
 }
 


More information about the pypy-commit mailing list