3811 { // No committed memory in VSN
3812 ChunkManager cm(SpecializedChunk, SmallChunk, MediumChunk);
3813 VirtualSpaceNode vsn(vsn_test_size_bytes);
3814 vsn.initialize();
3815 vsn.retire(&cm);
3816 assert(cm.sum_free_chunks_count() == 0, "did not commit any memory in the VSN");
3817 }
3818
3819 { // All of VSN is committed, half is used by chunks
3820 ChunkManager cm(SpecializedChunk, SmallChunk, MediumChunk);
3821 VirtualSpaceNode vsn(vsn_test_size_bytes);
3822 vsn.initialize();
3823 vsn.expand_by(vsn_test_size_words, vsn_test_size_words);
3824 vsn.get_chunk_vs(MediumChunk);
3825 vsn.get_chunk_vs(MediumChunk);
3826 vsn.retire(&cm);
3827 assert(cm.sum_free_chunks_count() == 2, "should have been memory left for 2 medium chunks");
3828 assert(cm.sum_free_chunks() == 2*MediumChunk, "sizes should add up");
3829 }
3830
3831 { // 4 pages of VSN is committed, some is used by chunks
3832 ChunkManager cm(SpecializedChunk, SmallChunk, MediumChunk);
3833 VirtualSpaceNode vsn(vsn_test_size_bytes);
3834 const size_t page_chunks = 4 * (size_t)os::vm_page_size() / BytesPerWord;
3835 assert(page_chunks < MediumChunk, "Test expects medium chunks to be at least 4*page_size");
3836 vsn.initialize();
3837 vsn.expand_by(page_chunks, page_chunks);
3838 vsn.get_chunk_vs(SmallChunk);
3839 vsn.get_chunk_vs(SpecializedChunk);
3840 vsn.retire(&cm);
3841
3842 // committed - used = words left to retire
3843 const size_t words_left = page_chunks - SmallChunk - SpecializedChunk;
3844
3845 size_t num_medium_chunks, num_small_chunks, num_spec_chunks;
3846 chunk_up(words_left, num_medium_chunks, num_small_chunks, num_spec_chunks);
3847
3848 assert(num_medium_chunks == 0, "should not get any medium chunks");
3849 assert(cm.sum_free_chunks_count() == (num_small_chunks + num_spec_chunks), "should be space for 3 chunks");
3850 assert(cm.sum_free_chunks() == words_left, "sizes should add up");
3851 }
3852
3853 { // Half of VSN is committed, a humongous chunk is used
3854 ChunkManager cm(SpecializedChunk, SmallChunk, MediumChunk);
3855 VirtualSpaceNode vsn(vsn_test_size_bytes);
|
3811 { // No committed memory in VSN
3812 ChunkManager cm(SpecializedChunk, SmallChunk, MediumChunk);
3813 VirtualSpaceNode vsn(vsn_test_size_bytes);
3814 vsn.initialize();
3815 vsn.retire(&cm);
3816 assert(cm.sum_free_chunks_count() == 0, "did not commit any memory in the VSN");
3817 }
3818
3819 { // All of VSN is committed, half is used by chunks
3820 ChunkManager cm(SpecializedChunk, SmallChunk, MediumChunk);
3821 VirtualSpaceNode vsn(vsn_test_size_bytes);
3822 vsn.initialize();
3823 vsn.expand_by(vsn_test_size_words, vsn_test_size_words);
3824 vsn.get_chunk_vs(MediumChunk);
3825 vsn.get_chunk_vs(MediumChunk);
3826 vsn.retire(&cm);
3827 assert(cm.sum_free_chunks_count() == 2, "should have been memory left for 2 medium chunks");
3828 assert(cm.sum_free_chunks() == 2*MediumChunk, "sizes should add up");
3829 }
3830
3831 const size_t page_chunks = 4 * (size_t)os::vm_page_size() / BytesPerWord;
3832 // This doesn't work for systems with vm_page_size >= 16K.
3833 if (page_chunks < MediumChunk) {
3834 // 4 pages of VSN is committed, some is used by chunks
3835 ChunkManager cm(SpecializedChunk, SmallChunk, MediumChunk);
3836 VirtualSpaceNode vsn(vsn_test_size_bytes);
3837
3838 vsn.initialize();
3839 vsn.expand_by(page_chunks, page_chunks);
3840 vsn.get_chunk_vs(SmallChunk);
3841 vsn.get_chunk_vs(SpecializedChunk);
3842 vsn.retire(&cm);
3843
3844 // committed - used = words left to retire
3845 const size_t words_left = page_chunks - SmallChunk - SpecializedChunk;
3846
3847 size_t num_medium_chunks, num_small_chunks, num_spec_chunks;
3848 chunk_up(words_left, num_medium_chunks, num_small_chunks, num_spec_chunks);
3849
3850 assert(num_medium_chunks == 0, "should not get any medium chunks");
3851 assert(cm.sum_free_chunks_count() == (num_small_chunks + num_spec_chunks), "should be space for 3 chunks");
3852 assert(cm.sum_free_chunks() == words_left, "sizes should add up");
3853 }
3854
3855 { // Half of VSN is committed, a humongous chunk is used
3856 ChunkManager cm(SpecializedChunk, SmallChunk, MediumChunk);
3857 VirtualSpaceNode vsn(vsn_test_size_bytes);
|