Changeset 16fd826 for libcfa/src
- Timestamp:
- May 13, 2021, 3:44:19 PM (4 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- fb4ccdf
- Parents:
- 8cd40bf
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/ready_subqueue.hfa
r8cd40bf r16fd826 11 11 // spin lock protecting the queue 12 12 volatile bool lock; 13 14 #if !defined(__CFA_NO_STATISTICS__) 15 unsigned cnt; 16 #endif 13 17 14 18 __thread_desc_link anchor; … … 29 33 this.anchor.next = 0p; 30 34 this.anchor.ts = 0; 35 #if !defined(__CFA_NO_STATISTICS__) 36 this.cnt = 0; 37 #endif 31 38 32 39 // We add a boat-load of assertions here because the anchor code is very fragile 40 /* paranoid */ _Static_assert( offsetof( $thread, link ) == offsetof(__intrusive_lane_t, anchor) ); 33 41 /* paranoid */ verify( offsetof( $thread, link ) == offsetof(__intrusive_lane_t, anchor) ); 34 42 /* paranoid */ verify( ((uintptr_t)( mock_head(this) ) + offsetof( $thread, link )) == (uintptr_t)(&this.anchor) ); … … 54 62 // returns true of lane was empty before push, false otherwise 55 63 static inline void push( __intrusive_lane_t & this, $thread * node ) { 64 /* paranoid */ verify( this.lock ); 56 65 /* paranoid */ verify( node->link.next == 0p ); 57 66 /* paranoid */ verify( node->link.ts == 0 ); … … 72 81 this.prev->link.ts = rdtscl(); 73 82 this.prev = node; 83 #if !defined(__CFA_NO_STATISTICS__) 84 this.cnt++; 85 #endif 74 86 } 75 87 … … 78 90 // returns true of lane was empty before push, false otherwise 79 91 static inline [* $thread, unsigned long long] pop( __intrusive_lane_t & this ) { 92 /* paranoid */ verify( this.lock ); 80 93 /* paranoid */ verify( this.anchor.next != 0p ); 81 94 /* paranoid */ verify( this.anchor.ts != 0 ); … … 89 102 node->link.next = 0p; 90 103 node->link.ts = 0; 104 #if !defined(__CFA_NO_STATISTICS__) 105 this.cnt--; 106 #endif 91 107 92 108 // Update head time stamp
Note: See TracChangeset
for help on using the changeset viewer.