< prev index next >

src/hotspot/share/gc/parallel/parMarkBitMap.cpp

Print this page




  73     // Release memory reserved in the space.
  74     rs.release();
  75   }
  76   return false;
  77 }
  78 
  79 #ifdef ASSERT
  80 extern size_t mark_bitmap_count;
  81 extern size_t mark_bitmap_size;
  82 #endif  // #ifdef ASSERT
  83 
  84 bool
  85 ParMarkBitMap::mark_obj(HeapWord* addr, size_t size)
  86 {
  87   const idx_t beg_bit = addr_to_bit(addr);
  88   if (_beg_bits.par_set_bit(beg_bit)) {
  89     const idx_t end_bit = addr_to_bit(addr + size - 1);
  90     bool end_bit_ok = _end_bits.par_set_bit(end_bit);
  91     assert(end_bit_ok, "concurrency problem");
  92     DEBUG_ONLY(Atomic::inc(&mark_bitmap_count));
  93     DEBUG_ONLY(Atomic::add(size, &mark_bitmap_size));
  94     return true;
  95   }
  96   return false;
  97 }
  98 
  99 inline bool
 100 ParMarkBitMap::is_live_words_in_range_in_cache(ParCompactionManager* cm, HeapWord* beg_addr) const {
 101   return cm->last_query_begin() == beg_addr;
 102 }
 103 
 104 inline void
 105 ParMarkBitMap::update_live_words_in_range_cache(ParCompactionManager* cm, HeapWord* beg_addr, oop end_obj, size_t result) const {
 106   cm->set_last_query_begin(beg_addr);
 107   cm->set_last_query_object(end_obj);
 108   cm->set_last_query_return(result);
 109 }
 110 
 111 size_t
 112 ParMarkBitMap::live_words_in_range_helper(HeapWord* beg_addr, oop end_obj) const
 113 {




  73     // Release memory reserved in the space.
  74     rs.release();
  75   }
  76   return false;
  77 }
  78 
  79 #ifdef ASSERT
  80 extern size_t mark_bitmap_count;
  81 extern size_t mark_bitmap_size;
  82 #endif  // #ifdef ASSERT
  83 
  84 bool
  85 ParMarkBitMap::mark_obj(HeapWord* addr, size_t size)
  86 {
  87   const idx_t beg_bit = addr_to_bit(addr);
  88   if (_beg_bits.par_set_bit(beg_bit)) {
  89     const idx_t end_bit = addr_to_bit(addr + size - 1);
  90     bool end_bit_ok = _end_bits.par_set_bit(end_bit);
  91     assert(end_bit_ok, "concurrency problem");
  92     DEBUG_ONLY(Atomic::inc(&mark_bitmap_count));
  93     DEBUG_ONLY(Atomic::add(&mark_bitmap_size, size));
  94     return true;
  95   }
  96   return false;
  97 }
  98 
  99 inline bool
 100 ParMarkBitMap::is_live_words_in_range_in_cache(ParCompactionManager* cm, HeapWord* beg_addr) const {
 101   return cm->last_query_begin() == beg_addr;
 102 }
 103 
 104 inline void
 105 ParMarkBitMap::update_live_words_in_range_cache(ParCompactionManager* cm, HeapWord* beg_addr, oop end_obj, size_t result) const {
 106   cm->set_last_query_begin(beg_addr);
 107   cm->set_last_query_object(end_obj);
 108   cm->set_last_query_return(result);
 109 }
 110 
 111 size_t
 112 ParMarkBitMap::live_words_in_range_helper(HeapWord* beg_addr, oop end_obj) const
 113 {


< prev index next >