src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp

changeset 6992
2c6ef90f030a
parent 6971
7426d8d76305
child 7005
e0954897238a
child 7018
a22acf6d7598
     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

mercurial