< prev index next >

src/hotspot/share/gc/z/zLiveMap.hpp

Print this page

 28 #include "gc/z/zBitMap.hpp"
 29 #include "gc/z/zGenerationId.hpp"
 30 #include "memory/allocation.hpp"
 31 #include "runtime/atomic.hpp"
 32 
 33 class ObjectClosure;
 34 
 35 class ZLiveMap {
 36   friend class ZLiveMapTest;
 37 
 38 private:
 39   static const uint32_t NumSegments = 64;
 40   static const uint32_t BitsPerObject = 2;
 41 
 42   const uint32_t    _segment_size;
 43   const int         _segment_shift;
 44 
 45   Atomic<uint32_t>  _seqnum;
 46   Atomic<uint32_t>  _live_objects;
 47   Atomic<size_t>    _live_bytes;

 48   BitMap::bm_word_t _segment_live_bits;
 49   BitMap::bm_word_t _segment_claim_bits;
 50   ZBitMap           _bitmap;
 51 
 52   const BitMapView segment_live_bits() const;
 53   const BitMapView segment_claim_bits() const;
 54 
 55   BitMapView segment_live_bits();
 56   BitMapView segment_claim_bits();
 57 
 58   BitMap::idx_t segment_start(BitMap::idx_t segment) const;
 59   BitMap::idx_t segment_end(BitMap::idx_t segment) const;
 60 
 61   bool is_segment_live(BitMap::idx_t segment) const;
 62   bool set_segment_live(BitMap::idx_t segment);
 63 
 64   BitMap::idx_t first_live_segment() const;
 65   BitMap::idx_t next_live_segment(BitMap::idx_t segment) const;
 66   BitMap::idx_t index_to_segment(BitMap::idx_t index) const;
 67 

 70   void initialize_bitmap();
 71 
 72   void reset(ZGenerationId id);
 73   void reset_segment(BitMap::idx_t segment);
 74 
 75   size_t do_object(ObjectClosure* cl, zaddress addr) const;
 76 
 77   template <typename Function>
 78   void iterate_segment(BitMap::idx_t segment, Function function);
 79 
 80 public:
 81   ZLiveMap(uint32_t object_max_count);
 82   ZLiveMap(const ZLiveMap& other) = delete;
 83 
 84   void reset();
 85 
 86   bool is_marked(ZGenerationId id) const;
 87 
 88   uint32_t live_objects() const;
 89   size_t live_bytes() const;

 90 
 91   bool get(ZGenerationId id, BitMap::idx_t index) const;
 92   bool set(ZGenerationId id, BitMap::idx_t index, bool finalizable, bool& inc_live);
 93 
 94   void inc_live(uint32_t objects, size_t bytes);

 95 
 96   template <typename Function>
 97   void iterate(ZGenerationId id, Function function);
 98 
 99   BitMap::idx_t find_base_bit(BitMap::idx_t index);
100   BitMap::idx_t find_base_bit_in_segment(BitMap::idx_t start, BitMap::idx_t index);
101 };
102 
103 #endif // SHARE_GC_Z_ZLIVEMAP_HPP

 28 #include "gc/z/zBitMap.hpp"
 29 #include "gc/z/zGenerationId.hpp"
 30 #include "memory/allocation.hpp"
 31 #include "runtime/atomic.hpp"
 32 
 33 class ObjectClosure;
 34 
 35 class ZLiveMap {
 36   friend class ZLiveMapTest;
 37 
 38 private:
 39   static const uint32_t NumSegments = 64;
 40   static const uint32_t BitsPerObject = 2;
 41 
 42   const uint32_t    _segment_size;
 43   const int         _segment_shift;
 44 
 45   Atomic<uint32_t>  _seqnum;
 46   Atomic<uint32_t>  _live_objects;
 47   Atomic<size_t>    _live_bytes;
 48   Atomic<uint32_t>  _will_expand_objects;
 49   BitMap::bm_word_t _segment_live_bits;
 50   BitMap::bm_word_t _segment_claim_bits;
 51   ZBitMap           _bitmap;
 52 
 53   const BitMapView segment_live_bits() const;
 54   const BitMapView segment_claim_bits() const;
 55 
 56   BitMapView segment_live_bits();
 57   BitMapView segment_claim_bits();
 58 
 59   BitMap::idx_t segment_start(BitMap::idx_t segment) const;
 60   BitMap::idx_t segment_end(BitMap::idx_t segment) const;
 61 
 62   bool is_segment_live(BitMap::idx_t segment) const;
 63   bool set_segment_live(BitMap::idx_t segment);
 64 
 65   BitMap::idx_t first_live_segment() const;
 66   BitMap::idx_t next_live_segment(BitMap::idx_t segment) const;
 67   BitMap::idx_t index_to_segment(BitMap::idx_t index) const;
 68 

 71   void initialize_bitmap();
 72 
 73   void reset(ZGenerationId id);
 74   void reset_segment(BitMap::idx_t segment);
 75 
 76   size_t do_object(ObjectClosure* cl, zaddress addr) const;
 77 
 78   template <typename Function>
 79   void iterate_segment(BitMap::idx_t segment, Function function);
 80 
 81 public:
 82   ZLiveMap(uint32_t object_max_count);
 83   ZLiveMap(const ZLiveMap& other) = delete;
 84 
 85   void reset();
 86 
 87   bool is_marked(ZGenerationId id) const;
 88 
 89   uint32_t live_objects() const;
 90   size_t live_bytes() const;
 91   uint32_t will_expand_objects() const;
 92 
 93   bool get(ZGenerationId id, BitMap::idx_t index) const;
 94   bool set(ZGenerationId id, BitMap::idx_t index, bool finalizable, bool& inc_live);
 95 
 96   void inc_live(uint32_t objects, size_t bytes);
 97   void inc_will_expand(uint32_t objects);
 98 
 99   template <typename Function>
100   void iterate(ZGenerationId id, Function function);
101 
102   BitMap::idx_t find_base_bit(BitMap::idx_t index);
103   BitMap::idx_t find_base_bit_in_segment(BitMap::idx_t start, BitMap::idx_t index);
104 };
105 
106 #endif // SHARE_GC_Z_ZLIVEMAP_HPP
< prev index next >