< prev index next >

src/hotspot/share/gc/z/zMarkStack.inline.hpp

Print this page

        

*** 119,129 **** uint32_t version = 0; for (;;) { decode_versioned_pointer(vstack, stack->next_addr(), &version); T* const new_vstack = encode_versioned_pointer(stack, version + 1); ! T* const prev_vstack = Atomic::cmpxchg(new_vstack, &_head, vstack); if (prev_vstack == vstack) { // Success break; } --- 119,129 ---- uint32_t version = 0; for (;;) { decode_versioned_pointer(vstack, stack->next_addr(), &version); T* const new_vstack = encode_versioned_pointer(stack, version + 1); ! T* const prev_vstack = Atomic::cmpxchg(&_head, vstack, new_vstack); if (prev_vstack == vstack) { // Success break; }
*** 143,153 **** if (stack == NULL) { return NULL; } T* const new_vstack = encode_versioned_pointer(stack->next(), version + 1); ! T* const prev_vstack = Atomic::cmpxchg(new_vstack, &_head, vstack); if (prev_vstack == vstack) { // Success return stack; } --- 143,153 ---- if (stack == NULL) { return NULL; } T* const new_vstack = encode_versioned_pointer(stack->next(), version + 1); ! T* const prev_vstack = Atomic::cmpxchg(&_head, vstack, new_vstack); if (prev_vstack == vstack) { // Success return stack; }
< prev index next >