src/share/vm/memory/metaspace.cpp

Print this page
rev 6149 : 8037952: Remove code duplication in Metaspace::deallocate
Reviewed-by: TBD1, TBD2

*** 3341,3367 **** size_t Metaspace::capacity_bytes_slow(MetadataType mdtype) const { return capacity_words_slow(mdtype) * BytesPerWord; } void Metaspace::deallocate(MetaWord* ptr, size_t word_size, bool is_class) { ! if (SafepointSynchronize::is_at_safepoint()) { ! assert(Thread::current()->is_VM_thread(), "should be the VM thread"); ! // Don't take Heap_lock ! MutexLockerEx ml(vsm()->lock(), Mutex::_no_safepoint_check_flag); ! if (word_size < TreeChunk<Metablock, FreeList<Metablock> >::min_size()) { ! // Dark matter. Too small for dictionary. ! #ifdef ASSERT ! Copy::fill_to_words((HeapWord*)ptr, word_size, 0xf5f5f5f5); ! #endif ! return; ! } ! if (is_class && using_class_space()) { ! class_vsm()->deallocate(ptr, word_size); ! } else { ! vsm()->deallocate(ptr, word_size); ! } ! } else { MutexLockerEx ml(vsm()->lock(), Mutex::_no_safepoint_check_flag); if (word_size < TreeChunk<Metablock, FreeList<Metablock> >::min_size()) { // Dark matter. Too small for dictionary. #ifdef ASSERT --- 3341,3353 ---- size_t Metaspace::capacity_bytes_slow(MetadataType mdtype) const { return capacity_words_slow(mdtype) * BytesPerWord; } void Metaspace::deallocate(MetaWord* ptr, size_t word_size, bool is_class) { ! assert(!SafepointSynchronize::is_at_safepoint() ! || Thread::current()->is_VM_thread(), "should be the VM thread"); ! MutexLockerEx ml(vsm()->lock(), Mutex::_no_safepoint_check_flag); if (word_size < TreeChunk<Metablock, FreeList<Metablock> >::min_size()) { // Dark matter. Too small for dictionary. #ifdef ASSERT
*** 3372,3382 **** if (is_class && using_class_space()) { class_vsm()->deallocate(ptr, word_size); } else { vsm()->deallocate(ptr, word_size); } - } } MetaWord* Metaspace::allocate(ClassLoaderData* loader_data, size_t word_size, bool read_only, MetaspaceObj::Type type, TRAPS) { --- 3358,3367 ----