index next >

src/share/vm/memory/freeBlockDictionary.cpp

Print this page
rev 7213 : [mq]: rev4


  26 #include "utilities/macros.hpp"
  27 #if INCLUDE_ALL_GCS
  28 #include "gc_implementation/concurrentMarkSweep/freeChunk.hpp"
  29 #endif // INCLUDE_ALL_GCS
  30 #include "memory/freeBlockDictionary.hpp"
  31 #include "memory/metachunk.hpp"
  32 #include "runtime/thread.inline.hpp"
  33 #include "utilities/macros.hpp"
  34 
  35 #ifndef PRODUCT
  36 template <class Chunk> Mutex* FreeBlockDictionary<Chunk>::par_lock() const {
  37   return _lock;
  38 }
  39 
  40 template <class Chunk> void FreeBlockDictionary<Chunk>::set_par_lock(Mutex* lock) {
  41   _lock = lock;
  42 }
  43 
  44 template <class Chunk> void FreeBlockDictionary<Chunk>::verify_par_locked() const {
  45 #ifdef ASSERT
  46   if (ParallelGCThreads > 0) {
  47     Thread* my_thread = Thread::current();
  48     if (my_thread->is_GC_task_thread()) {
  49       assert(par_lock() != NULL, "Should be using locking?");
  50       assert_lock_strong(par_lock());
  51     }
  52   }
  53 #endif // ASSERT
  54 }
  55 #endif
  56 
  57 template class FreeBlockDictionary<Metablock>;
  58 template class FreeBlockDictionary<Metachunk>;
  59 
  60 #if INCLUDE_ALL_GCS
  61 // Explicitly instantiate for FreeChunk
  62 template class FreeBlockDictionary<FreeChunk>;
  63 #endif // INCLUDE_ALL_GCS


  26 #include "utilities/macros.hpp"
  27 #if INCLUDE_ALL_GCS
  28 #include "gc_implementation/concurrentMarkSweep/freeChunk.hpp"
  29 #endif // INCLUDE_ALL_GCS
  30 #include "memory/freeBlockDictionary.hpp"
  31 #include "memory/metachunk.hpp"
  32 #include "runtime/thread.inline.hpp"
  33 #include "utilities/macros.hpp"
  34 
  35 #ifndef PRODUCT
  36 template <class Chunk> Mutex* FreeBlockDictionary<Chunk>::par_lock() const {
  37   return _lock;
  38 }
  39 
  40 template <class Chunk> void FreeBlockDictionary<Chunk>::set_par_lock(Mutex* lock) {
  41   _lock = lock;
  42 }
  43 
  44 template <class Chunk> void FreeBlockDictionary<Chunk>::verify_par_locked() const {
  45 #ifdef ASSERT

  46   Thread* my_thread = Thread::current();
  47   if (my_thread->is_GC_task_thread()) {
  48     assert(par_lock() != NULL, "Should be using locking?");
  49     assert_lock_strong(par_lock());

  50   }
  51 #endif // ASSERT
  52 }
  53 #endif
  54 
  55 template class FreeBlockDictionary<Metablock>;
  56 template class FreeBlockDictionary<Metachunk>;
  57 
  58 #if INCLUDE_ALL_GCS
  59 // Explicitly instantiate for FreeChunk
  60 template class FreeBlockDictionary<FreeChunk>;
  61 #endif // INCLUDE_ALL_GCS
index next >