src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp

changeset 7781
33e421924c67
parent 7686
fb69749583e8
child 7782
30e04eba9e29
equal deleted inserted replaced
7780:5788dbd1f2d6 7781:33e421924c67
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);

mercurial