1.1 --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Thu Feb 05 11:42:10 2009 -0800 1.2 +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Fri Feb 06 01:38:50 2009 +0300 1.3 @@ -90,7 +90,7 @@ 1.4 HeapRegion* _curr_scan_only; 1.5 1.6 HeapRegion* _survivor_head; 1.7 - HeapRegion* _survivors_tail; 1.8 + HeapRegion* _survivor_tail; 1.9 size_t _survivor_length; 1.10 1.11 void empty_list(HeapRegion* list); 1.12 @@ -105,6 +105,7 @@ 1.13 bool is_empty() { return _length == 0; } 1.14 size_t length() { return _length; } 1.15 size_t scan_only_length() { return _scan_only_length; } 1.16 + size_t survivor_length() { return _survivor_length; } 1.17 1.18 void rs_length_sampling_init(); 1.19 bool rs_length_sampling_more(); 1.20 @@ -120,6 +121,7 @@ 1.21 HeapRegion* first_region() { return _head; } 1.22 HeapRegion* first_scan_only_region() { return _scan_only_head; } 1.23 HeapRegion* first_survivor_region() { return _survivor_head; } 1.24 + HeapRegion* last_survivor_region() { return _survivor_tail; } 1.25 HeapRegion* par_get_next_scan_only_region() { 1.26 MutexLockerEx x(ParGCRareEvent_lock, Mutex::_no_safepoint_check_flag); 1.27 HeapRegion* ret = _curr_scan_only; 1.28 @@ -219,7 +221,7 @@ 1.29 // The to-space memory regions into which objects are being copied during 1.30 // a GC. 1.31 HeapRegion* _gc_alloc_regions[GCAllocPurposeCount]; 1.32 - uint _gc_alloc_region_counts[GCAllocPurposeCount]; 1.33 + size_t _gc_alloc_region_counts[GCAllocPurposeCount]; 1.34 1.35 // A list of the regions that have been set to be alloc regions in the 1.36 // current collection. 1.37 @@ -281,8 +283,8 @@ 1.38 // Returns "true" iff none of the gc alloc regions have any allocations 1.39 // since the last call to "save_marks". 1.40 bool all_alloc_regions_no_allocs_since_save_marks(); 1.41 - // Calls "note_end_of_copying on all gc alloc_regions. 1.42 - void all_alloc_regions_note_end_of_copying(); 1.43 + // Perform finalization stuff on all allocation regions. 1.44 + void retire_all_alloc_regions(); 1.45 1.46 // The number of regions allocated to hold humongous objects. 1.47 int _num_humongous_regions; 1.48 @@ -351,6 +353,10 @@ 1.49 // that parallel threads might be attempting allocations. 1.50 void par_allocate_remaining_space(HeapRegion* r); 1.51 1.52 + // Retires an allocation region when it is full or at the end of a 1.53 + // GC pause. 1.54 + void retire_alloc_region(HeapRegion* alloc_region, bool par); 1.55 + 1.56 // Helper function for two callbacks below. 1.57 // "full", if true, indicates that the GC is for a System.gc() request, 1.58 // and should collect the entire heap. If "clear_all_soft_refs" is true,