820 ((uint64_t)Universe::heap()->base() + Universe::class_metaspace_size() > KlassEncodingMetaspaceMax))) { |
820 ((uint64_t)Universe::heap()->base() + Universe::class_metaspace_size() > KlassEncodingMetaspaceMax))) { |
821 // Can't reserve heap below 32Gb. |
821 // Can't reserve heap below 32Gb. |
822 // keep the Universe::narrow_oop_base() set in Universe::reserve_heap() |
822 // keep the Universe::narrow_oop_base() set in Universe::reserve_heap() |
823 Universe::set_narrow_oop_shift(LogMinObjAlignmentInBytes); |
823 Universe::set_narrow_oop_shift(LogMinObjAlignmentInBytes); |
824 if (verbose) { |
824 if (verbose) { |
825 tty->print(", Compressed Oops with base: "PTR_FORMAT, Universe::narrow_oop_base()); |
825 tty->print(", %s: "PTR_FORMAT, |
|
826 narrow_oop_mode_to_string(HeapBasedNarrowOop), |
|
827 Universe::narrow_oop_base()); |
826 } |
828 } |
827 } else { |
829 } else { |
828 Universe::set_narrow_oop_base(0); |
830 Universe::set_narrow_oop_base(0); |
829 if (verbose) { |
831 if (verbose) { |
830 tty->print(", zero based Compressed Oops"); |
832 tty->print(", %s", narrow_oop_mode_to_string(ZeroBasedNarrowOop)); |
831 } |
833 } |
832 #ifdef _WIN64 |
834 #ifdef _WIN64 |
833 if (!Universe::narrow_oop_use_implicit_null_checks()) { |
835 if (!Universe::narrow_oop_use_implicit_null_checks()) { |
834 // Don't need guard page for implicit checks in indexed addressing |
836 // Don't need guard page for implicit checks in indexed addressing |
835 // mode with zero based Compressed Oops. |
837 // mode with zero based Compressed Oops. |
840 // Can't reserve heap below 4Gb. |
842 // Can't reserve heap below 4Gb. |
841 Universe::set_narrow_oop_shift(LogMinObjAlignmentInBytes); |
843 Universe::set_narrow_oop_shift(LogMinObjAlignmentInBytes); |
842 } else { |
844 } else { |
843 Universe::set_narrow_oop_shift(0); |
845 Universe::set_narrow_oop_shift(0); |
844 if (verbose) { |
846 if (verbose) { |
845 tty->print(", 32-bits Oops"); |
847 tty->print(", %s", narrow_oop_mode_to_string(UnscaledNarrowOop)); |
846 } |
848 } |
847 } |
849 } |
848 } |
850 } |
849 if (verbose) { |
851 if (verbose) { |
850 tty->cr(); |
852 tty->cr(); |
946 void Universe::update_heap_info_at_gc() { |
948 void Universe::update_heap_info_at_gc() { |
947 _heap_capacity_at_last_gc = heap()->capacity(); |
949 _heap_capacity_at_last_gc = heap()->capacity(); |
948 _heap_used_at_last_gc = heap()->used(); |
950 _heap_used_at_last_gc = heap()->used(); |
949 } |
951 } |
950 |
952 |
|
953 |
|
954 const char* Universe::narrow_oop_mode_to_string(Universe::NARROW_OOP_MODE mode) { |
|
955 switch (mode) { |
|
956 case UnscaledNarrowOop: |
|
957 return "32-bits Oops"; |
|
958 case ZeroBasedNarrowOop: |
|
959 return "zero based Compressed Oops"; |
|
960 case HeapBasedNarrowOop: |
|
961 return "Compressed Oops with base"; |
|
962 } |
|
963 |
|
964 ShouldNotReachHere(); |
|
965 return ""; |
|
966 } |
|
967 |
|
968 |
|
969 Universe::NARROW_OOP_MODE Universe::narrow_oop_mode() { |
|
970 if (narrow_oop_base() != 0) { |
|
971 return HeapBasedNarrowOop; |
|
972 } |
|
973 |
|
974 if (narrow_oop_shift() != 0) { |
|
975 return ZeroBasedNarrowOop; |
|
976 } |
|
977 |
|
978 return UnscaledNarrowOop; |
|
979 } |
951 |
980 |
952 |
981 |
953 void universe2_init() { |
982 void universe2_init() { |
954 EXCEPTION_MARK; |
983 EXCEPTION_MARK; |
955 Universe::genesis(CATCH); |
984 Universe::genesis(CATCH); |