1366 public:
1367 ASConcurrentMarkSweepGeneration(ReservedSpace rs, size_t initial_byte_size,
1368 int level, CardTableRS* ct,
1369 bool use_adaptive_freelists,
1370 FreeBlockDictionary<FreeChunk>::DictionaryChoice
1371 dictionaryChoice) :
1372 ConcurrentMarkSweepGeneration(rs, initial_byte_size, level, ct,
1373 use_adaptive_freelists, dictionaryChoice) {}
1374
1375 virtual const char* short_name() const { return "ASCMS"; }
1376 virtual Generation::Name kind() { return Generation::ASConcurrentMarkSweep; }
1377
1378 virtual void update_counters();
1379 virtual void update_counters(size_t used);
1380 };
1381
1382 //
1383 // Closures of various sorts used by CMS to accomplish its work
1384 //
1385
1386 // This closure is used to check that a certain set of oops is empty.
1387 class FalseClosure: public OopClosure {
1388 public:
1389 void do_oop(oop* p) { guarantee(false, "Should be an empty set"); }
1390 void do_oop(narrowOop* p) { guarantee(false, "Should be an empty set"); }
1391 };
1392
1393 // This closure is used to do concurrent marking from the roots
1394 // following the first checkpoint.
1395 class MarkFromRootsClosure: public BitMapClosure {
1396 CMSCollector* _collector;
1397 MemRegion _span;
1398 CMSBitMap* _bitMap;
1399 CMSBitMap* _mut;
1400 CMSMarkStack* _markStack;
1401 bool _yield;
1402 int _skipBits;
1403 HeapWord* _finger;
1404 HeapWord* _threshold;
1405 DEBUG_ONLY(bool _verifying;)
1406
1407 public:
1408 MarkFromRootsClosure(CMSCollector* collector, MemRegion span,
1409 CMSBitMap* bitMap,
1410 CMSMarkStack* markStack,
1411 bool should_yield, bool verifying = false);
1412 bool do_bit(size_t offset);
|
1366 public:
1367 ASConcurrentMarkSweepGeneration(ReservedSpace rs, size_t initial_byte_size,
1368 int level, CardTableRS* ct,
1369 bool use_adaptive_freelists,
1370 FreeBlockDictionary<FreeChunk>::DictionaryChoice
1371 dictionaryChoice) :
1372 ConcurrentMarkSweepGeneration(rs, initial_byte_size, level, ct,
1373 use_adaptive_freelists, dictionaryChoice) {}
1374
1375 virtual const char* short_name() const { return "ASCMS"; }
1376 virtual Generation::Name kind() { return Generation::ASConcurrentMarkSweep; }
1377
1378 virtual void update_counters();
1379 virtual void update_counters(size_t used);
1380 };
1381
1382 //
1383 // Closures of various sorts used by CMS to accomplish its work
1384 //
1385
1386 // This closure is used to do concurrent marking from the roots
1387 // following the first checkpoint.
1388 class MarkFromRootsClosure: public BitMapClosure {
1389 CMSCollector* _collector;
1390 MemRegion _span;
1391 CMSBitMap* _bitMap;
1392 CMSBitMap* _mut;
1393 CMSMarkStack* _markStack;
1394 bool _yield;
1395 int _skipBits;
1396 HeapWord* _finger;
1397 HeapWord* _threshold;
1398 DEBUG_ONLY(bool _verifying;)
1399
1400 public:
1401 MarkFromRootsClosure(CMSCollector* collector, MemRegion span,
1402 CMSBitMap* bitMap,
1403 CMSMarkStack* markStack,
1404 bool should_yield, bool verifying = false);
1405 bool do_bit(size_t offset);
|