Changes in src/libcfa/bits/containers.h [a1a17a74:705e612]
- File:
-
- 1 edited
-
src/libcfa/bits/containers.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/libcfa/bits/containers.h
ra1a17a74 r705e612 220 220 } 221 221 222 #define next0223 #define prev1222 #define _next .0 223 #define _prev .1 224 224 forall(dtype T | sized(T)) 225 225 static inline void push_front( __dllist(T) & this, T & node ) with( this ) { 226 verify(__get);227 226 if ( head ) { 228 __get( node ) .next = head;229 __get( node ) .prev = __get( *head ).prev;227 __get( node )_next = head; 228 __get( node )_prev = __get( *head )_prev; 230 229 // inserted node must be consistent before it is seen 231 230 // prevent code movement across barrier 232 231 asm( "" : : : "memory" ); 233 __get( *head ) .prev = &node;234 T & _prev = *__get( node ).prev;235 __get( _prev ).next = &node;232 __get( *head )_prev = &node; 233 T & prev = *__get( node )_prev; 234 __get( prev )_next = &node; 236 235 } 237 236 else { 238 __get( node ) .next = &node;239 __get( node ) .prev = &node;237 __get( node )_next = &node; 238 __get( node )_prev = &node; 240 239 } 241 240 … … 247 246 forall(dtype T | sized(T)) 248 247 static inline void remove( __dllist(T) & this, T & node ) with( this ) { 249 verify(__get);250 248 if ( &node == head ) { 251 if ( __get( *head ) .next == head ) {249 if ( __get( *head )_next == head ) { 252 250 head = NULL; 253 251 } 254 252 else { 255 head = __get( *head ) .next;253 head = __get( *head )_next; 256 254 } 257 255 } 258 __get( *__get( node ) .next ).prev = __get( node ).prev;259 __get( *__get( node ) .prev ).next = __get( node ).next;260 __get( node ) .next = NULL;261 __get( node ) .prev = NULL;262 } 263 #undef next264 #undef prev256 __get( *__get( node )_next )_prev = __get( node )_prev; 257 __get( *__get( node )_prev )_next = __get( node )_next; 258 __get( node )_next = NULL; 259 __get( node )_prev = NULL; 260 } 261 #undef _next 262 #undef _prev 265 263 #endif 266 264
Note:
See TracChangeset
for help on using the changeset viewer.