8144067: Pass obj directly to G1ParScanThreadState::update_rs

Reviewed-by: tschatzl, mgerdin
This commit is contained in:
Erik Helin 2015-11-27 13:39:50 +01:00
parent 86d5c93087
commit caaac8e679
3 changed files with 4 additions and 4 deletions

View File

@ -91,7 +91,7 @@ inline void G1ParScanClosure::do_oop_nv(T* p) {
if (state.is_humongous()) { if (state.is_humongous()) {
_g1->set_humongous_is_live(obj); _g1->set_humongous_is_live(obj);
} }
_par_scan_state->update_rs(_from, p); _par_scan_state->update_rs(_from, p, obj);
} }
} }
} }

View File

@ -98,10 +98,10 @@ class G1ParScanThreadState : public CHeapObj<mtGC> {
template <class T> void push_on_queue(T* ref); template <class T> void push_on_queue(T* ref);
template <class T> void update_rs(HeapRegion* from, T* p) { template <class T> void update_rs(HeapRegion* from, T* p, oop o) {
// If the new value of the field points to the same region or // If the new value of the field points to the same region or
// is the to-space, we don't need to include it in the Rset updates. // is the to-space, we don't need to include it in the Rset updates.
if (!from->is_in_reserved(oopDesc::load_decode_heap_oop(p)) && !from->is_young()) { if (!from->is_in_reserved(o) && !from->is_young()) {
size_t card_index = ctbs()->index_for(p); size_t card_index = ctbs()->index_for(p);
// If the card hasn't been added to the buffer, do it. // If the card hasn't been added to the buffer, do it.
if (ctbs()->mark_card_deferred(card_index)) { if (ctbs()->mark_card_deferred(card_index)) {

View File

@ -56,7 +56,7 @@ template <class T> void G1ParScanThreadState::do_oop_evac(T* p, HeapRegion* from
} }
assert(obj != NULL, "Must be"); assert(obj != NULL, "Must be");
update_rs(from, p); update_rs(from, p, obj);
} }
template <class T> inline void G1ParScanThreadState::push_on_queue(T* ref) { template <class T> inline void G1ParScanThreadState::push_on_queue(T* ref) {