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
|