Author: Armin Rigo <[email protected]>
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
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit