< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahMarkingContext.hpp

Print this page
rev 58345 : 8240873: Shenandoah: Short-cut arraycopy barriers


  39 
  40   HeapWord** const _top_bitmaps;
  41   HeapWord** const _top_at_mark_starts_base;
  42   HeapWord** const _top_at_mark_starts;
  43 
  44   ShenandoahSharedFlag _is_complete;
  45 
  46 public:
  47   ShenandoahMarkingContext(MemRegion heap_region, MemRegion bitmap_region, size_t num_regions);
  48 
  49   /*
  50    * Marks the object. Returns true if the object has not been marked before and has
  51    * been marked by this thread. Returns false if the object has already been marked,
  52    * or if a competing thread succeeded in marking this object.
  53    */
  54   inline bool mark(oop obj);
  55 
  56   inline bool is_marked(oop obj) const;
  57 
  58   inline bool allocated_after_mark_start(oop obj) const;

  59 
  60   inline MarkBitMap* mark_bit_map();
  61 
  62   HeapWord* top_at_mark_start(ShenandoahHeapRegion* r) const;
  63   void capture_top_at_mark_start(ShenandoahHeapRegion* r);
  64   void reset_top_at_mark_start(ShenandoahHeapRegion* r);
  65   void initialize_top_at_mark_start(ShenandoahHeapRegion* r);
  66 
  67   void reset_top_bitmap(ShenandoahHeapRegion *r);
  68   void clear_bitmap(ShenandoahHeapRegion *r);
  69 
  70   bool is_bitmap_clear() const;
  71   bool is_bitmap_clear_range(HeapWord* start, HeapWord* end) const;
  72 
  73   bool is_complete();
  74   void mark_complete();
  75   void mark_incomplete();
  76 
  77 };
  78 


  39 
  40   HeapWord** const _top_bitmaps;
  41   HeapWord** const _top_at_mark_starts_base;
  42   HeapWord** const _top_at_mark_starts;
  43 
  44   ShenandoahSharedFlag _is_complete;
  45 
  46 public:
  47   ShenandoahMarkingContext(MemRegion heap_region, MemRegion bitmap_region, size_t num_regions);
  48 
  49   /*
  50    * Marks the object. Returns true if the object has not been marked before and has
  51    * been marked by this thread. Returns false if the object has already been marked,
  52    * or if a competing thread succeeded in marking this object.
  53    */
  54   inline bool mark(oop obj);
  55 
  56   inline bool is_marked(oop obj) const;
  57 
  58   inline bool allocated_after_mark_start(oop obj) const;
  59   inline bool allocated_after_mark_start(HeapWord* addr) const;
  60 
  61   inline MarkBitMap* mark_bit_map();
  62 
  63   HeapWord* top_at_mark_start(ShenandoahHeapRegion* r) const;
  64   void capture_top_at_mark_start(ShenandoahHeapRegion* r);
  65   void reset_top_at_mark_start(ShenandoahHeapRegion* r);
  66   void initialize_top_at_mark_start(ShenandoahHeapRegion* r);
  67 
  68   void reset_top_bitmap(ShenandoahHeapRegion *r);
  69   void clear_bitmap(ShenandoahHeapRegion *r);
  70 
  71   bool is_bitmap_clear() const;
  72   bool is_bitmap_clear_range(HeapWord* start, HeapWord* end) const;
  73 
  74   bool is_complete();
  75   void mark_complete();
  76   void mark_incomplete();
  77 
  78 };
  79 
< prev index next >