907 void Universe::print_compressed_oops_mode(outputStream* st) {
908 st->print("heap address: " PTR_FORMAT ", size: " SIZE_FORMAT " MB",
909 Universe::heap()->base(), Universe::heap()->reserved_region().byte_size()/M);
910
911 st->print(", Compressed Oops mode: %s", narrow_oop_mode_to_string(narrow_oop_mode()));
912
913 if (Universe::narrow_oop_base() != 0) {
914 st->print(":" PTR_FORMAT, Universe::narrow_oop_base());
915 }
916
917 if (Universe::narrow_oop_shift() != 0) {
918 st->print(", Oop shift amount: %d", Universe::narrow_oop_shift());
919 }
920
921 st->cr();
922 }
923
924 // Reserve the Java heap, which is now the same for all GCs.
925 ReservedSpace Universe::reserve_heap(size_t heap_size, size_t alignment) {
926 assert(alignment <= Arguments::conservative_max_heap_alignment(),
927 err_msg("actual alignment "SIZE_FORMAT" must be within maximum heap alignment "SIZE_FORMAT,
928 alignment, Arguments::conservative_max_heap_alignment()));
929 size_t total_reserved = align_size_up(heap_size, alignment);
930 assert(!UseCompressedOops || (total_reserved <= (OopEncodingHeapMax - os::vm_page_size())),
931 "heap size is too big for compressed oops");
932
933 bool use_large_pages = UseLargePages && is_size_aligned(alignment, os::large_page_size());
934 assert(!UseLargePages
935 || UseParallelGC
936 || use_large_pages, "Wrong alignment to use large pages");
937
938 char* addr = Universe::preferred_heap_base(total_reserved, alignment, Universe::UnscaledNarrowOop);
939
940 ReservedHeapSpace total_rs(total_reserved, alignment, use_large_pages, addr);
941
942 if (UseCompressedOops) {
943 if (addr != NULL && !total_rs.is_reserved()) {
944 // Failed to reserve at specified address - the requested memory
945 // region is taken already, for example, by 'java' launcher.
946 // Try again to reserver heap higher.
947 addr = Universe::preferred_heap_base(total_reserved, alignment, Universe::ZeroBasedNarrowOop);
|
907 void Universe::print_compressed_oops_mode(outputStream* st) {
908 st->print("heap address: " PTR_FORMAT ", size: " SIZE_FORMAT " MB",
909 Universe::heap()->base(), Universe::heap()->reserved_region().byte_size()/M);
910
911 st->print(", Compressed Oops mode: %s", narrow_oop_mode_to_string(narrow_oop_mode()));
912
913 if (Universe::narrow_oop_base() != 0) {
914 st->print(":" PTR_FORMAT, Universe::narrow_oop_base());
915 }
916
917 if (Universe::narrow_oop_shift() != 0) {
918 st->print(", Oop shift amount: %d", Universe::narrow_oop_shift());
919 }
920
921 st->cr();
922 }
923
924 // Reserve the Java heap, which is now the same for all GCs.
925 ReservedSpace Universe::reserve_heap(size_t heap_size, size_t alignment) {
926 assert(alignment <= Arguments::conservative_max_heap_alignment(),
927 err_msg("actual alignment " SIZE_FORMAT " must be within maximum heap alignment " SIZE_FORMAT,
928 alignment, Arguments::conservative_max_heap_alignment()));
929 size_t total_reserved = align_size_up(heap_size, alignment);
930 assert(!UseCompressedOops || (total_reserved <= (OopEncodingHeapMax - os::vm_page_size())),
931 "heap size is too big for compressed oops");
932
933 bool use_large_pages = UseLargePages && is_size_aligned(alignment, os::large_page_size());
934 assert(!UseLargePages
935 || UseParallelGC
936 || use_large_pages, "Wrong alignment to use large pages");
937
938 char* addr = Universe::preferred_heap_base(total_reserved, alignment, Universe::UnscaledNarrowOop);
939
940 ReservedHeapSpace total_rs(total_reserved, alignment, use_large_pages, addr);
941
942 if (UseCompressedOops) {
943 if (addr != NULL && !total_rs.is_reserved()) {
944 // Failed to reserve at specified address - the requested memory
945 // region is taken already, for example, by 'java' launcher.
946 // Try again to reserver heap higher.
947 addr = Universe::preferred_heap_base(total_reserved, alignment, Universe::ZeroBasedNarrowOop);
|