41 // G1CollectedHeap using a four-phase pointer forwarding algorithm. All
42 // generations are assumed to support marking; those that can also support
43 // compaction.
44 //
45 // Class unloading will only occur when a full gc is invoked.
46 class G1PrepareCompactClosure;
47 class G1ArchiveRegionMap;
48
49 class G1MarkSweep : AllStatic {
50 public:
51
52 static void invoke_at_safepoint(ReferenceProcessor* rp,
53 bool clear_all_softrefs);
54
55 static STWGCTimer* gc_timer() { return GenMarkSweep::_gc_timer; }
56 static SerialOldTracer* gc_tracer() { return GenMarkSweep::_gc_tracer; }
57
58 // Create the _archive_region_map which is used to identify archive objects.
59 static void enable_archive_object_check();
60
61 // Mark the regions containing the specified address range as archive regions.
62 static void mark_range_archive(MemRegion range);
63
64 // Check if an object is in an archive region using the _archive_region_map.
65 static bool in_archive_range(oop object);
66
67 // Check if archive object checking is enabled, to avoid calling in_archive_range
68 // unnecessarily.
69 static bool archive_check_enabled() { return G1MarkSweep::_archive_check_enabled; }
70
71 private:
72 static bool _archive_check_enabled;
73 static G1ArchiveRegionMap _archive_region_map;
74
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
|
41 // G1CollectedHeap using a four-phase pointer forwarding algorithm. All
42 // generations are assumed to support marking; those that can also support
43 // compaction.
44 //
45 // Class unloading will only occur when a full gc is invoked.
46 class G1PrepareCompactClosure;
47 class G1ArchiveRegionMap;
48
49 class G1MarkSweep : AllStatic {
50 public:
51
52 static void invoke_at_safepoint(ReferenceProcessor* rp,
53 bool clear_all_softrefs);
54
55 static STWGCTimer* gc_timer() { return GenMarkSweep::_gc_timer; }
56 static SerialOldTracer* gc_tracer() { return GenMarkSweep::_gc_tracer; }
57
58 // Create the _archive_region_map which is used to identify archive objects.
59 static void enable_archive_object_check();
60
61 // Set the regions containing the specified address range as archive/non-archive.
62 static void set_range_archive(MemRegion range, bool is_archive);
63
64 // Check if an object is in an archive region using the _archive_region_map.
65 static bool in_archive_range(oop object);
66
67 // Check if archive object checking is enabled, to avoid calling in_archive_range
68 // unnecessarily.
69 static bool archive_check_enabled() { return G1MarkSweep::_archive_check_enabled; }
70
71 private:
72 static bool _archive_check_enabled;
73 static G1ArchiveRegionMap _archive_region_map;
74
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
|