diff --git a/src/pkg/runtime/lfstack.c b/src/pkg/runtime/lfstack.c index e4ea6e83da..1d48491aac 100644 --- a/src/pkg/runtime/lfstack.c +++ b/src/pkg/runtime/lfstack.c @@ -15,22 +15,23 @@ # define PTR_BITS 32 #endif #define PTR_MASK ((1ull<pushcnt++; - new = (uint64)node|(((uint64)node->pushcnt)<pushcnt&CNT_MASK)<next = (LFNode*)(old&PTR_MASK); + node->next = (LFNode*)(uintptr)(old&PTR_MASK); if(runtime·cas64(head, &old, new)) break; } @@ -46,11 +47,11 @@ runtime·lfstackpop(uint64 *head) for(;;) { if(old == 0) return nil; - node = (LFNode*)(old&PTR_MASK); + node = (LFNode*)(uintptr)(old&PTR_MASK); node2 = runtime·atomicloadp(&node->next); new = 0; if(node2 != nil) - new = (uint64)node2|(((uint64)node2->pushcnt)<pushcnt&CNT_MASK)<