1860 // compressed oops mode.
1861
1862 ReservedSpace heap_rs = Universe::reserve_heap(max_byte_size,
1863 heap_alignment);
1864
1865 initialize_reserved_region((HeapWord*)heap_rs.base(), (HeapWord*)(heap_rs.base() + heap_rs.size()));
1866
1867 // Create the barrier set for the entire reserved region.
1868 G1SATBCardTableLoggingModRefBS* bs
1869 = new G1SATBCardTableLoggingModRefBS(reserved_region());
1870 bs->initialize();
1871 assert(bs->is_a(BarrierSet::G1SATBCTLogging), "sanity");
1872 set_barrier_set(bs);
1873
1874 // Also create a G1 rem set.
1875 _g1_rem_set = new G1RemSet(this, g1_barrier_set());
1876
1877 // Carve out the G1 part of the heap.
1878
1879 ReservedSpace g1_rs = heap_rs.first_part(max_byte_size);
1880 G1RegionToSpaceMapper* heap_storage =
1881 G1RegionToSpaceMapper::create_mapper(g1_rs,
1882 g1_rs.size(),
1883 UseLargePages ? os::large_page_size() : os::vm_page_size(),
1884 HeapRegion::GrainBytes,
1885 1,
1886 mtJavaHeap);
1887 heap_storage->set_mapping_changed_listener(&_listener);
1888
1889 // Create storage for the BOT, card table, card counts table (hot card cache) and the bitmaps.
1890 G1RegionToSpaceMapper* bot_storage =
1891 create_aux_memory_mapper("Block offset table",
1892 G1BlockOffsetSharedArray::compute_size(g1_rs.size() / HeapWordSize),
1893 G1BlockOffsetSharedArray::heap_map_factor());
1894
1895 ReservedSpace cardtable_rs(G1SATBCardTableLoggingModRefBS::compute_size(g1_rs.size() / HeapWordSize));
1896 G1RegionToSpaceMapper* cardtable_storage =
1897 create_aux_memory_mapper("Card table",
1898 G1SATBCardTableLoggingModRefBS::compute_size(g1_rs.size() / HeapWordSize),
1899 G1SATBCardTableLoggingModRefBS::heap_map_factor());
1900
1901 G1RegionToSpaceMapper* card_counts_storage =
1902 create_aux_memory_mapper("Card counts table",
1903 G1CardCounts::compute_size(g1_rs.size() / HeapWordSize),
1904 G1CardCounts::heap_map_factor());
1905
1906 size_t bitmap_size = CMBitMap::compute_size(g1_rs.size());
|
1860 // compressed oops mode.
1861
1862 ReservedSpace heap_rs = Universe::reserve_heap(max_byte_size,
1863 heap_alignment);
1864
1865 initialize_reserved_region((HeapWord*)heap_rs.base(), (HeapWord*)(heap_rs.base() + heap_rs.size()));
1866
1867 // Create the barrier set for the entire reserved region.
1868 G1SATBCardTableLoggingModRefBS* bs
1869 = new G1SATBCardTableLoggingModRefBS(reserved_region());
1870 bs->initialize();
1871 assert(bs->is_a(BarrierSet::G1SATBCTLogging), "sanity");
1872 set_barrier_set(bs);
1873
1874 // Also create a G1 rem set.
1875 _g1_rem_set = new G1RemSet(this, g1_barrier_set());
1876
1877 // Carve out the G1 part of the heap.
1878
1879 ReservedSpace g1_rs = heap_rs.first_part(max_byte_size);
1880 size_t page_size = UseLargePages ? os::large_page_size() : os::vm_page_size();
1881 G1RegionToSpaceMapper* heap_storage =
1882 G1RegionToSpaceMapper::create_mapper(g1_rs,
1883 g1_rs.size(),
1884 page_size,
1885 HeapRegion::GrainBytes,
1886 1,
1887 mtJavaHeap);
1888 os::trace_page_sizes("G1 Heap", collector_policy()->min_heap_byte_size(),
1889 max_byte_size, page_size,
1890 heap_rs.base(),
1891 heap_rs.size());
1892 heap_storage->set_mapping_changed_listener(&_listener);
1893
1894 // Create storage for the BOT, card table, card counts table (hot card cache) and the bitmaps.
1895 G1RegionToSpaceMapper* bot_storage =
1896 create_aux_memory_mapper("Block offset table",
1897 G1BlockOffsetSharedArray::compute_size(g1_rs.size() / HeapWordSize),
1898 G1BlockOffsetSharedArray::heap_map_factor());
1899
1900 ReservedSpace cardtable_rs(G1SATBCardTableLoggingModRefBS::compute_size(g1_rs.size() / HeapWordSize));
1901 G1RegionToSpaceMapper* cardtable_storage =
1902 create_aux_memory_mapper("Card table",
1903 G1SATBCardTableLoggingModRefBS::compute_size(g1_rs.size() / HeapWordSize),
1904 G1SATBCardTableLoggingModRefBS::heap_map_factor());
1905
1906 G1RegionToSpaceMapper* card_counts_storage =
1907 create_aux_memory_mapper("Card counts table",
1908 G1CardCounts::compute_size(g1_rs.size() / HeapWordSize),
1909 G1CardCounts::heap_map_factor());
1910
1911 size_t bitmap_size = CMBitMap::compute_size(g1_rs.size());
|