153 return num_removed;
154 }
155
156 G1CodeRootSet::~G1CodeRootSet() {
157 delete _table;
158 }
159
160 G1CodeRootSetTable* G1CodeRootSet::load_acquire_table() {
161 return Atomic::load_acquire(&_table);
162 }
163
164 void G1CodeRootSet::allocate_small_table() {
165 G1CodeRootSetTable* temp = new G1CodeRootSetTable(SmallSize);
166
167 Atomic::release_store(&_table, temp);
168 }
169
170 void G1CodeRootSetTable::purge_list_append(G1CodeRootSetTable* table) {
171 for (;;) {
172 table->_purge_next = _purge_list;
173 G1CodeRootSetTable* old = Atomic::cmpxchg(table, &_purge_list, table->_purge_next);
174 if (old == table->_purge_next) {
175 break;
176 }
177 }
178 }
179
180 void G1CodeRootSetTable::purge() {
181 G1CodeRootSetTable* table = _purge_list;
182 _purge_list = NULL;
183 while (table != NULL) {
184 G1CodeRootSetTable* to_purge = table;
185 table = table->_purge_next;
186 delete to_purge;
187 }
188 }
189
190 void G1CodeRootSet::move_to_large() {
191 G1CodeRootSetTable* temp = new G1CodeRootSetTable(LargeSize);
192
193 _table->copy_to(temp);
|
153 return num_removed;
154 }
155
156 G1CodeRootSet::~G1CodeRootSet() {
157 delete _table;
158 }
159
160 G1CodeRootSetTable* G1CodeRootSet::load_acquire_table() {
161 return Atomic::load_acquire(&_table);
162 }
163
164 void G1CodeRootSet::allocate_small_table() {
165 G1CodeRootSetTable* temp = new G1CodeRootSetTable(SmallSize);
166
167 Atomic::release_store(&_table, temp);
168 }
169
170 void G1CodeRootSetTable::purge_list_append(G1CodeRootSetTable* table) {
171 for (;;) {
172 table->_purge_next = _purge_list;
173 G1CodeRootSetTable* old = Atomic::cmpxchg(&_purge_list, table->_purge_next, table);
174 if (old == table->_purge_next) {
175 break;
176 }
177 }
178 }
179
180 void G1CodeRootSetTable::purge() {
181 G1CodeRootSetTable* table = _purge_list;
182 _purge_list = NULL;
183 while (table != NULL) {
184 G1CodeRootSetTable* to_purge = table;
185 table = table->_purge_next;
186 delete to_purge;
187 }
188 }
189
190 void G1CodeRootSet::move_to_large() {
191 G1CodeRootSetTable* temp = new G1CodeRootSetTable(LargeSize);
192
193 _table->copy_to(temp);
|