src/share/vm/memory/universe.cpp
Print this page
rev 6890 : [mq]: coops
*** 836,870 ****
// This also makes implicit null checking work, because the
// memory+1 page below heap_base needs to cause a signal.
// See needs_explicit_null_check.
// Only set the heap base for compressed oops because it indicates
// compressed oops for pstack code.
- bool verbose = PrintCompressedOopsMode || (PrintMiscellaneous && Verbose);
- if (verbose) {
- tty->cr();
- tty->print("heap address: " PTR_FORMAT ", size: " SIZE_FORMAT " MB",
- Universe::heap()->base(), Universe::heap()->reserved_region().byte_size()/M);
- }
if (((uint64_t)Universe::heap()->reserved_region().end() > OopEncodingHeapMax)) {
// Can't reserve heap below 32Gb.
// keep the Universe::narrow_oop_base() set in Universe::reserve_heap()
Universe::set_narrow_oop_shift(LogMinObjAlignmentInBytes);
#ifdef AIX
// There is no protected page before the heap. This assures all oops
// are decoded so that NULL is preserved, so this page will not be accessed.
Universe::set_narrow_oop_use_implicit_null_checks(false);
#endif
- if (verbose) {
- tty->print(", %s: "PTR_FORMAT,
- narrow_oop_mode_to_string(HeapBasedNarrowOop),
- Universe::narrow_oop_base());
- }
} else {
Universe::set_narrow_oop_base(0);
- if (verbose) {
- tty->print(", %s", narrow_oop_mode_to_string(ZeroBasedNarrowOop));
- }
#ifdef _WIN64
if (!Universe::narrow_oop_use_implicit_null_checks()) {
// Don't need guard page for implicit checks in indexed addressing
// mode with zero based Compressed Oops.
Universe::set_narrow_oop_use_implicit_null_checks(true);
--- 836,856 ----
*** 873,893 ****
if((uint64_t)Universe::heap()->reserved_region().end() > UnscaledOopHeapMax) {
// Can't reserve heap below 4Gb.
Universe::set_narrow_oop_shift(LogMinObjAlignmentInBytes);
} else {
Universe::set_narrow_oop_shift(0);
- if (verbose) {
- tty->print(", %s", narrow_oop_mode_to_string(UnscaledNarrowOop));
- }
}
}
- if (verbose) {
- tty->cr();
- tty->cr();
- }
Universe::set_narrow_ptrs_base(Universe::narrow_oop_base());
}
// Universe::narrow_oop_base() is one page below the heap.
assert((intptr_t)Universe::narrow_oop_base() <= (intptr_t)(Universe::heap()->base() -
os::vm_page_size()) ||
Universe::narrow_oop_base() == NULL, "invalid value");
--- 859,876 ----
if((uint64_t)Universe::heap()->reserved_region().end() > UnscaledOopHeapMax) {
// Can't reserve heap below 4Gb.
Universe::set_narrow_oop_shift(LogMinObjAlignmentInBytes);
} else {
Universe::set_narrow_oop_shift(0);
}
}
Universe::set_narrow_ptrs_base(Universe::narrow_oop_base());
+
+ if (PrintCompressedOopsMode || (PrintMiscellaneous && Verbose)) {
+ Universe::print_compressed_oops_mode();
+ }
}
// Universe::narrow_oop_base() is one page below the heap.
assert((intptr_t)Universe::narrow_oop_base() <= (intptr_t)(Universe::heap()->base() -
os::vm_page_size()) ||
Universe::narrow_oop_base() == NULL, "invalid value");
*** 904,913 ****
--- 887,914 ----
ThreadLocalAllocBuffer::startup_initialization();
}
return JNI_OK;
}
+ void Universe::print_compressed_oops_mode() {
+ tty->cr();
+ tty->print("heap address: " PTR_FORMAT ", size: " SIZE_FORMAT " MB",
+ Universe::heap()->base(), Universe::heap()->reserved_region().byte_size()/M);
+
+ tty->print(", Compressed Oops mode: %s", narrow_oop_mode_to_string(narrow_oop_mode()));
+
+ if (Universe::narrow_oop_base() != 0) {
+ tty->print(":" PTR_FORMAT, Universe::narrow_oop_base());
+ }
+
+ if (Universe::narrow_oop_shift() != 0) {
+ tty->print(", Oop shift amount: %d", Universe::narrow_oop_shift());
+ }
+
+ tty->cr();
+ tty->cr();
+ }
// Reserve the Java heap, which is now the same for all GCs.
ReservedSpace Universe::reserve_heap(size_t heap_size, size_t alignment) {
assert(alignment <= Arguments::conservative_max_heap_alignment(),
err_msg("actual alignment "SIZE_FORMAT" must be within maximum heap alignment "SIZE_FORMAT,
*** 973,987 ****
const char* Universe::narrow_oop_mode_to_string(Universe::NARROW_OOP_MODE mode) {
switch (mode) {
case UnscaledNarrowOop:
! return "32-bits Oops";
case ZeroBasedNarrowOop:
! return "zero based Compressed Oops";
case HeapBasedNarrowOop:
! return "Compressed Oops with base";
}
ShouldNotReachHere();
return "";
}
--- 974,988 ----
const char* Universe::narrow_oop_mode_to_string(Universe::NARROW_OOP_MODE mode) {
switch (mode) {
case UnscaledNarrowOop:
! return "32-bit";
case ZeroBasedNarrowOop:
! return "Zero based";
case HeapBasedNarrowOop:
! return "Non-zero based";
}
ShouldNotReachHere();
return "";
}