< prev index next >

src/share/vm/gc/cms/parNewGeneration.cpp

Print this page
rev 11971 : [mq]: overflow_list_3

*** 1284,1294 **** if (from_space_obj->forwardee() == from_space_obj) { oopDesc* listhead = NEW_C_HEAP_ARRAY(oopDesc, 1, mtGC); listhead->forward_to(from_space_obj); from_space_obj = listhead; } ! oop observed_overflow_list = _overflow_list; oop cur_overflow_list; do { cur_overflow_list = observed_overflow_list; if (cur_overflow_list != BUSY) { from_space_obj->set_klass_to_list_ptr(cur_overflow_list); --- 1284,1294 ---- if (from_space_obj->forwardee() == from_space_obj) { oopDesc* listhead = NEW_C_HEAP_ARRAY(oopDesc, 1, mtGC); listhead->forward_to(from_space_obj); from_space_obj = listhead; } ! oop observed_overflow_list = oop(_overflow_list); oop cur_overflow_list; do { cur_overflow_list = observed_overflow_list; if (cur_overflow_list != BUSY) { from_space_obj->set_klass_to_list_ptr(cur_overflow_list);
*** 1384,1394 **** oop suffix = cur->list_ptr_from_klass(); // suffix will be put back on global list cur->set_klass_to_list_ptr(NULL); // break off suffix // It's possible that the list is still in the empty(busy) state // we left it in a short while ago; in that case we may be // able to place back the suffix. ! oop observed_overflow_list = _overflow_list; oop cur_overflow_list = observed_overflow_list; bool attached = false; while (observed_overflow_list == BUSY || observed_overflow_list == NULL) { observed_overflow_list = (oop) Atomic::cmpxchg_ptr(suffix, &_overflow_list, cur_overflow_list); --- 1384,1394 ---- oop suffix = cur->list_ptr_from_klass(); // suffix will be put back on global list cur->set_klass_to_list_ptr(NULL); // break off suffix // It's possible that the list is still in the empty(busy) state // we left it in a short while ago; in that case we may be // able to place back the suffix. ! oop observed_overflow_list = oop(_overflow_list); oop cur_overflow_list = observed_overflow_list; bool attached = false; while (observed_overflow_list == BUSY || observed_overflow_list == NULL) { observed_overflow_list = (oop) Atomic::cmpxchg_ptr(suffix, &_overflow_list, cur_overflow_list);
*** 1403,1413 **** oop last = suffix; while (last->klass_or_null() != NULL) { last = last->list_ptr_from_klass(); } // Atomically prepend suffix to current overflow list ! observed_overflow_list = _overflow_list; do { cur_overflow_list = observed_overflow_list; if (cur_overflow_list != BUSY) { // Do the splice ... last->set_klass_to_list_ptr(cur_overflow_list); --- 1403,1413 ---- oop last = suffix; while (last->klass_or_null() != NULL) { last = last->list_ptr_from_klass(); } // Atomically prepend suffix to current overflow list ! observed_overflow_list = oop(_overflow_list); do { cur_overflow_list = observed_overflow_list; if (cur_overflow_list != BUSY) { // Do the splice ... last->set_klass_to_list_ptr(cur_overflow_list);
< prev index next >