< prev index next >

src/share/vm/gc/g1/g1ConcurrentMark.inline.hpp

Print this page
rev 11935 : imported patch 8159422-high-mark-stack-contention
rev 11936 : imported patch 8159422-mikael-review

*** 87,104 **** return _bm.par_set_bit(heapWordToOffset(addr)); } #undef check_mark template<typename Fn> inline void G1CMMarkStack::iterate(Fn fn) { ! assert_at_safepoint(true); ! assert(!stack_modified(), "Saved index " SIZE_FORMAT " must be the same as " SIZE_FORMAT, _saved_index, _index); ! for (size_t i = 0; i < _index; ++i) { ! fn(_base[i]); } } // It scans an object and visits its children. inline void G1CMTask::scan_object(oop obj) { process_grey_object<true>(obj); } inline void G1CMTask::push(oop obj) { --- 87,116 ---- return _bm.par_set_bit(heapWordToOffset(addr)); } #undef check_mark + #ifndef PRODUCT template<typename Fn> inline void G1CMMarkStack::iterate(Fn fn) { ! size_t num_chunks = 0; ! ! OopChunk* cur = _chunk_list; ! while (cur != NULL) { ! guarantee(num_chunks <= _chunks_in_chunk_list, "Found " SIZE_FORMAT " oop chunks which is more than there should be", num_chunks); ! ! for (size_t i = 0; i < OopsPerChunk; ++i) { ! if (cur->data[i] == NULL) { ! break; ! } ! fn((oop)cur->data[i]); ! } ! cur = cur->next; ! num_chunks++; } } + #endif // It scans an object and visits its children. inline void G1CMTask::scan_object(oop obj) { process_grey_object<true>(obj); } inline void G1CMTask::push(oop obj) {
< prev index next >