1323 MarkFromRootsClosure(CMSCollector* collector, MemRegion span, |
1323 MarkFromRootsClosure(CMSCollector* collector, MemRegion span, |
1324 CMSBitMap* bitMap, |
1324 CMSBitMap* bitMap, |
1325 CMSMarkStack* markStack, |
1325 CMSMarkStack* markStack, |
1326 CMSMarkStack* revisitStack, |
1326 CMSMarkStack* revisitStack, |
1327 bool should_yield, bool verifying = false); |
1327 bool should_yield, bool verifying = false); |
1328 void do_bit(size_t offset); |
1328 bool do_bit(size_t offset); |
1329 void reset(HeapWord* addr); |
1329 void reset(HeapWord* addr); |
1330 inline void do_yield_check(); |
1330 inline void do_yield_check(); |
1331 |
1331 |
1332 private: |
1332 private: |
1333 void scanOopsInOop(HeapWord* ptr); |
1333 void scanOopsInOop(HeapWord* ptr); |
1359 CMSBitMap* bit_map, |
1359 CMSBitMap* bit_map, |
1360 OopTaskQueue* work_queue, |
1360 OopTaskQueue* work_queue, |
1361 CMSMarkStack* overflow_stack, |
1361 CMSMarkStack* overflow_stack, |
1362 CMSMarkStack* revisit_stack, |
1362 CMSMarkStack* revisit_stack, |
1363 bool should_yield); |
1363 bool should_yield); |
1364 void do_bit(size_t offset); |
1364 bool do_bit(size_t offset); |
1365 inline void do_yield_check(); |
1365 inline void do_yield_check(); |
1366 |
1366 |
1367 private: |
1367 private: |
1368 void scan_oops_in_oop(HeapWord* ptr); |
1368 void scan_oops_in_oop(HeapWord* ptr); |
1369 void do_yield_work(); |
1369 void do_yield_work(); |
1407 public: |
1407 public: |
1408 MarkFromRootsVerifyClosure(CMSCollector* collector, MemRegion span, |
1408 MarkFromRootsVerifyClosure(CMSCollector* collector, MemRegion span, |
1409 CMSBitMap* verification_bm, |
1409 CMSBitMap* verification_bm, |
1410 CMSBitMap* cms_bm, |
1410 CMSBitMap* cms_bm, |
1411 CMSMarkStack* mark_stack); |
1411 CMSMarkStack* mark_stack); |
1412 void do_bit(size_t offset); |
1412 bool do_bit(size_t offset); |
1413 void reset(HeapWord* addr); |
1413 void reset(HeapWord* addr); |
1414 }; |
1414 }; |
1415 |
1415 |
1416 |
1416 |
1417 // This closure is used to check that a certain set of bits is |
1417 // This closure is used to check that a certain set of bits is |
1418 // "empty" (i.e. the bit vector doesn't have any 1-bits). |
1418 // "empty" (i.e. the bit vector doesn't have any 1-bits). |
1419 class FalseBitMapClosure: public BitMapClosure { |
1419 class FalseBitMapClosure: public BitMapClosure { |
1420 public: |
1420 public: |
1421 void do_bit(size_t offset) { |
1421 bool do_bit(size_t offset) { |
1422 guarantee(false, "Should not have a 1 bit"); |
1422 guarantee(false, "Should not have a 1 bit"); |
|
1423 return true; |
1423 } |
1424 } |
1424 }; |
1425 }; |
1425 |
1426 |
1426 // This closure is used during the second checkpointing phase |
1427 // This closure is used during the second checkpointing phase |
1427 // to rescan the marked objects on the dirty cards in the mod |
1428 // to rescan the marked objects on the dirty cards in the mod |