Mercurial > hg > truffle
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 |