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

Print this page
rev 7084 : [mq]: demacro


 388   // iteration completed.
 389   HeapWord* object_iterate_careful_m(MemRegion mr,
 390                                      ObjectClosureCareful* cl);
 391 
 392   // Override: provides a DCTO_CL specific to this kind of space.
 393   DirtyCardToOopClosure* new_dcto_cl(ExtendedOopClosure* cl,
 394                                      CardTableModRefBS::PrecisionStyle precision,
 395                                      HeapWord* boundary);
 396 
 397   void blk_iterate(BlkClosure* cl);
 398   void blk_iterate_careful(BlkClosureCareful* cl);
 399   HeapWord* block_start_const(const void* p) const;
 400   HeapWord* block_start_careful(const void* p) const;
 401   size_t block_size(const HeapWord* p) const;
 402   size_t block_size_no_stall(HeapWord* p, const CMSCollector* c) const;
 403   bool block_is_obj(const HeapWord* p) const;
 404   bool obj_is_alive(const HeapWord* p) const;
 405   size_t block_size_nopar(const HeapWord* p) const;
 406   bool block_is_obj_nopar(const HeapWord* p) const;
 407 





















 408   // Iteration support for promotion
 409   void save_marks();
 410   bool no_allocs_since_save_marks();
 411 
 412   // Iteration support for sweeping
 413   void save_sweep_limit() {
 414     _sweep_limit = BlockOffsetArrayUseUnallocatedBlock ?
 415                    unallocated_block() : end();
 416     if (CMSTraceSweeper) {
 417       gclog_or_tty->print_cr(">>>>> Saving sweep limit " PTR_FORMAT
 418                              "  for space [" PTR_FORMAT "," PTR_FORMAT ") <<<<<<",
 419                              p2i(_sweep_limit), p2i(bottom()), p2i(end()));
 420     }
 421   }
 422   NOT_PRODUCT(
 423     void clear_sweep_limit() { _sweep_limit = NULL; }
 424   )
 425   HeapWord* sweep_limit() { return _sweep_limit; }
 426 
 427   // Apply "blk->do_oop" to the addresses of all reference fields in objects




 388   // iteration completed.
 389   HeapWord* object_iterate_careful_m(MemRegion mr,
 390                                      ObjectClosureCareful* cl);
 391 
 392   // Override: provides a DCTO_CL specific to this kind of space.
 393   DirtyCardToOopClosure* new_dcto_cl(ExtendedOopClosure* cl,
 394                                      CardTableModRefBS::PrecisionStyle precision,
 395                                      HeapWord* boundary);
 396 
 397   void blk_iterate(BlkClosure* cl);
 398   void blk_iterate_careful(BlkClosureCareful* cl);
 399   HeapWord* block_start_const(const void* p) const;
 400   HeapWord* block_start_careful(const void* p) const;
 401   size_t block_size(const HeapWord* p) const;
 402   size_t block_size_no_stall(HeapWord* p, const CMSCollector* c) const;
 403   bool block_is_obj(const HeapWord* p) const;
 404   bool obj_is_alive(const HeapWord* p) const;
 405   size_t block_size_nopar(const HeapWord* p) const;
 406   bool block_is_obj_nopar(const HeapWord* p) const;
 407 
 408   // Functions for scan_and_{forward,adjust_pointers,compact} support.
 409   inline HeapWord* scan_limit() const {
 410     return end();
 411   }
 412 
 413   inline bool scanned_block_is_obj(const HeapWord* addr) const {
 414     return CompactibleFreeListSpace::block_is_obj(addr); // Avoid virtual call
 415   }
 416 
 417   inline size_t scanned_block_size(const HeapWord* addr) const {
 418     return CompactibleFreeListSpace::block_size(addr); // Avoid virtual call
 419   }
 420 
 421   inline size_t adjust_obj_size(size_t size) const {
 422     return adjustObjectSize(size);
 423   }
 424 
 425   inline size_t obj_size(const HeapWord* addr) const {
 426     return adjustObjectSize(oop(addr)->size());
 427   }
 428 
 429   // Iteration support for promotion
 430   void save_marks();
 431   bool no_allocs_since_save_marks();
 432 
 433   // Iteration support for sweeping
 434   void save_sweep_limit() {
 435     _sweep_limit = BlockOffsetArrayUseUnallocatedBlock ?
 436                    unallocated_block() : end();
 437     if (CMSTraceSweeper) {
 438       gclog_or_tty->print_cr(">>>>> Saving sweep limit " PTR_FORMAT
 439                              "  for space [" PTR_FORMAT "," PTR_FORMAT ") <<<<<<",
 440                              p2i(_sweep_limit), p2i(bottom()), p2i(end()));
 441     }
 442   }
 443   NOT_PRODUCT(
 444     void clear_sweep_limit() { _sweep_limit = NULL; }
 445   )
 446   HeapWord* sweep_limit() { return _sweep_limit; }
 447 
 448   // Apply "blk->do_oop" to the addresses of all reference fields in objects