61 class CMSConcMarkingTask;
62 class CMSGCAdaptivePolicyCounters;
63 class CMSTracer;
64 class ConcurrentGCTimer;
65 class ConcurrentMarkSweepGeneration;
66 class ConcurrentMarkSweepPolicy;
67 class ConcurrentMarkSweepThread;
68 class CompactibleFreeListSpace;
69 class FreeChunk;
70 class ParNewGeneration;
71 class PromotionInfo;
72 class ScanMarkedObjectsAgainCarefullyClosure;
73 class TenuredGeneration;
74 class SerialOldTracer;
75
76 // A generic CMS bit map. It's the basis for both the CMS marking bit map
77 // as well as for the mod union table (in each case only a subset of the
78 // methods are used). This is essentially a wrapper around the BitMap class,
79 // with one bit per (1<<_shifter) HeapWords. (i.e. for the marking bit map,
80 // we have _shifter == 0. and for the mod union table we have
81 // shifter == CardTableModRefBS::card_shift - LogHeapWordSize.)
82 // XXX 64-bit issues in BitMap?
83 class CMSBitMap VALUE_OBJ_CLASS_SPEC {
84 friend class VMStructs;
85
86 HeapWord* _bmStartWord; // base address of range covered by map
87 size_t _bmWordSize; // map size (in #HeapWords covered)
88 const int _shifter; // shifts to convert HeapWord to bit position
89 VirtualSpace _virtual_space; // underlying the bit map
90 BitMapView _bm; // the bit map itself
91 Mutex* const _lock; // mutex protecting _bm;
92
93 public:
94 // constructor
95 CMSBitMap(int shifter, int mutex_rank, const char* mutex_name);
96
97 // allocates the actual storage for the map
98 bool allocate(MemRegion mr);
99 // field getter
100 Mutex* lock() const { return _lock; }
101 // locking verifier convenience function
|
61 class CMSConcMarkingTask;
62 class CMSGCAdaptivePolicyCounters;
63 class CMSTracer;
64 class ConcurrentGCTimer;
65 class ConcurrentMarkSweepGeneration;
66 class ConcurrentMarkSweepPolicy;
67 class ConcurrentMarkSweepThread;
68 class CompactibleFreeListSpace;
69 class FreeChunk;
70 class ParNewGeneration;
71 class PromotionInfo;
72 class ScanMarkedObjectsAgainCarefullyClosure;
73 class TenuredGeneration;
74 class SerialOldTracer;
75
76 // A generic CMS bit map. It's the basis for both the CMS marking bit map
77 // as well as for the mod union table (in each case only a subset of the
78 // methods are used). This is essentially a wrapper around the BitMap class,
79 // with one bit per (1<<_shifter) HeapWords. (i.e. for the marking bit map,
80 // we have _shifter == 0. and for the mod union table we have
81 // shifter == CardTable::card_shift - LogHeapWordSize.)
82 // XXX 64-bit issues in BitMap?
83 class CMSBitMap VALUE_OBJ_CLASS_SPEC {
84 friend class VMStructs;
85
86 HeapWord* _bmStartWord; // base address of range covered by map
87 size_t _bmWordSize; // map size (in #HeapWords covered)
88 const int _shifter; // shifts to convert HeapWord to bit position
89 VirtualSpace _virtual_space; // underlying the bit map
90 BitMapView _bm; // the bit map itself
91 Mutex* const _lock; // mutex protecting _bm;
92
93 public:
94 // constructor
95 CMSBitMap(int shifter, int mutex_rank, const char* mutex_name);
96
97 // allocates the actual storage for the map
98 bool allocate(MemRegion mr);
99 // field getter
100 Mutex* lock() const { return _lock; }
101 // locking verifier convenience function
|