3152 update_state(words);
3153 assert(destination() == (HeapWord*)moved_oop + moved_oop->size(), "sanity");
3154 return is_full() ? ParMarkBitMap::full : ParMarkBitMap::incomplete;
3155 }
3156
3157 UpdateOnlyClosure::UpdateOnlyClosure(ParMarkBitMap* mbm,
3158 ParCompactionManager* cm,
3159 PSParallelCompact::SpaceId space_id) :
3160 ParMarkBitMapClosure(mbm, cm),
3161 _space_id(space_id),
3162 _start_array(PSParallelCompact::start_array(space_id))
3163 {
3164 }
3165
3166 // Updates the references in the object to their new values.
3167 ParMarkBitMapClosure::IterationStatus
3168 UpdateOnlyClosure::do_addr(HeapWord* addr, size_t words) {
3169 do_addr(addr);
3170 return ParMarkBitMap::incomplete;
3171 }
|
3152 update_state(words);
3153 assert(destination() == (HeapWord*)moved_oop + moved_oop->size(), "sanity");
3154 return is_full() ? ParMarkBitMap::full : ParMarkBitMap::incomplete;
3155 }
3156
3157 UpdateOnlyClosure::UpdateOnlyClosure(ParMarkBitMap* mbm,
3158 ParCompactionManager* cm,
3159 PSParallelCompact::SpaceId space_id) :
3160 ParMarkBitMapClosure(mbm, cm),
3161 _space_id(space_id),
3162 _start_array(PSParallelCompact::start_array(space_id))
3163 {
3164 }
3165
3166 // Updates the references in the object to their new values.
3167 ParMarkBitMapClosure::IterationStatus
3168 UpdateOnlyClosure::do_addr(HeapWord* addr, size_t words) {
3169 do_addr(addr);
3170 return ParMarkBitMap::incomplete;
3171 }
3172
3173 ParMarkBitMapClosure::IterationStatus
3174 FillClosure::do_addr(HeapWord* addr, size_t size) {
3175 CollectedHeap::fill_with_objects(addr, size);
3176 HeapWord* const end = addr + size;
3177 do {
3178 _start_array->allocate_block(addr);
3179 addr += oop(addr)->size();
3180 } while (addr < end);
3181 return ParMarkBitMap::incomplete;
3182 }
|