src/share/vm/memory/universe.cpp
Print this page
rev 6890 : [mq]: coops
@@ -836,35 +836,21 @@
// 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);
@@ -873,21 +859,18 @@
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());
+
+ 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,10 +887,28 @@
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,15 +974,15 @@
const char* Universe::narrow_oop_mode_to_string(Universe::NARROW_OOP_MODE mode) {
switch (mode) {
case UnscaledNarrowOop:
- return "32-bits Oops";
+ return "32-bit";
case ZeroBasedNarrowOop:
- return "zero based Compressed Oops";
+ return "Zero based";
case HeapBasedNarrowOop:
- return "Compressed Oops with base";
+ return "Non-zero based";
}
ShouldNotReachHere();
return "";
}