< prev index next >

src/share/vm/gc/shenandoah/shenandoahHeap.hpp

Print this page
rev 14453 : Remove secondary marking bitmap.

@@ -133,12 +133,12 @@
   ShenandoahHeapLock _lock;
   ShenandoahCollectorPolicy* _shenandoah_policy;
   size_t _bitmap_size;
   size_t _bitmap_words_per_region;
   MemRegion _heap_region;
-  MemRegion _bitmap0_region;
-  MemRegion _bitmap1_region;
+  MemRegion _bitmap_region;
+  MemRegion _aux_bitmap_region;
 
   // Sortable array of regions
   ShenandoahHeapRegionSet* _ordered_regions;
   ShenandoahFreeSet* _free_regions;
   ShenandoahCollectionSet* _collection_set;

@@ -163,20 +163,16 @@
 
   volatile size_t _used;
   volatile size_t _committed;
 
   MarkBitMap _verification_bit_map;
-  MarkBitMap _mark_bit_map0;
-  MarkBitMap _mark_bit_map1;
-  MarkBitMap* _complete_mark_bit_map;
-  MarkBitMap* _next_mark_bit_map;
+  MarkBitMap _aux_bit_map;
+  MarkBitMap _mark_bit_map;
+  bool _bitmap_valid;
 
-  HeapWord** _complete_top_at_mark_starts;
-  HeapWord** _complete_top_at_mark_starts_base;
-
-  HeapWord** _next_top_at_mark_starts;
-  HeapWord** _next_top_at_mark_starts_base;
+  HeapWord** _top_at_mark_starts;
+  HeapWord** _top_at_mark_starts_base;
 
   volatile jbyte _cancelled_concgc;
 
   size_t _bytes_allocated_since_cm;
   size_t _bytes_allocated_during_cm;

@@ -189,11 +185,11 @@
   bool _update_refs_in_progress;
   bool _concurrent_partial_in_progress;
 
   unsigned int _evacuation_in_progress;
   bool _need_update_refs;
-  bool _need_reset_bitmaps;
+  bool _need_reset_bitmap;
 
   ReferenceProcessor* _ref_processor;
 
   ShenandoahForwardedIsAliveClosure _forwarded_is_alive;
   ShenandoahIsAliveClosure _is_alive;

@@ -343,17 +339,13 @@
   inline bool in_collection_set(ShenandoahHeapRegion* r) const;
 
   template <class T>
   inline bool in_collection_set(T obj) const;
 
-  inline bool allocated_after_next_mark_start(HeapWord* addr) const;
-  void set_next_top_at_mark_start(HeapWord* region_base, HeapWord* addr);
-  HeapWord* next_top_at_mark_start(HeapWord* region_base);
-
-  inline bool allocated_after_complete_mark_start(HeapWord* addr) const;
-  void set_complete_top_at_mark_start(HeapWord* region_base, HeapWord* addr);
-  HeapWord* complete_top_at_mark_start(HeapWord* region_base);
+  inline bool allocated_after_mark_start(HeapWord* addr) const;
+  void set_top_at_mark_start(HeapWord* region_base, HeapWord* addr);
+  HeapWord* top_at_mark_start(HeapWord* region_base);
 
   // Evacuates object src. Returns the evacuated object if this thread
   // succeeded, otherwise rolls back the evacuation and returns the
   // evacuated object by the competing thread. 'succeeded' is an out
   // param and set to true if this thread succeeded, otherwise to false.

@@ -381,21 +373,20 @@
 
   void handle_heap_shrinkage();
 
   size_t garbage();
 
-  void reset_next_mark_bitmap(WorkGang* gang);
-  void reset_complete_mark_bitmap(WorkGang* gang);
+  void reset_mark_bitmap(WorkGang* gang);
+
+  MarkBitMap* mark_bit_map();
+  inline bool is_marked(oop obj) const;
+  inline bool mark(oop obj);
+  bool is_bitmap_clear();
+  bool is_bitmap_clear_range(HeapWord* start, HeapWord* end);
 
-  MarkBitMap* complete_mark_bit_map();
-  MarkBitMap* next_mark_bit_map();
-  inline bool is_marked_complete(oop obj) const;
-  inline bool mark_next(oop obj) const;
-  inline bool is_marked_next(oop obj) const;
-  bool is_next_bitmap_clear();
-  bool is_next_bitmap_clear_range(HeapWord* start, HeapWord* end);
-  bool is_complete_bitmap_clear_range(HeapWord* start, HeapWord* end);
+  bool is_bitmap_valid() const { return _bitmap_valid; }
+  void set_bitmap_valid(bool valid) { _bitmap_valid = valid; }
 
   bool commit_bitmaps(ShenandoahHeapRegion* r);
   bool uncommit_bitmaps(ShenandoahHeapRegion* r);
 
   template <class T>

@@ -457,12 +448,10 @@
   template<class T>
   inline void marked_object_oop_safe_iterate(ShenandoahHeapRegion* region, T* cl);
 
   GCTimer* gc_timer() const;
 
-  void swap_mark_bitmaps();
-
   void cancel_concgc(GCCause::Cause cause);
   void cancel_concgc(ShenandoahCancelCause cause);
 
   ShenandoahHeapLock* lock() { return &_lock; }
   void assert_heaplock_owned_by_current_thread() PRODUCT_RETURN;

@@ -501,15 +490,15 @@
   inline HeapWord* allocate_from_gclab(Thread* thread, size_t size);
   HeapWord* allocate_from_gclab_slow(Thread* thread, size_t size);
   HeapWord* allocate_new_gclab(size_t word_size);
 
   template<class T>
-  inline void do_marked_object(MarkBitMap* bitmap, T* cl, oop obj);
+  inline void do_marked_object(T* cl, oop obj);
 
   ShenandoahConcurrentThread* concurrent_thread() { return _concurrent_gc_thread; }
 
-  inline bool mark_next_no_checks(oop obj) const;
+  inline bool mark_no_checks(oop obj);
 
 public:
   inline oop atomic_compare_exchange_oop(oop n, narrowOop* addr, oop c);
   inline oop atomic_compare_exchange_oop(oop n, oop* addr, oop c);
 

@@ -543,8 +532,10 @@
 
   void set_alloc_seq_gc_start();
   void set_alloc_seq_gc_end();
 
   void set_used_at_last_gc() {_used_at_last_gc = used();}
+
+  void make_tlabs_parsable(bool retire_tlabs) /* override */;
 };
 
 #endif // SHARE_VM_GC_SHENANDOAH_SHENANDOAHHEAP_HPP
< prev index next >