< prev index next >

src/share/vm/gc/g1/g1ConcurrentMark.cpp

Print this page
rev 13257 : [mq]: 8184346-cleanup-g1cmbitmap
rev 13258 : [mq]: 8184346-rkennke-review
rev 13259 : [mq]: 8184347-move-g1cmbitmap-into-own-files
rev 13261 : imported patch 8184348-merge-par_mark-and_gray_root

*** 1703,1722 **** // This is very similar to G1CMTask::deal_with_reference, but with // more relaxed requirements for the argument, so this must be more // circumspect about treating the argument as an object. void do_entry(void* entry) const { _task->increment_refs_reached(); ! HeapRegion* hr = _g1h->heap_region_containing(entry); ! if (entry < hr->next_top_at_mark_start()) { ! // Until we get here, we don't know whether entry refers to a valid ! // object; it could instead have been a stale reference. ! oop obj = static_cast<oop>(entry); ! assert(obj->is_oop(true /* ignore mark word */), ! "Invalid oop in SATB buffer: " PTR_FORMAT, p2i(obj)); _task->make_reference_grey(obj); } - } public: G1CMSATBBufferClosure(G1CMTask* task, G1CollectedHeap* g1h) : _task(task), _g1h(g1h) { } --- 1703,1715 ---- // This is very similar to G1CMTask::deal_with_reference, but with // more relaxed requirements for the argument, so this must be more // circumspect about treating the argument as an object. void do_entry(void* entry) const { _task->increment_refs_reached(); ! oop const obj = static_cast<oop>(entry); _task->make_reference_grey(obj); } public: G1CMSATBBufferClosure(G1CMTask* task, G1CollectedHeap* g1h) : _task(task), _g1h(g1h) { }
< prev index next >