< prev index next >

src/share/vm/gc/shared/blockOffsetTable.inline.hpp

Print this page




  32 //////////////////////////////////////////////////////////////////////////
  33 // BlockOffsetTable inlines
  34 //////////////////////////////////////////////////////////////////////////
  35 inline HeapWord* BlockOffsetTable::block_start(const void* addr) const {
  36   if (addr >= _bottom && addr < _end) {
  37     return block_start_unsafe(addr);
  38   } else {
  39     return NULL;
  40   }
  41 }
  42 
  43 //////////////////////////////////////////////////////////////////////////
  44 // BlockOffsetSharedArray inlines
  45 //////////////////////////////////////////////////////////////////////////
  46 inline size_t BlockOffsetSharedArray::index_for(const void* p) const {
  47   char* pc = (char*)p;
  48   assert(pc >= (char*)_reserved.start() &&
  49          pc <  (char*)_reserved.end(),
  50          "p not in range.");
  51   size_t delta = pointer_delta(pc, _reserved.start(), sizeof(char));
  52   size_t result = delta >> LogN;
  53   assert(result < _vs.committed_size(), "bad index from address");
  54   return result;
  55 }
  56 
  57 inline HeapWord* BlockOffsetSharedArray::address_for_index(size_t index) const {
  58   assert(index < _vs.committed_size(), "bad index");
  59   HeapWord* result = _reserved.start() + (index << LogN_words);
  60   assert(result >= _reserved.start() && result < _reserved.end(),
  61          "bad address from index");
  62   return result;
  63 }
  64 
  65 inline void BlockOffsetSharedArray::check_reducing_assertion(bool reducing) {
  66     assert(reducing || !SafepointSynchronize::is_at_safepoint() || init_to_zero() ||
  67            Thread::current()->is_VM_thread() ||
  68            Thread::current()->is_ConcurrentGC_thread() ||
  69            ((!Thread::current()->is_ConcurrentGC_thread()) &&
  70             ParGCRareEvent_lock->owned_by_self()), "Crack");
  71 }
  72 
  73 //////////////////////////////////////////////////////////////////////////
  74 // BlockOffsetArrayNonContigSpace inlines
  75 //////////////////////////////////////////////////////////////////////////
  76 inline void BlockOffsetArrayNonContigSpace::freed(HeapWord* blk,
  77                                                   size_t size) {
  78   freed(blk, blk + size);
  79 }


  32 //////////////////////////////////////////////////////////////////////////
  33 // BlockOffsetTable inlines
  34 //////////////////////////////////////////////////////////////////////////
  35 inline HeapWord* BlockOffsetTable::block_start(const void* addr) const {
  36   if (addr >= _bottom && addr < _end) {
  37     return block_start_unsafe(addr);
  38   } else {
  39     return NULL;
  40   }
  41 }
  42 
  43 //////////////////////////////////////////////////////////////////////////
  44 // BlockOffsetSharedArray inlines
  45 //////////////////////////////////////////////////////////////////////////
  46 inline size_t BlockOffsetSharedArray::index_for(const void* p) const {
  47   char* pc = (char*)p;
  48   assert(pc >= (char*)_reserved.start() &&
  49          pc <  (char*)_reserved.end(),
  50          "p not in range.");
  51   size_t delta = pointer_delta(pc, _reserved.start(), sizeof(char));
  52   size_t result = delta >> BOTConstants::LogN;
  53   assert(result < _vs.committed_size(), "bad index from address");
  54   return result;
  55 }
  56 
  57 inline HeapWord* BlockOffsetSharedArray::address_for_index(size_t index) const {
  58   assert(index < _vs.committed_size(), "bad index");
  59   HeapWord* result = _reserved.start() + (index << BOTConstants::LogN_words);
  60   assert(result >= _reserved.start() && result < _reserved.end(),
  61          "bad address from index");
  62   return result;
  63 }
  64 
  65 inline void BlockOffsetSharedArray::check_reducing_assertion(bool reducing) {
  66     assert(reducing || !SafepointSynchronize::is_at_safepoint() || init_to_zero() ||
  67            Thread::current()->is_VM_thread() ||
  68            Thread::current()->is_ConcurrentGC_thread() ||
  69            ((!Thread::current()->is_ConcurrentGC_thread()) &&
  70             ParGCRareEvent_lock->owned_by_self()), "Crack");
  71 }
  72 
  73 //////////////////////////////////////////////////////////////////////////
  74 // BlockOffsetArrayNonContigSpace inlines
  75 //////////////////////////////////////////////////////////////////////////
  76 inline void BlockOffsetArrayNonContigSpace::freed(HeapWord* blk,
  77                                                   size_t size) {
  78   freed(blk, blk + size);
  79 }
< prev index next >