// AUTO-GENERATED by autogen.sh; DO NOT EDIT #include "runtime.h" #include "arch.h" #if __SIZEOF_POINTER__ == 8 # define PTR_BITS 47 #else # define PTR_BITS 32 #endif #define PTR_MASK ((1ull<pushcnt++; new = ( uint64 ) ( uintptr ) node| ( ( ( uint64 ) node->pushcnt&CNT_MASK ) <next = ( LFNode* ) ( uintptr ) ( old&PTR_MASK ) ; if ( runtime_cas64 ( head , old , new ) ) break; } } #line 53 "../../../trunk/libgo/runtime/../../../trunk/libgo/runtime/lfstack.goc" LFNode* runtime_lfstackpop ( uint64 *head ) { LFNode *node , *node2; uint64 old , new; #line 59 "../../../trunk/libgo/runtime/../../../trunk/libgo/runtime/lfstack.goc" for ( ;; ) { old = runtime_atomicload64 ( head ) ; if ( old == 0 ) return nil; node = ( LFNode* ) ( uintptr ) ( old&PTR_MASK ) ; node2 = runtime_atomicloadp ( &node->next ) ; new = 0; if ( node2 != nil ) new = ( uint64 ) ( uintptr ) node2| ( ( ( uint64 ) node2->pushcnt&CNT_MASK ) <