855 os::vm_page_size()) ||
856 Universe::narrow_oop_base() == NULL, "invalid value");
857 assert(Universe::narrow_oop_shift() == LogMinObjAlignmentInBytes ||
858 Universe::narrow_oop_shift() == 0, "invalid value");
859 #endif
860
861 // We will never reach the CATCH below since Exceptions::_throw will cause
862 // the VM to exit if an exception is thrown during initialization
863
864 if (UseTLAB) {
865 assert(Universe::heap()->supports_tlab_allocation(),
866 "Should support thread-local allocation buffers");
867 ThreadLocalAllocBuffer::startup_initialization();
868 }
869 return JNI_OK;
870 }
871
872
873 // Reserve the Java heap, which is now the same for all GCs.
874 ReservedSpace Universe::reserve_heap(size_t heap_size, size_t alignment) {
875 size_t total_reserved = align_size_up(heap_size, alignment);
876 assert(!UseCompressedOops || (total_reserved <= (OopEncodingHeapMax - os::vm_page_size())),
877 "heap size is too big for compressed oops");
878
879 bool use_large_pages = UseLargePages && is_size_aligned(alignment, os::large_page_size());
880 assert(!UseLargePages
881 || UseParallelOldGC
882 || use_large_pages, "Wrong alignment to use large pages");
883
884 char* addr = Universe::preferred_heap_base(total_reserved, alignment, Universe::UnscaledNarrowOop);
885
886 ReservedHeapSpace total_rs(total_reserved, alignment, use_large_pages, addr);
887
888 if (UseCompressedOops) {
889 if (addr != NULL && !total_rs.is_reserved()) {
890 // Failed to reserve at specified address - the requested memory
891 // region is taken already, for example, by 'java' launcher.
892 // Try again to reserver heap higher.
893 addr = Universe::preferred_heap_base(total_reserved, alignment, Universe::ZeroBasedNarrowOop);
894
|
855 os::vm_page_size()) ||
856 Universe::narrow_oop_base() == NULL, "invalid value");
857 assert(Universe::narrow_oop_shift() == LogMinObjAlignmentInBytes ||
858 Universe::narrow_oop_shift() == 0, "invalid value");
859 #endif
860
861 // We will never reach the CATCH below since Exceptions::_throw will cause
862 // the VM to exit if an exception is thrown during initialization
863
864 if (UseTLAB) {
865 assert(Universe::heap()->supports_tlab_allocation(),
866 "Should support thread-local allocation buffers");
867 ThreadLocalAllocBuffer::startup_initialization();
868 }
869 return JNI_OK;
870 }
871
872
873 // Reserve the Java heap, which is now the same for all GCs.
874 ReservedSpace Universe::reserve_heap(size_t heap_size, size_t alignment) {
875 assert(alignment <= Arguments::largest_heap_alignment(),
876 err_msg("actual alignment %zd must be within maximum heap alignment %zd",
877 alignment, Arguments::largest_heap_alignment()));
878 size_t total_reserved = align_size_up(heap_size, alignment);
879 assert(!UseCompressedOops || (total_reserved <= (OopEncodingHeapMax - os::vm_page_size())),
880 "heap size is too big for compressed oops");
881
882 bool use_large_pages = UseLargePages && is_size_aligned(alignment, os::large_page_size());
883 assert(!UseLargePages
884 || UseParallelOldGC
885 || use_large_pages, "Wrong alignment to use large pages");
886
887 char* addr = Universe::preferred_heap_base(total_reserved, alignment, Universe::UnscaledNarrowOop);
888
889 ReservedHeapSpace total_rs(total_reserved, alignment, use_large_pages, addr);
890
891 if (UseCompressedOops) {
892 if (addr != NULL && !total_rs.is_reserved()) {
893 // Failed to reserve at specified address - the requested memory
894 // region is taken already, for example, by 'java' launcher.
895 // Try again to reserver heap higher.
896 addr = Universe::preferred_heap_base(total_reserved, alignment, Universe::ZeroBasedNarrowOop);
897
|