774 size_t byte_size = word_size * BytesPerWord;
775
776 size_t raw_bytes_size = MAX2(byte_size, sizeof(Metablock));
777 raw_bytes_size = align_size_up(raw_bytes_size, Metachunk::object_alignment());
778
779 size_t raw_word_size = raw_bytes_size / BytesPerWord;
780 assert(raw_word_size * BytesPerWord == raw_bytes_size, "Size problem");
781
782 return raw_word_size;
783 }
784 };
785
786 uint const SpaceManager::_small_chunk_limit = 4;
787
788 const char* SpaceManager::_expand_lock_name =
789 "SpaceManager chunk allocation lock";
790 const int SpaceManager::_expand_lock_rank = Monitor::leaf - 1;
791 Mutex* const SpaceManager::_expand_lock =
792 new Mutex(SpaceManager::_expand_lock_rank,
793 SpaceManager::_expand_lock_name,
794 Mutex::_allow_vm_block_flag);
795
796 void VirtualSpaceNode::inc_container_count() {
797 assert_lock_strong(SpaceManager::expand_lock());
798 _container_count++;
799 assert(_container_count == container_count_slow(),
800 err_msg("Inconsistency in container_count _container_count " SIZE_FORMAT
801 " container_count_slow() " SIZE_FORMAT,
802 _container_count, container_count_slow()));
803 }
804
805 void VirtualSpaceNode::dec_container_count() {
806 assert_lock_strong(SpaceManager::expand_lock());
807 _container_count--;
808 }
809
810 #ifdef ASSERT
811 void VirtualSpaceNode::verify_container_count() {
812 assert(_container_count == container_count_slow(),
813 err_msg("Inconsistency in container_count _container_count " SIZE_FORMAT
814 " container_count_slow() " SIZE_FORMAT, _container_count, container_count_slow()));
|
774 size_t byte_size = word_size * BytesPerWord;
775
776 size_t raw_bytes_size = MAX2(byte_size, sizeof(Metablock));
777 raw_bytes_size = align_size_up(raw_bytes_size, Metachunk::object_alignment());
778
779 size_t raw_word_size = raw_bytes_size / BytesPerWord;
780 assert(raw_word_size * BytesPerWord == raw_bytes_size, "Size problem");
781
782 return raw_word_size;
783 }
784 };
785
786 uint const SpaceManager::_small_chunk_limit = 4;
787
788 const char* SpaceManager::_expand_lock_name =
789 "SpaceManager chunk allocation lock";
790 const int SpaceManager::_expand_lock_rank = Monitor::leaf - 1;
791 Mutex* const SpaceManager::_expand_lock =
792 new Mutex(SpaceManager::_expand_lock_rank,
793 SpaceManager::_expand_lock_name,
794 Mutex::_allow_vm_block_flag,
795 Monitor::_safepoint_check_never);
796
797 void VirtualSpaceNode::inc_container_count() {
798 assert_lock_strong(SpaceManager::expand_lock());
799 _container_count++;
800 assert(_container_count == container_count_slow(),
801 err_msg("Inconsistency in container_count _container_count " SIZE_FORMAT
802 " container_count_slow() " SIZE_FORMAT,
803 _container_count, container_count_slow()));
804 }
805
806 void VirtualSpaceNode::dec_container_count() {
807 assert_lock_strong(SpaceManager::expand_lock());
808 _container_count--;
809 }
810
811 #ifdef ASSERT
812 void VirtualSpaceNode::verify_container_count() {
813 assert(_container_count == container_count_slow(),
814 err_msg("Inconsistency in container_count _container_count " SIZE_FORMAT
815 " container_count_slow() " SIZE_FORMAT, _container_count, container_count_slow()));
|