422 ss->print("Attempt to pop empty stack.");
423 break;
424 case MISSING_STACKMAP:
425 ss->print("Expected stackmap frame at this location.");
426 break;
427 case BAD_STACKMAP:
428 ss->print("Invalid stackmap specification.");
429 break;
430 case UNKNOWN:
431 default:
432 ShouldNotReachHere();
433 ss->print_cr("Unknown");
434 }
435 ss->cr();
436 }
437
438 void ErrorContext::location_details(outputStream* ss, const Method* method) const {
439 if (_bci != -1 && method != NULL) {
440 streamIndentor si(ss);
441 const char* bytecode_name = "<invalid>";
442 if (method->validate_bci_from_bcx(_bci) != -1) {
443 Bytecodes::Code code = Bytecodes::code_or_bp_at(method->bcp_from(_bci));
444 if (Bytecodes::is_defined(code)) {
445 bytecode_name = Bytecodes::name(code);
446 } else {
447 bytecode_name = "<illegal>";
448 }
449 }
450 InstanceKlass* ik = method->method_holder();
451 ss->indent().print_cr("Location:");
452 streamIndentor si2(ss);
453 ss->indent().print_cr("%s.%s%s @%d: %s",
454 ik->name()->as_C_string(), method->name()->as_C_string(),
455 method->signature()->as_C_string(), _bci, bytecode_name);
456 }
457 }
458
459 void ErrorContext::frame_details(outputStream* ss) const {
460 streamIndentor si(ss);
461 if (_type.is_valid() && _type.frame() != NULL) {
462 ss->indent().print_cr("Current Frame:");
|
422 ss->print("Attempt to pop empty stack.");
423 break;
424 case MISSING_STACKMAP:
425 ss->print("Expected stackmap frame at this location.");
426 break;
427 case BAD_STACKMAP:
428 ss->print("Invalid stackmap specification.");
429 break;
430 case UNKNOWN:
431 default:
432 ShouldNotReachHere();
433 ss->print_cr("Unknown");
434 }
435 ss->cr();
436 }
437
438 void ErrorContext::location_details(outputStream* ss, const Method* method) const {
439 if (_bci != -1 && method != NULL) {
440 streamIndentor si(ss);
441 const char* bytecode_name = "<invalid>";
442 if (method->validate_bci(_bci) != -1) {
443 Bytecodes::Code code = Bytecodes::code_or_bp_at(method->bcp_from(_bci));
444 if (Bytecodes::is_defined(code)) {
445 bytecode_name = Bytecodes::name(code);
446 } else {
447 bytecode_name = "<illegal>";
448 }
449 }
450 InstanceKlass* ik = method->method_holder();
451 ss->indent().print_cr("Location:");
452 streamIndentor si2(ss);
453 ss->indent().print_cr("%s.%s%s @%d: %s",
454 ik->name()->as_C_string(), method->name()->as_C_string(),
455 method->signature()->as_C_string(), _bci, bytecode_name);
456 }
457 }
458
459 void ErrorContext::frame_details(outputStream* ss) const {
460 streamIndentor si(ss);
461 if (_type.is_valid() && _type.frame() != NULL) {
462 ss->indent().print_cr("Current Frame:");
|