Author: Armin Rigo <ar...@tunes.org>
Branch: queue
Changeset: r1869:72471a4e7d9e
Date: 2015-06-18 21:20 +0200
http://bitbucket.org/pypy/stmgc/changeset/72471a4e7d9e/

Log:    tweaks

diff --git a/c8/stm/queue.c b/c8/stm/queue.c
--- a/c8/stm/queue.c
+++ b/c8/stm/queue.c
@@ -109,9 +109,9 @@
     spinlock_release(get_priv_segment(num)->active_queues_lock);
 }
 
-static void queue_activate(stm_queue_t *queue)
+static void queue_activate(stm_queue_t *queue, stm_queue_segment_t *seg)
 {
-    stm_queue_segment_t *seg = &queue->segs[STM_SEGMENT->segment_num - 1];
+    assert(seg == &queue->segs[STM_SEGMENT->segment_num - 1]);
 
     if (!seg->active) {
         queue_lock_acquire();
@@ -202,13 +202,13 @@
        delays or transaction breaks.  you need to push roots!
     */
     stm_queue_segment_t *seg = &queue->segs[STM_SEGMENT->segment_num - 1];
+    queue_activate(queue, seg);
+
     queue_entry_t *entry = malloc(sizeof(queue_entry_t));
     assert(entry);
     entry->object = newitem;
     entry->next = seg->added_in_this_transaction;
     seg->added_in_this_transaction = entry;
-
-    queue_activate(queue);
     seg->unfinished_tasks_in_this_transaction++;
 
     /* add qobj to 'objects_pointing_to_nursery' if it has the
@@ -270,11 +270,11 @@
            'old_objects_popped' list for now.  From now on, this entry
            "belongs" to this segment and should never be read by
            another segment. */
+        queue_activate(queue, seg);
+
         queue_check_entry(entry);
         entry->next = seg->old_objects_popped;
         seg->old_objects_popped = entry;
-
-        queue_activate(queue);
         return entry->object;
     }
     else {
@@ -322,8 +322,8 @@
 
 void stm_queue_task_done(stm_queue_t *queue)
 {
-    queue_activate(queue);
     stm_queue_segment_t *seg = &queue->segs[STM_SEGMENT->segment_num - 1];
+    queue_activate(queue, seg);
     seg->unfinished_tasks_in_this_transaction--;
 }
 
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to