1.1 --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Tue Jul 01 09:03:55 2014 +0200 1.2 +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Mon Jul 07 10:12:40 2014 +0200 1.3 @@ -210,6 +210,7 @@ 1.4 class RefineCardTableEntryClosure; 1.5 1.6 class G1CollectedHeap : public SharedHeap { 1.7 + friend class VM_CollectForMetadataAllocation; 1.8 friend class VM_G1CollectForAllocation; 1.9 friend class VM_G1CollectFull; 1.10 friend class VM_G1IncCollectionPause; 1.11 @@ -219,7 +220,7 @@ 1.12 friend class OldGCAllocRegion; 1.13 1.14 // Closures used in implementation. 1.15 - template <G1Barrier barrier, bool do_mark_object> 1.16 + template <G1Barrier barrier, G1Mark do_mark_object> 1.17 friend class G1ParCopyClosure; 1.18 friend class G1IsAliveClosure; 1.19 friend class G1EvacuateFollowersClosure; 1.20 @@ -346,6 +347,9 @@ 1.21 // It initializes the GC alloc regions at the start of a GC. 1.22 void init_gc_alloc_regions(EvacuationInfo& evacuation_info); 1.23 1.24 + // Setup the retained old gc alloc region as the currrent old gc alloc region. 1.25 + void use_retained_old_gc_alloc_region(EvacuationInfo& evacuation_info); 1.26 + 1.27 // It releases the GC alloc regions at the end of a GC. 1.28 void release_gc_alloc_regions(uint no_of_gc_workers, EvacuationInfo& evacuation_info); 1.29 1.30 @@ -827,12 +831,13 @@ 1.31 // param is for use with parallel roots processing, and should be 1.32 // the "i" of the calling parallel worker thread's work(i) function. 1.33 // In the sequential case this param will be ignored. 1.34 - void g1_process_strong_roots(bool is_scavenging, 1.35 - ScanningOption so, 1.36 - OopClosure* scan_non_heap_roots, 1.37 - OopsInHeapRegionClosure* scan_rs, 1.38 - G1KlassScanClosure* scan_klasses, 1.39 - uint worker_i); 1.40 + void g1_process_roots(OopClosure* scan_non_heap_roots, 1.41 + OopClosure* scan_non_heap_weak_roots, 1.42 + OopsInHeapRegionClosure* scan_rs, 1.43 + CLDClosure* scan_strong_clds, 1.44 + CLDClosure* scan_weak_clds, 1.45 + CodeBlobClosure* scan_strong_code, 1.46 + uint worker_i); 1.47 1.48 // Notifies all the necessary spaces that the committed space has 1.49 // been updated (either expanded or shrunk). It should be called 1.50 @@ -1025,7 +1030,7 @@ 1.51 // of G1CollectedHeap::_gc_time_stamp. 1.52 unsigned int* _worker_cset_start_region_time_stamp; 1.53 1.54 - enum G1H_process_strong_roots_tasks { 1.55 + enum G1H_process_roots_tasks { 1.56 G1H_PS_filter_satb_buffers, 1.57 G1H_PS_refProcessor_oops_do, 1.58 // Leave this one last. 1.59 @@ -1596,10 +1601,6 @@ 1.60 // Free up superfluous code root memory. 1.61 void purge_code_root_memory(); 1.62 1.63 - // During an initial mark pause, mark all the code roots that 1.64 - // point into regions *not* in the collection set. 1.65 - void mark_strong_code_roots(uint worker_id); 1.66 - 1.67 // Rebuild the stong code root lists for each region 1.68 // after a full GC 1.69 void rebuild_strong_code_roots(); 1.70 @@ -1608,6 +1609,9 @@ 1.71 // in symbol table, possibly in parallel. 1.72 void unlink_string_and_symbol_table(BoolObjectClosure* is_alive, bool unlink_strings = true, bool unlink_symbols = true); 1.73 1.74 + // Parallel phase of unloading/cleaning after G1 concurrent mark. 1.75 + void parallel_cleaning(BoolObjectClosure* is_alive, bool process_strings, bool process_symbols, bool class_unloading_occurred); 1.76 + 1.77 // Redirty logged cards in the refinement queue. 1.78 void redirty_logged_cards(); 1.79 // Verification