equal
deleted
inserted
replaced
95 // Allocate object before installing the new page |
95 // Allocate object before installing the new page |
96 addr = new_page->alloc_object(size); |
96 addr = new_page->alloc_object(size); |
97 |
97 |
98 retry: |
98 retry: |
99 // Install new page |
99 // Install new page |
100 ZPage* const prev_page = Atomic::cmpxchg(new_page, shared_page, page); |
100 ZPage* const prev_page = Atomic::cmpxchg(shared_page, page, new_page); |
101 if (prev_page != page) { |
101 if (prev_page != page) { |
102 if (prev_page == NULL) { |
102 if (prev_page == NULL) { |
103 // Previous page was retired, retry installing the new page |
103 // Previous page was retired, retry installing the new page |
104 page = prev_page; |
104 page = prev_page; |
105 goto retry; |
105 goto retry; |