src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp

Print this page
rev 5891 : [mq]: hideDoCodeRoots


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);