src/share/vm/oops/methodData.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
hotspot Cdiff src/share/vm/oops/methodData.cpp
src/share/vm/oops/methodData.cpp
Print this page
rev 6132 : 8037970: make PrintMethodData a diagnostic options
Summary: make PrintMethodData a diagnostic options for performance investigation
Reviewed-by:
*** 112,122 ****
void ProfileData::print_data_on(outputStream* st, const MethodData* md) const {
print_data_on(st, print_data_on_helper(md));
}
- #ifndef PRODUCT
void ProfileData::print_shared(outputStream* st, const char* name, const char* extra) const {
st->print("bci: %d", bci());
st->fill_to(tab_width_one);
st->print("%s", name);
tab(st);
--- 112,121 ----
*** 135,170 ****
}
void ProfileData::tab(outputStream* st, bool first) const {
st->fill_to(first ? tab_width_one : tab_width_two);
}
- #endif // !PRODUCT
// ==================================================================
// BitData
//
// A BitData corresponds to a one-bit flag. This is used to indicate
// whether a checkcast bytecode has seen a null value.
- #ifndef PRODUCT
void BitData::print_data_on(outputStream* st, const char* extra) const {
print_shared(st, "BitData", extra);
}
- #endif // !PRODUCT
// ==================================================================
// CounterData
//
// A CounterData corresponds to a simple counter.
- #ifndef PRODUCT
void CounterData::print_data_on(outputStream* st, const char* extra) const {
print_shared(st, "CounterData", extra);
st->print_cr("count(%u)", count());
}
- #endif // !PRODUCT
// ==================================================================
// JumpData
//
// A JumpData is used to access profiling information for a direct
--- 134,164 ----
*** 185,200 ****
int target_di = mdo->bci_to_di(target);
int offset = target_di - my_di;
set_displacement(offset);
}
- #ifndef PRODUCT
void JumpData::print_data_on(outputStream* st, const char* extra) const {
print_shared(st, "JumpData", extra);
st->print_cr("taken(%u) displacement(%d)", taken(), displacement());
}
- #endif // !PRODUCT
int TypeStackSlotEntries::compute_cell_count(Symbol* signature, bool include_receiver, int max) {
// Parameter profiling include the receiver
int args_count = include_receiver ? 1 : 0;
ResourceMark rm;
--- 179,192 ----
*** 339,349 ****
bool TypeEntriesAtCall::arguments_profiling_enabled() {
return MethodData::profile_arguments();
}
- #ifndef PRODUCT
void TypeEntries::print_klass(outputStream* st, intptr_t k) {
if (is_type_none(k)) {
st->print("none");
} else if (is_type_unknown(k)) {
st->print("unknown");
--- 331,340 ----
*** 395,405 ****
tab(st, true);
st->print("return type");
_ret.print_data_on(st);
}
}
- #endif
// ==================================================================
// ReceiverTypeData
//
// A ReceiverTypeData is used to access profiling information about a
--- 386,395 ----
*** 414,424 ****
clear_row(row);
}
}
}
- #ifndef PRODUCT
void ReceiverTypeData::print_receiver_data_on(outputStream* st) const {
uint row;
int entries = 0;
for (row = 0; row < row_limit(); row++) {
if (receiver(row) != NULL) entries++;
--- 404,413 ----
*** 444,454 ****
}
void VirtualCallData::print_data_on(outputStream* st, const char* extra) const {
print_shared(st, "VirtualCallData", extra);
print_receiver_data_on(st);
}
- #endif // !PRODUCT
// ==================================================================
// RetData
//
// A RetData is used to access profiling information for a ret bytecode.
--- 433,442 ----
*** 496,506 ****
DataLayout* RetData::advance(MethodData *md, int bci) {
return (DataLayout*) md->bci_to_dp(bci);
}
#endif // CC_INTERP
- #ifndef PRODUCT
void RetData::print_data_on(outputStream* st, const char* extra) const {
print_shared(st, "RetData", extra);
uint row;
int entries = 0;
for (row = 0; row < row_limit(); row++) {
--- 484,493 ----
*** 513,523 ****
st->print_cr("bci(%d: count(%u) displacement(%d))",
bci(row), bci_count(row), bci_displacement(row));
}
}
}
- #endif // !PRODUCT
// ==================================================================
// BranchData
//
// A BranchData is used to access profiling data for a two-way branch.
--- 500,509 ----
*** 531,549 ****
int target_di = mdo->bci_to_di(target);
int offset = target_di - my_di;
set_displacement(offset);
}
- #ifndef PRODUCT
void BranchData::print_data_on(outputStream* st, const char* extra) const {
print_shared(st, "BranchData", extra);
st->print_cr("taken(%u) displacement(%d)",
taken(), displacement());
tab(st);
st->print_cr("not taken(%u)", not_taken());
}
- #endif
// ==================================================================
// MultiBranchData
//
// A MultiBranchData is used to access profiling information for
--- 517,533 ----
*** 605,615 ****
offset = target_di - my_di;
set_default_displacement(offset);
}
}
- #ifndef PRODUCT
void MultiBranchData::print_data_on(outputStream* st, const char* extra) const {
print_shared(st, "MultiBranchData", extra);
st->print_cr("default_count(%u) displacement(%d)",
default_count(), default_displacement());
int cases = number_of_cases();
--- 589,598 ----
*** 617,640 ****
tab(st);
st->print_cr("count(%u) displacement(%d)",
count_at(i), displacement_at(i));
}
}
- #endif
- #ifndef PRODUCT
void ArgInfoData::print_data_on(outputStream* st, const char* extra) const {
print_shared(st, "ArgInfoData", extra);
int nargs = number_of_args();
for (int i = 0; i < nargs; i++) {
st->print(" 0x%x", arg_modified(i));
}
st->cr();
}
- #endif
-
int ParametersTypeData::compute_cell_count(Method* m) {
if (!MethodData::profile_parameters_for_method(m)) {
return 0;
}
int max = TypeProfileParmsLimit == -1 ? INT_MAX : TypeProfileParmsLimit;
--- 600,619 ----
*** 651,661 ****
bool ParametersTypeData::profiling_enabled() {
return MethodData::profile_parameters();
}
- #ifndef PRODUCT
void ParametersTypeData::print_data_on(outputStream* st, const char* extra) const {
st->print("parameter types", extra);
_parameters.print_data_on(st);
}
--- 630,639 ----
*** 663,673 ****
print_shared(st, "SpeculativeTrapData", extra);
tab(st);
method()->print_short_name(st);
st->cr();
}
- #endif
// ==================================================================
// MethodData*
//
// A MethodData* holds information which has been collected about
--- 641,650 ----
*** 1339,1367 ****
return NULL;
}
// Printing
- #ifndef PRODUCT
-
void MethodData::print_on(outputStream* st) const {
assert(is_methodData(), "should be method data");
st->print("method data for ");
method()->print_value_on(st);
st->cr();
print_data_on(st);
}
- #endif //PRODUCT
-
void MethodData::print_value_on(outputStream* st) const {
assert(is_methodData(), "should be method data");
st->print("method data for ");
method()->print_value_on(st);
}
- #ifndef PRODUCT
void MethodData::print_data_on(outputStream* st) const {
ResourceMark rm;
ProfileData* data = first_data();
if (_parameters_type_data_di != -1) {
parameters_type_data()->print_data_on(st);
--- 1316,1339 ----
*** 1398,1408 ****
st->fill_to(6);
data->print_data_on(st);
if (dp >= end) return;
}
}
- #endif
#if INCLUDE_SERVICES
// Size Statistics
void MethodData::collect_statistics(KlassSizeStats *sz) const {
int n = sz->count(this);
--- 1370,1379 ----
src/share/vm/oops/methodData.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File