comparison src/share/vm/gc_implementation/g1/g1MarkSweep.hpp @ 20417:d35872270666

8057658: Enable G1 FullGC extensions Summary: Refactored the G1 FullGC code to enable it to be extended. Reviewed-by: mgerdin, brutisso
author sjohanss
date Tue, 09 Sep 2014 00:05:25 +0200
parents f2110083203d
children
comparison
equal deleted inserted replaced
20416:99f0593d8c9f 20417:d35872270666
41 // G1CollectedHeap using a four-phase pointer forwarding algorithm. All 41 // G1CollectedHeap using a four-phase pointer forwarding algorithm. All
42 // generations are assumed to support marking; those that can also support 42 // generations are assumed to support marking; those that can also support
43 // compaction. 43 // compaction.
44 // 44 //
45 // Class unloading will only occur when a full gc is invoked. 45 // Class unloading will only occur when a full gc is invoked.
46 46 class G1PrepareCompactClosure;
47 47
48 class G1MarkSweep : AllStatic { 48 class G1MarkSweep : AllStatic {
49 friend class VM_G1MarkSweep; 49 friend class VM_G1MarkSweep;
50 friend class Scavenge; 50 friend class Scavenge;
51 51
68 static void mark_sweep_phase3(); 68 static void mark_sweep_phase3();
69 // Move objects to new positions 69 // Move objects to new positions
70 static void mark_sweep_phase4(); 70 static void mark_sweep_phase4();
71 71
72 static void allocate_stacks(); 72 static void allocate_stacks();
73 static void prepare_compaction();
74 static void prepare_compaction_work(G1PrepareCompactClosure* blk);
75 };
76
77 class G1PrepareCompactClosure : public HeapRegionClosure {
78 protected:
79 G1CollectedHeap* _g1h;
80 ModRefBarrierSet* _mrbs;
81 CompactPoint _cp;
82 HeapRegionSetCount _humongous_regions_removed;
83
84 virtual void prepare_for_compaction(HeapRegion* hr, HeapWord* end);
85 void prepare_for_compaction_work(CompactPoint* cp, HeapRegion* hr, HeapWord* end);
86 void free_humongous_region(HeapRegion* hr);
87 bool is_cp_initialized() const { return _cp.space != NULL; }
88
89 public:
90 G1PrepareCompactClosure() :
91 _g1h(G1CollectedHeap::heap()),
92 _mrbs(_g1h->g1_barrier_set()),
93 _humongous_regions_removed() { }
94
95 void update_sets();
96 bool doHeapRegion(HeapRegion* hr);
73 }; 97 };
74 98
75 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1MARKSWEEP_HPP 99 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1MARKSWEEP_HPP