< prev index next >

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

Print this page
rev 52719 : [mq]: 8159440-marking-of-promoted-objects-to-concurrent


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




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


< prev index next >