equal
deleted
inserted
replaced
44 |
44 |
45 PerRegionTable* PerRegionTable::alloc(HeapRegion* hr) { |
45 PerRegionTable* PerRegionTable::alloc(HeapRegion* hr) { |
46 PerRegionTable* fl = _free_list; |
46 PerRegionTable* fl = _free_list; |
47 while (fl != NULL) { |
47 while (fl != NULL) { |
48 PerRegionTable* nxt = fl->next(); |
48 PerRegionTable* nxt = fl->next(); |
49 PerRegionTable* res = Atomic::cmpxchg(nxt, &_free_list, fl); |
49 PerRegionTable* res = Atomic::cmpxchg(&_free_list, fl, nxt); |
50 if (res == fl) { |
50 if (res == fl) { |
51 fl->init(hr, true); |
51 fl->init(hr, true); |
52 return fl; |
52 return fl; |
53 } else { |
53 } else { |
54 fl = _free_list; |
54 fl = _free_list; |