< prev index next >

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

Print this page
rev 13261 : imported patch 8184348-merge-par_mark-and_gray_root


 107       // The object failed to move.
 108 
 109       zap_dead_objects(_last_forwarded_object_end, obj_addr);
 110       // We consider all objects that we find self-forwarded to be
 111       // live. What we'll do is that we'll update the prev marking
 112       // info so that they are all under PTAMS and explicitly marked.
 113       if (!_cm->isPrevMarked(obj)) {
 114         _cm->markPrev(obj);
 115       }
 116       if (_during_initial_mark) {
 117         // For the next marking info we'll only mark the
 118         // self-forwarded objects explicitly if we are during
 119         // initial-mark (since, normally, we only mark objects pointed
 120         // to by roots if we succeed in copying them). By marking all
 121         // self-forwarded objects we ensure that we mark any that are
 122         // still pointed to be roots. During concurrent marking, and
 123         // after initial-mark, we don't need to mark any objects
 124         // explicitly and all objects in the CSet are considered
 125         // (implicitly) live. So, we won't mark them explicitly and
 126         // we'll leave them over NTAMS.
 127         _cm->grayRoot(obj, _hr);
 128       }
 129       size_t obj_size = obj->size();
 130 
 131       _marked_bytes += (obj_size * HeapWordSize);
 132       PreservedMarks::init_forwarded_mark(obj);
 133 
 134       // While we were processing RSet buffers during the collection,
 135       // we actually didn't scan any cards on the collection set,
 136       // since we didn't want to update remembered sets with entries
 137       // that point into the collection set, given that live objects
 138       // from the collection set are about to move and such entries
 139       // will be stale very soon.
 140       // This change also dealt with a reliability issue which
 141       // involved scanning a card in the collection set and coming
 142       // across an array that was being chunked and looking malformed.
 143       // The problem is that, if evacuation fails, we might have
 144       // remembered set entries missing given that we skipped cards on
 145       // the collection set. So, we'll recreate such entries now.
 146       obj->oop_iterate(_update_rset_cl);
 147 




 107       // The object failed to move.
 108 
 109       zap_dead_objects(_last_forwarded_object_end, obj_addr);
 110       // We consider all objects that we find self-forwarded to be
 111       // live. What we'll do is that we'll update the prev marking
 112       // info so that they are all under PTAMS and explicitly marked.
 113       if (!_cm->isPrevMarked(obj)) {
 114         _cm->markPrev(obj);
 115       }
 116       if (_during_initial_mark) {
 117         // For the next marking info we'll only mark the
 118         // self-forwarded objects explicitly if we are during
 119         // initial-mark (since, normally, we only mark objects pointed
 120         // to by roots if we succeed in copying them). By marking all
 121         // self-forwarded objects we ensure that we mark any that are
 122         // still pointed to be roots. During concurrent marking, and
 123         // after initial-mark, we don't need to mark any objects
 124         // explicitly and all objects in the CSet are considered
 125         // (implicitly) live. So, we won't mark them explicitly and
 126         // we'll leave them over NTAMS.
 127         _cm->mark_in_next_bitmap(_hr, obj);
 128       }
 129       size_t obj_size = obj->size();
 130 
 131       _marked_bytes += (obj_size * HeapWordSize);
 132       PreservedMarks::init_forwarded_mark(obj);
 133 
 134       // While we were processing RSet buffers during the collection,
 135       // we actually didn't scan any cards on the collection set,
 136       // since we didn't want to update remembered sets with entries
 137       // that point into the collection set, given that live objects
 138       // from the collection set are about to move and such entries
 139       // will be stale very soon.
 140       // This change also dealt with a reliability issue which
 141       // involved scanning a card in the collection set and coming
 142       // across an array that was being chunked and looking malformed.
 143       // The problem is that, if evacuation fails, we might have
 144       // remembered set entries missing given that we skipped cards on
 145       // the collection set. So, we'll recreate such entries now.
 146       obj->oop_iterate(_update_rset_cl);
 147 


< prev index next >