src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp

Print this page

        

*** 6654,6664 **** template <class T> void do_oop_work(T* p) { T heap_oop = oopDesc::load_heap_oop(p); if (!oopDesc::is_null(heap_oop)) { oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); HeapRegion* hr = _g1h->heap_region_containing(obj); ! assert(!hr->isHumongous(), "code root in humongous region?"); // HeapRegion::add_strong_code_root() avoids adding duplicate // entries but having duplicates is OK since we "mark" nmethods // as visited when we scan the strong code root lists during the GC. hr->add_strong_code_root(_nm); --- 6654,6664 ---- template <class T> void do_oop_work(T* p) { T heap_oop = oopDesc::load_heap_oop(p); if (!oopDesc::is_null(heap_oop)) { oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); HeapRegion* hr = _g1h->heap_region_containing(obj); ! assert(!hr->continuesHumongous(), "code root in continuation of humongous region?"); // HeapRegion::add_strong_code_root() avoids adding duplicate // entries but having duplicates is OK since we "mark" nmethods // as visited when we scan the strong code root lists during the GC. hr->add_strong_code_root(_nm);
*** 6681,6691 **** template <class T> void do_oop_work(T* p) { T heap_oop = oopDesc::load_heap_oop(p); if (!oopDesc::is_null(heap_oop)) { oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); HeapRegion* hr = _g1h->heap_region_containing(obj); ! assert(!hr->isHumongous(), "code root in humongous region?"); hr->remove_strong_code_root(_nm); assert(!hr->rem_set()->strong_code_roots_list_contains(_nm), "remove failed?"); } } --- 6681,6691 ---- template <class T> void do_oop_work(T* p) { T heap_oop = oopDesc::load_heap_oop(p); if (!oopDesc::is_null(heap_oop)) { oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); HeapRegion* hr = _g1h->heap_region_containing(obj); ! assert(!hr->continuesHumongous(), "code root in continuation of humongous region?"); hr->remove_strong_code_root(_nm); assert(!hr->rem_set()->strong_code_roots_list_contains(_nm), "remove failed?"); } }
*** 6794,6805 **** MarkStrongCodeRootsHRClosure(G1CollectedHeap* g1h, uint worker_id) : _g1h(g1h), _worker_id(worker_id) {} bool doHeapRegion(HeapRegion *hr) { HeapRegionRemSet* hrrs = hr->rem_set(); ! if (hr->isHumongous()) { ! // Code roots should never be attached to a humongous region assert(hrrs->strong_code_roots_list_length() == 0, "sanity"); return false; } if (hr->in_collection_set()) { --- 6794,6805 ---- MarkStrongCodeRootsHRClosure(G1CollectedHeap* g1h, uint worker_id) : _g1h(g1h), _worker_id(worker_id) {} bool doHeapRegion(HeapRegion *hr) { HeapRegionRemSet* hrrs = hr->rem_set(); ! if (hr->continuesHumongous()) { ! // Code roots should never be attached to a continuation of a humongous region assert(hrrs->strong_code_roots_list_length() == 0, "sanity"); return false; } if (hr->in_collection_set()) {