1902 NOT_PRODUCT(reset_evacuation_should_fail();) |
1902 NOT_PRODUCT(reset_evacuation_should_fail();) |
1903 |
1903 |
1904 guarantee(_task_queues != NULL, "task_queues allocation failure."); |
1904 guarantee(_task_queues != NULL, "task_queues allocation failure."); |
1905 } |
1905 } |
1906 |
1906 |
|
1907 G1RegionToSpaceMapper* G1CollectedHeap::create_aux_memory_mapper(const char* description, |
|
1908 size_t size, |
|
1909 size_t translation_factor) { |
|
1910 // Allocate a new reserved space, preferring to use large pages. |
|
1911 ReservedSpace rs(size, true); |
|
1912 G1RegionToSpaceMapper* result = |
|
1913 G1RegionToSpaceMapper::create_mapper(rs, |
|
1914 size, |
|
1915 rs.alignment(), |
|
1916 HeapRegion::GrainBytes, |
|
1917 translation_factor, |
|
1918 mtGC); |
|
1919 if (TracePageSizes) { |
|
1920 gclog_or_tty->print_cr("G1 '%s': pg_sz=" SIZE_FORMAT " base=" PTR_FORMAT " size=" SIZE_FORMAT " alignment=" SIZE_FORMAT " reqsize=" SIZE_FORMAT, |
|
1921 description, rs.alignment(), p2i(rs.base()), rs.size(), rs.alignment(), size); |
|
1922 } |
|
1923 return result; |
|
1924 } |
|
1925 |
1907 jint G1CollectedHeap::initialize() { |
1926 jint G1CollectedHeap::initialize() { |
1908 CollectedHeap::pre_initialize(); |
1927 CollectedHeap::pre_initialize(); |
1909 os::enable_vtime(); |
1928 os::enable_vtime(); |
1910 |
1929 |
1911 G1Log::init(); |
1930 G1Log::init(); |
1975 // Carve out the G1 part of the heap. |
1994 // Carve out the G1 part of the heap. |
1976 |
1995 |
1977 ReservedSpace g1_rs = heap_rs.first_part(max_byte_size); |
1996 ReservedSpace g1_rs = heap_rs.first_part(max_byte_size); |
1978 G1RegionToSpaceMapper* heap_storage = |
1997 G1RegionToSpaceMapper* heap_storage = |
1979 G1RegionToSpaceMapper::create_mapper(g1_rs, |
1998 G1RegionToSpaceMapper::create_mapper(g1_rs, |
|
1999 g1_rs.size(), |
1980 UseLargePages ? os::large_page_size() : os::vm_page_size(), |
2000 UseLargePages ? os::large_page_size() : os::vm_page_size(), |
1981 HeapRegion::GrainBytes, |
2001 HeapRegion::GrainBytes, |
1982 1, |
2002 1, |
1983 mtJavaHeap); |
2003 mtJavaHeap); |
1984 heap_storage->set_mapping_changed_listener(&_listener); |
2004 heap_storage->set_mapping_changed_listener(&_listener); |
1985 |
2005 |
1986 // Reserve space for the block offset table. We do not support automatic uncommit |
2006 // Create storage for the BOT, card table, card counts table (hot card cache) and the bitmaps. |
1987 // for the card table at this time. BOT only. |
|
1988 ReservedSpace bot_rs(G1BlockOffsetSharedArray::compute_size(g1_rs.size() / HeapWordSize)); |
|
1989 G1RegionToSpaceMapper* bot_storage = |
2007 G1RegionToSpaceMapper* bot_storage = |
1990 G1RegionToSpaceMapper::create_mapper(bot_rs, |
2008 create_aux_memory_mapper("Block offset table", |
1991 os::vm_page_size(), |
2009 G1BlockOffsetSharedArray::compute_size(g1_rs.size() / HeapWordSize), |
1992 HeapRegion::GrainBytes, |
2010 G1BlockOffsetSharedArray::N_bytes); |
1993 G1BlockOffsetSharedArray::N_bytes, |
|
1994 mtGC); |
|
1995 |
2011 |
1996 ReservedSpace cardtable_rs(G1SATBCardTableLoggingModRefBS::compute_size(g1_rs.size() / HeapWordSize)); |
2012 ReservedSpace cardtable_rs(G1SATBCardTableLoggingModRefBS::compute_size(g1_rs.size() / HeapWordSize)); |
1997 G1RegionToSpaceMapper* cardtable_storage = |
2013 G1RegionToSpaceMapper* cardtable_storage = |
1998 G1RegionToSpaceMapper::create_mapper(cardtable_rs, |
2014 create_aux_memory_mapper("Card table", |
1999 os::vm_page_size(), |
2015 G1SATBCardTableLoggingModRefBS::compute_size(g1_rs.size() / HeapWordSize), |
2000 HeapRegion::GrainBytes, |
2016 G1BlockOffsetSharedArray::N_bytes); |
2001 G1BlockOffsetSharedArray::N_bytes, |
2017 |
2002 mtGC); |
|
2003 |
|
2004 // Reserve space for the card counts table. |
|
2005 ReservedSpace card_counts_rs(G1BlockOffsetSharedArray::compute_size(g1_rs.size() / HeapWordSize)); |
|
2006 G1RegionToSpaceMapper* card_counts_storage = |
2018 G1RegionToSpaceMapper* card_counts_storage = |
2007 G1RegionToSpaceMapper::create_mapper(card_counts_rs, |
2019 create_aux_memory_mapper("Card counts table", |
2008 os::vm_page_size(), |
2020 G1BlockOffsetSharedArray::compute_size(g1_rs.size() / HeapWordSize), |
2009 HeapRegion::GrainBytes, |
2021 G1BlockOffsetSharedArray::N_bytes); |
2010 G1BlockOffsetSharedArray::N_bytes, |
2022 |
2011 mtGC); |
|
2012 |
|
2013 // Reserve space for prev and next bitmap. |
|
2014 size_t bitmap_size = CMBitMap::compute_size(g1_rs.size()); |
2023 size_t bitmap_size = CMBitMap::compute_size(g1_rs.size()); |
2015 |
|
2016 ReservedSpace prev_bitmap_rs(ReservedSpace::allocation_align_size_up(bitmap_size)); |
|
2017 G1RegionToSpaceMapper* prev_bitmap_storage = |
2024 G1RegionToSpaceMapper* prev_bitmap_storage = |
2018 G1RegionToSpaceMapper::create_mapper(prev_bitmap_rs, |
2025 create_aux_memory_mapper("Prev Bitmap", bitmap_size, CMBitMap::mark_distance()); |
2019 os::vm_page_size(), |
|
2020 HeapRegion::GrainBytes, |
|
2021 CMBitMap::mark_distance(), |
|
2022 mtGC); |
|
2023 |
|
2024 ReservedSpace next_bitmap_rs(ReservedSpace::allocation_align_size_up(bitmap_size)); |
|
2025 G1RegionToSpaceMapper* next_bitmap_storage = |
2026 G1RegionToSpaceMapper* next_bitmap_storage = |
2026 G1RegionToSpaceMapper::create_mapper(next_bitmap_rs, |
2027 create_aux_memory_mapper("Next Bitmap", bitmap_size, CMBitMap::mark_distance()); |
2027 os::vm_page_size(), |
|
2028 HeapRegion::GrainBytes, |
|
2029 CMBitMap::mark_distance(), |
|
2030 mtGC); |
|
2031 |
2028 |
2032 _hrm.initialize(heap_storage, prev_bitmap_storage, next_bitmap_storage, bot_storage, cardtable_storage, card_counts_storage); |
2029 _hrm.initialize(heap_storage, prev_bitmap_storage, next_bitmap_storage, bot_storage, cardtable_storage, card_counts_storage); |
2033 g1_barrier_set()->initialize(cardtable_storage); |
2030 g1_barrier_set()->initialize(cardtable_storage); |
2034 // Do later initialization work for concurrent refinement. |
2031 // Do later initialization work for concurrent refinement. |
2035 _cg1r->init(card_counts_storage); |
2032 _cg1r->init(card_counts_storage); |