< prev index next >

src/hotspot/share/memory/metaspace/metaspaceCommon.hpp

Print this page
rev 50187 : imported patch metaspace-split

*** 23,39 **** */ #ifndef SHARE_MEMORY_METASPACE_METASPACECOMMON_HPP_ #define SHARE_MEMORY_METASPACE_METASPACECOMMON_HPP_ #include "utilities/globalDefinitions.hpp" - class outputStream; namespace metaspace { ! namespace internals { // Print a size, in words, scaled. void print_scaled_words(outputStream* st, size_t word_size, size_t scale = 0, int width = -1); // Convenience helper: prints a size value and a percentage. --- 23,47 ---- */ #ifndef SHARE_MEMORY_METASPACE_METASPACECOMMON_HPP_ #define SHARE_MEMORY_METASPACE_METASPACECOMMON_HPP_ + #include "utilities/debug.hpp" #include "utilities/globalDefinitions.hpp" class outputStream; namespace metaspace { ! ! enum ChunkSizes { // in words. ! ClassSpecializedChunk = 128, ! SpecializedChunk = 128, ! ClassSmallChunk = 256, ! SmallChunk = 512, ! ClassMediumChunk = 4 * K, ! MediumChunk = 8 * K ! }; // Print a size, in words, scaled. void print_scaled_words(outputStream* st, size_t word_size, size_t scale = 0, int width = -1); // Convenience helper: prints a size value and a percentage.
*** 48,56 **** // Prints a percentage value. Values smaller than 1% but not 0 are displayed as "<1%", values // larger than 99% but not 100% are displayed as ">100%". void print_percentage(outputStream* st, size_t total, size_t part); ! } // namespace internals } // namespace metaspace #endif /* SHARE_MEMORY_METASPACE_METASPACESTATISTICS_HPP_ */ --- 56,127 ---- // Prints a percentage value. Values smaller than 1% but not 0 are displayed as "<1%", values // larger than 99% but not 100% are displayed as ">100%". void print_percentage(outputStream* st, size_t total, size_t part); ! ! #define assert_is_aligned(value, alignment) \ ! assert(is_aligned((value), (alignment)), \ ! SIZE_FORMAT_HEX " is not aligned to " \ ! SIZE_FORMAT, (size_t)(uintptr_t)value, (alignment)) ! ! // Internal statistics. ! #ifdef ASSERT ! struct internal_statistics_t { ! // Number of allocations. ! uintx num_allocs; ! // Number of times a ClassLoaderMetaspace was born... ! uintx num_metaspace_births; ! // ... and died. ! uintx num_metaspace_deaths; ! // Number of times VirtualSpaceListNodes were created... ! uintx num_vsnodes_created; ! // ... and purged. ! uintx num_vsnodes_purged; ! // Number of times we expanded the committed section of the space. ! uintx num_committed_space_expanded; ! // Number of deallocations ! uintx num_deallocs; ! // Number of deallocations triggered from outside ("real" deallocations). ! uintx num_external_deallocs; ! // Number of times an allocation was satisfied from deallocated blocks. ! uintx num_allocs_from_deallocated_blocks; ! }; ! extern internal_statistics_t g_internal_statistics; ! #endif ! ! // ChunkIndex defines the type of chunk. ! // Chunk types differ by size: specialized < small < medium, chunks ! // larger than medium are humongous chunks of varying size. ! enum ChunkIndex { ! ZeroIndex = 0, ! SpecializedIndex = ZeroIndex, ! SmallIndex = SpecializedIndex + 1, ! MediumIndex = SmallIndex + 1, ! HumongousIndex = MediumIndex + 1, ! NumberOfFreeLists = 3, ! NumberOfInUseLists = 4 ! }; ! ! // Utility functions. ! size_t get_size_for_nonhumongous_chunktype(ChunkIndex chunk_type, bool is_class); ! ChunkIndex get_chunk_type_by_size(size_t size, bool is_class); ! ! ChunkIndex next_chunk_index(ChunkIndex i); ! ChunkIndex prev_chunk_index(ChunkIndex i); ! // Returns a descriptive name for a chunk type. ! const char* chunk_size_name(ChunkIndex index); ! ! // Verify chunk type. ! inline bool is_valid_chunktype(ChunkIndex index) { ! return index == SpecializedIndex || index == SmallIndex || ! index == MediumIndex || index == HumongousIndex; ! } ! ! inline bool is_valid_nonhumongous_chunktype(ChunkIndex index) { ! return is_valid_chunktype(index) && index != HumongousIndex; ! } ! } // namespace metaspace #endif /* SHARE_MEMORY_METASPACE_METASPACESTATISTICS_HPP_ */ +
< prev index next >