30 #include "utilities/bitMap.inline.hpp"
31
32 class JfrVirtualMemory;
33 class MemRegion;
34
35 class BitSet : public CHeapObj<mtTracing> {
36 private:
37 JfrVirtualMemory* _vmm;
38 const HeapWord* const _region_start;
39 BitMap _bits;
40 const size_t _region_size;
41
42 public:
43 BitSet(const MemRegion& covered_region);
44 ~BitSet();
45
46 bool initialize();
47
48 BitMap::idx_t mark_obj(const HeapWord* addr) {
49 const BitMap::idx_t bit = addr_to_bit(addr);
50 _bits.par_set_bit(bit);
51 return bit;
52 }
53
54 BitMap::idx_t mark_obj(oop obj) {
55 return mark_obj((HeapWord*)obj);
56 }
57
58 bool is_marked(const HeapWord* addr) const {
59 return is_marked(addr_to_bit(addr));
60 }
61
62 bool is_marked(oop obj) const {
63 return is_marked((HeapWord*)obj);
64 }
65
66 BitMap::idx_t size() const {
67 return _bits.size();
68 }
69
70 BitMap::idx_t addr_to_bit(const HeapWord* addr) const {
|
30 #include "utilities/bitMap.inline.hpp"
31
32 class JfrVirtualMemory;
33 class MemRegion;
34
35 class BitSet : public CHeapObj<mtTracing> {
36 private:
37 JfrVirtualMemory* _vmm;
38 const HeapWord* const _region_start;
39 BitMap _bits;
40 const size_t _region_size;
41
42 public:
43 BitSet(const MemRegion& covered_region);
44 ~BitSet();
45
46 bool initialize();
47
48 BitMap::idx_t mark_obj(const HeapWord* addr) {
49 const BitMap::idx_t bit = addr_to_bit(addr);
50 _bits.set_bit(bit);
51 return bit;
52 }
53
54 BitMap::idx_t mark_obj(oop obj) {
55 return mark_obj((HeapWord*)obj);
56 }
57
58 bool is_marked(const HeapWord* addr) const {
59 return is_marked(addr_to_bit(addr));
60 }
61
62 bool is_marked(oop obj) const {
63 return is_marked((HeapWord*)obj);
64 }
65
66 BitMap::idx_t size() const {
67 return _bits.size();
68 }
69
70 BitMap::idx_t addr_to_bit(const HeapWord* addr) const {
|