< prev index next >

src/share/vm/memory/metaspace.cpp

Print this page
rev 7563 : 8067941: [TESTBUG] Fix tests for OS with 64K page size.


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);


< prev index next >