src/share/vm/gc_implementation/g1/g1RemSet.inline.hpp

changeset 2063
a03ae377b2e8
parent 2060
2d160770d2e5
child 2216
c32059ef4dc0
equal deleted inserted replaced
2062:0ce1569c90e5 2063:a03ae377b2e8
60 assert(from == NULL || from->is_in_reserved(p), "p is not in from"); 60 assert(from == NULL || from->is_in_reserved(p), "p is not in from");
61 61
62 HeapRegion* to = _g1->heap_region_containing(obj); 62 HeapRegion* to = _g1->heap_region_containing(obj);
63 // The test below could be optimized by applying a bit op to to and from. 63 // The test below could be optimized by applying a bit op to to and from.
64 if (to != NULL && from != NULL && from != to) { 64 if (to != NULL && from != NULL && from != to) {
65 // The _par_traversal_in_progress flag is true during the collection pause, 65 // The _traversal_in_progress flag is true during the collection pause,
66 // false during the evacuation failure handing. This should avoid a 66 // false during the evacuation failure handling. This should avoid a
67 // potential loop if we were to add the card containing 'p' to the DCQS 67 // potential loop if we were to add the card containing 'p' to the DCQS
68 // that's used to regenerate the remembered sets for the collection set, 68 // that's used to regenerate the remembered sets for the collection set,
69 // in the event of an evacuation failure, here. The UpdateRSImmediate 69 // in the event of an evacuation failure, here. The UpdateRSImmediate
70 // closure will eventally call this routine. 70 // closure will eventally call this routine.
71 if (_par_traversal_in_progress && 71 if (_traversal_in_progress &&
72 to->in_collection_set() && !self_forwarded(obj)) { 72 to->in_collection_set() && !self_forwarded(obj)) {
73 73
74 assert(_cset_rs_update_cl[tid] != NULL, "should have been set already"); 74 assert(_cset_rs_update_cl[tid] != NULL, "should have been set already");
75 _cset_rs_update_cl[tid]->do_oop(p); 75 _cset_rs_update_cl[tid]->do_oop(p);
76 76

mercurial