< prev index next >

src/share/vm/gc/g1/g1MarkSweep.hpp

Print this page

        

@@ -42,21 +42,31 @@
 // generations are assumed to support marking; those that can also support
 // compaction.
 //
 // Class unloading will only occur when a full gc is invoked.
 class G1PrepareCompactClosure;
+class G1ArchiveRegionMap;
 
 class G1MarkSweep : AllStatic {
  public:
 
   static void invoke_at_safepoint(ReferenceProcessor* rp,
                                   bool clear_all_softrefs);
 
   static STWGCTimer* gc_timer() { return GenMarkSweep::_gc_timer; }
   static SerialOldTracer* gc_tracer() { return GenMarkSweep::_gc_tracer; }
 
+  // Support for 'archive' objects, to prevent objects in archive regions
+  // from being marked by full GCs.
+  static void enable_archive_object_check();
+  static void mark_range_archive(HeapWord* start, HeapWord* end);
+  static bool in_archive_range(oop object);
+  static bool archive_check_enabled() { return G1MarkSweep::_archive_check_enabled; }
+
  private:
+  static bool _archive_check_enabled;
+  static G1ArchiveRegionMap  _archive_region_map;
 
   // Mark live objects
   static void mark_sweep_phase1(bool& marked_for_deopt,
                                 bool clear_all_softrefs);
   // Calculate new addresses

@@ -91,6 +101,11 @@
 
   void update_sets();
   bool doHeapRegion(HeapRegion* hr);
 };
 
+class G1ArchiveRegionMap : public G1BiasedMappedArray<bool> {
+protected:
+  bool default_value() const { return false; }
+};
+
 #endif // SHARE_VM_GC_G1_G1MARKSWEEP_HPP
< prev index next >