Changeset eeb9f9f for libcfa/src


Ignore:
Timestamp:
May 3, 2021, 4:39:32 PM (3 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
d3ba775
Parents:
f6fdfb14
Message:

Forgot some changes for new sub-queue

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/ready_queue.cfa

    rf6fdfb14 reeb9f9f  
    524524                                assert(!lanes.data[idx].lock);
    525525
    526                                 #if defined(USE_NEW_SUBQUEUE)
    527526                                        if(is_empty(sl)) {
    528527                                                assert( sl.anchor.next == 0p );
     
    534533                                                assert( mock_head(sl)  != sl.prev );
    535534                                        }
    536                                 #else
    537                                         assert(head(sl)->link.prev == 0p );
    538                                         assert(head(sl)->link.next->link.prev == head(sl) );
    539                                         assert(tail(sl)->link.next == 0p );
    540                                         assert(tail(sl)->link.prev->link.next == tail(sl) );
    541 
    542                                         if(is_empty(sl)) {
    543                                                 assert(tail(sl)->link.prev == head(sl));
    544                                                 assert(head(sl)->link.next == tail(sl));
    545                                         } else {
    546                                                 assert(tail(sl)->link.prev != head(sl));
    547                                                 assert(head(sl)->link.next != tail(sl));
    548                                         }
    549                                 #endif
    550535                        }
    551536                }
     
    569554static inline void fix(__intrusive_lane_t & ll) {
    570555        #if !defined(USE_MPSC)
    571                 #if defined(USE_NEW_SUBQUEUE)
    572556                        if(is_empty(ll)) {
    573557                                verify(ll.anchor.next == 0p);
    574558                                ll.prev = mock_head(ll);
    575559                        }
    576                 #else
    577                         // if the list is not empty then follow he pointer and fix its reverse
    578                         if(!is_empty(ll)) {
    579                                 head(ll)->link.next->link.prev = head(ll);
    580                                 tail(ll)->link.prev->link.next = tail(ll);
    581                         }
    582                         // Otherwise just reset the list
    583                         else {
    584                                 verify(tail(ll)->link.next == 0p);
    585                                 tail(ll)->link.prev = head(ll);
    586                                 head(ll)->link.next = tail(ll);
    587                                 verify(head(ll)->link.prev == 0p);
    588                         }
    589                 #endif
    590560        #endif
    591561}
Note: See TracChangeset for help on using the changeset viewer.