equal
deleted
inserted
replaced
2952 assert(_cm->isPrevMarked(obj), "Should be marked!"); |
2952 assert(_cm->isPrevMarked(obj), "Should be marked!"); |
2953 } else { |
2953 } else { |
2954 // The object has been either evacuated or is dead. Fill it with a |
2954 // The object has been either evacuated or is dead. Fill it with a |
2955 // dummy object. |
2955 // dummy object. |
2956 MemRegion mr((HeapWord*)obj, obj->size()); |
2956 MemRegion mr((HeapWord*)obj, obj->size()); |
2957 SharedHeap::fill_region_with_object(mr); |
2957 CollectedHeap::fill_with_object(mr); |
2958 _cm->clearRangeBothMaps(mr); |
2958 _cm->clearRangeBothMaps(mr); |
2959 } |
2959 } |
2960 } |
2960 } |
2961 }; |
2961 }; |
2962 |
2962 |
3223 // If there's too little space, no one can allocate, so we're done. |
3223 // If there's too little space, no one can allocate, so we're done. |
3224 if (free_words < (size_t)oopDesc::header_size()) return; |
3224 if (free_words < (size_t)oopDesc::header_size()) return; |
3225 // Otherwise, try to claim it. |
3225 // Otherwise, try to claim it. |
3226 block = r->par_allocate(free_words); |
3226 block = r->par_allocate(free_words); |
3227 } while (block == NULL); |
3227 } while (block == NULL); |
3228 SharedHeap::fill_region_with_object(MemRegion(block, free_words)); |
3228 fill_with_object(block, free_words); |
3229 } |
3229 } |
3230 |
3230 |
3231 #define use_local_bitmaps 1 |
3231 #define use_local_bitmaps 1 |
3232 #define verify_local_bitmaps 0 |
3232 #define verify_local_bitmaps 0 |
3233 |
3233 |
3617 void undo_allocation(GCAllocPurpose purpose, HeapWord* obj, size_t word_sz) { |
3617 void undo_allocation(GCAllocPurpose purpose, HeapWord* obj, size_t word_sz) { |
3618 if (alloc_buffer(purpose)->contains(obj)) { |
3618 if (alloc_buffer(purpose)->contains(obj)) { |
3619 guarantee(alloc_buffer(purpose)->contains(obj + word_sz - 1), |
3619 guarantee(alloc_buffer(purpose)->contains(obj + word_sz - 1), |
3620 "should contain whole object"); |
3620 "should contain whole object"); |
3621 alloc_buffer(purpose)->undo_allocation(obj, word_sz); |
3621 alloc_buffer(purpose)->undo_allocation(obj, word_sz); |
3622 } |
3622 } else { |
3623 else { |
3623 CollectedHeap::fill_with_object(obj, word_sz); |
3624 SharedHeap::fill_region_with_object(MemRegion(obj, word_sz)); |
|
3625 add_to_undo_waste(word_sz); |
3624 add_to_undo_waste(word_sz); |
3626 } |
3625 } |
3627 } |
3626 } |
3628 |
3627 |
3629 void set_evac_failure_closure(OopsInHeapRegionClosure* evac_failure_cl) { |
3628 void set_evac_failure_closure(OopsInHeapRegionClosure* evac_failure_cl) { |