63 // The per-region liveness bitmap. |
63 // The per-region liveness bitmap. |
64 bm_word_t* _live_regions; |
64 bm_word_t* _live_regions; |
65 size_t _live_regions_size_in_bits; |
65 size_t _live_regions_size_in_bits; |
66 // The bits in this bitmap contain for every card whether it contains |
66 // The bits in this bitmap contain for every card whether it contains |
67 // at least part of at least one live object. |
67 // at least part of at least one live object. |
68 BitMap live_cards_bm() const { return BitMap(_live_cards, _live_cards_size_in_bits); } |
68 BitMapView live_cards_bm() const { return BitMapView(_live_cards, _live_cards_size_in_bits); } |
69 // The bits in this bitmap indicate that a given region contains some live objects. |
69 // The bits in this bitmap indicate that a given region contains some live objects. |
70 BitMap live_regions_bm() const { return BitMap(_live_regions, _live_regions_size_in_bits); } |
70 BitMapView live_regions_bm() const { return BitMapView(_live_regions, _live_regions_size_in_bits); } |
71 |
71 |
72 // Allocate a "large" bitmap from virtual memory with the given size in bits. |
72 // Allocate a "large" bitmap from virtual memory with the given size in bits. |
73 bm_word_t* allocate_large_bitmap(size_t size_in_bits); |
73 bm_word_t* allocate_large_bitmap(size_t size_in_bits); |
74 void free_large_bitmap(bm_word_t* map, size_t size_in_bits); |
74 void free_large_bitmap(bm_word_t* map, size_t size_in_bits); |
75 |
75 |
76 inline BitMap live_card_bitmap(uint region); |
76 inline BitMapView live_card_bitmap(uint region); |
77 |
77 |
78 inline bool is_card_live_at(BitMap::idx_t idx) const; |
78 inline bool is_card_live_at(BitMap::idx_t idx) const; |
79 |
79 |
80 size_t live_region_bitmap_size_in_bits() const; |
80 size_t live_region_bitmap_size_in_bits() const; |
81 size_t live_card_bitmap_size_in_bits() const; |
81 size_t live_card_bitmap_size_in_bits() const; |