8221470: Print methods in exception messages in java-like Syntax

Reviewed-by: dholmes, mdoerr, coleenp
This commit is contained in:
Goetz Lindenmaier 2019-04-04 09:39:44 +02:00
parent 6780d21dd6
commit 39f3368ffd
22 changed files with 470 additions and 161 deletions

View file

@ -178,6 +178,27 @@ char* Method::name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol
return buf;
}
const char* Method::external_name() const {
return external_name(constants()->pool_holder(), name(), signature());
}
void Method::print_external_name(outputStream *os) const {
print_external_name(os, constants()->pool_holder(), name(), signature());
}
const char* Method::external_name(Klass* klass, Symbol* method_name, Symbol* signature) {
stringStream ss;
print_external_name(&ss, klass, method_name, signature);
return ss.as_string();
}
void Method::print_external_name(outputStream *os, Klass* klass, Symbol* method_name, Symbol* signature) {
signature->print_as_signature_external_return_type(os);
os->print(" %s.%s(", klass->external_name(), method_name->as_C_string());
signature->print_as_signature_external_parameters(os);
os->print(")");
}
int Method::fast_exception_handler_bci_for(const methodHandle& mh, Klass* ex_klass, int throw_bci, TRAPS) {
// exception table holds quadruple entries of the form (beg_bci, end_bci, handler_bci, klass_index)
// access exception table