75 // Mark live objects 76 static void mark_sweep_phase1(bool& marked_for_deopt, 77 bool clear_all_softrefs); 78 // Calculate new addresses 79 static void mark_sweep_phase2(); 80 // Update pointers 81 static void mark_sweep_phase3(); 82 // Move objects to new positions 83 static void mark_sweep_phase4(); 84 85 static void allocate_stacks(); 86 static void prepare_compaction(); 87 static void prepare_compaction_work(G1PrepareCompactClosure* blk); 88 }; 89 90 class G1PrepareCompactClosure : public HeapRegionClosure { 91 protected: 92 G1CollectedHeap* _g1h; 93 ModRefBarrierSet* _mrbs; 94 CompactPoint _cp; 95 HeapRegionSetCount _humongous_regions_removed; 96 97 virtual void prepare_for_compaction(HeapRegion* hr, HeapWord* end); 98 void prepare_for_compaction_work(CompactPoint* cp, HeapRegion* hr, HeapWord* end); 99 void free_humongous_region(HeapRegion* hr); 100 bool is_cp_initialized() const { return _cp.space != NULL; } 101 102 public: 103 G1PrepareCompactClosure() : 104 _g1h(G1CollectedHeap::heap()), 105 _mrbs(_g1h->g1_barrier_set()), 106 _humongous_regions_removed() { } 107 108 void update_sets(); 109 bool doHeapRegion(HeapRegion* hr); 110 }; 111 112 // G1ArchiveRegionMap is a boolean array used to mark G1 regions as 113 // archive regions. This allows a quick check for whether an object 114 // should not be marked because it is in an archive region. 115 class G1ArchiveRegionMap : public G1BiasedMappedArray<bool> { 116 protected: 117 bool default_value() const { return false; } 118 }; 119 120 #endif // SHARE_VM_GC_G1_G1MARKSWEEP_HPP | 75 // Mark live objects 76 static void mark_sweep_phase1(bool& marked_for_deopt, 77 bool clear_all_softrefs); 78 // Calculate new addresses 79 static void mark_sweep_phase2(); 80 // Update pointers 81 static void mark_sweep_phase3(); 82 // Move objects to new positions 83 static void mark_sweep_phase4(); 84 85 static void allocate_stacks(); 86 static void prepare_compaction(); 87 static void prepare_compaction_work(G1PrepareCompactClosure* blk); 88 }; 89 90 class G1PrepareCompactClosure : public HeapRegionClosure { 91 protected: 92 G1CollectedHeap* _g1h; 93 ModRefBarrierSet* _mrbs; 94 CompactPoint _cp; 95 uint _humongous_regions_removed; 96 97 virtual void prepare_for_compaction(HeapRegion* hr, HeapWord* end); 98 void prepare_for_compaction_work(CompactPoint* cp, HeapRegion* hr, HeapWord* end); 99 void free_humongous_region(HeapRegion* hr); 100 bool is_cp_initialized() const { return _cp.space != NULL; } 101 102 public: 103 G1PrepareCompactClosure() : 104 _g1h(G1CollectedHeap::heap()), 105 _mrbs(_g1h->g1_barrier_set()), 106 _humongous_regions_removed(0) { } 107 108 void update_sets(); 109 bool doHeapRegion(HeapRegion* hr); 110 }; 111 112 // G1ArchiveRegionMap is a boolean array used to mark G1 regions as 113 // archive regions. This allows a quick check for whether an object 114 // should not be marked because it is in an archive region. 115 class G1ArchiveRegionMap : public G1BiasedMappedArray<bool> { 116 protected: 117 bool default_value() const { return false; } 118 }; 119 120 #endif // SHARE_VM_GC_G1_G1MARKSWEEP_HPP |