< prev index next >
src/hotspot/share/oops/method.cpp
Print this page
@@ -382,10 +382,11 @@
return invocation_count() > n;
}
}
void Method::print_invocation_count() {
+ //---< compose+print method return type, klass, name, and signature >---
if (is_static()) tty->print("static ");
if (is_final()) tty->print("final ");
if (is_synchronized()) tty->print("synchronized ");
if (is_native()) tty->print("native ");
tty->print("%s::", method_holder()->external_name());
@@ -396,16 +397,26 @@
// dump the size of the byte codes
tty->print(" {%d}", code_size());
}
tty->cr();
- tty->print_cr (" interpreter_invocation_count: %8d ", interpreter_invocation_count());
- tty->print_cr (" invocation_counter: %8d ", invocation_count());
- tty->print_cr (" backedge_counter: %8d ", backedge_count());
+ // Counting based on signed int counters tends to overflow with
+ // longer-running workloads on fast machines. The counters under
+ // consideration here, however, are limited in range by counting
+ // logic. See InvocationCounter:count_limit for example.
+ // No "overflow precautions" need to be implemented here.
+ tty->print_cr (" interpreter_invocation_count: " INT32_FORMAT_W(11), interpreter_invocation_count());
+ tty->print_cr (" invocation_counter: " INT32_FORMAT_W(11), invocation_count());
+ tty->print_cr (" backedge_counter: " INT32_FORMAT_W(11), backedge_count());
+
+ if (method_data() != NULL) {
+ tty->print_cr (" decompile_count: " UINT32_FORMAT_W(11), method_data()->decompile_count());
+ }
+
#ifndef PRODUCT
if (CountCompiledCalls) {
- tty->print_cr (" compiled_invocation_count: %8d ", compiled_invocation_count());
+ tty->print_cr (" compiled_invocation_count: " INT64_FORMAT_W(11), compiled_invocation_count());
}
#endif
}
// Build a MethodData* object to hold information about this method
< prev index next >