581 jint* key = NEW_RESOURCE_ARRAY(jint, len);
582 jint* dest = NEW_RESOURCE_ARRAY(jint, len);
583 for (int i = 0; i < len; i++) {
584 key [i] = get_int();
585 dest[i] = bci + get_int();
586 };
587 st->print(" %d %d ", default_dest, len);
588 const char *comma = "";
589 for (int ll = 0; ll < len; ll++) {
590 st->print("%s " INT32_FORMAT ":" INT32_FORMAT, comma, key[ll], dest[ll]);
591 comma = ",";
592 }
593 st->cr();
594 }
595 break;
596
597 case Bytecodes::_putstatic:
598 case Bytecodes::_getstatic:
599 case Bytecodes::_putfield:
600 case Bytecodes::_getfield:
601 print_field_or_method(get_index_u2_cpcache(), st);
602 break;
603
604 case Bytecodes::_invokevirtual:
605 case Bytecodes::_invokespecial:
606 case Bytecodes::_invokestatic:
607 {
608 int i = get_index_u2_cpcache();
609 print_field_or_method(i, st);
610 if (raw_code() == Bytecodes::_invokehandle &&
611 ClassPrinter::has_mode(_flags, ClassPrinter::PRINT_METHOD_HANDLE)) {
612 print_invoke_handle(i, st);
613 }
614 }
615 break;
616
617 case Bytecodes::_invokeinterface:
618 { int i = get_index_u2_cpcache();
619 int n = get_index_u1();
620 get_byte(); // ignore zero byte
621 print_field_or_method(i, st);
622 }
623 break;
624
625 case Bytecodes::_invokedynamic:
626 print_field_or_method(get_index_u4(), st);
627 break;
628
629 case Bytecodes::_new:
630 case Bytecodes::_checkcast:
631 case Bytecodes::_instanceof:
632 { int i = get_index_u2();
633 ConstantPool* constants = method()->constants();
634 Symbol* name = constants->klass_name_at(i);
635 st->print_cr(" %d <%s>", i, name->as_C_string());
636 }
637 break;
638
639 case Bytecodes::_wide:
640 // length is zero not one, but printed with no more info.
641 break;
642
643 default:
644 ShouldNotReachHere();
645 break;
646 }
647 }
648
649
650 void BytecodePrinter::bytecode_epilog(int bci, outputStream* st) {
651 MethodData* mdo = method()->method_data();
|
581 jint* key = NEW_RESOURCE_ARRAY(jint, len);
582 jint* dest = NEW_RESOURCE_ARRAY(jint, len);
583 for (int i = 0; i < len; i++) {
584 key [i] = get_int();
585 dest[i] = bci + get_int();
586 };
587 st->print(" %d %d ", default_dest, len);
588 const char *comma = "";
589 for (int ll = 0; ll < len; ll++) {
590 st->print("%s " INT32_FORMAT ":" INT32_FORMAT, comma, key[ll], dest[ll]);
591 comma = ",";
592 }
593 st->cr();
594 }
595 break;
596
597 case Bytecodes::_putstatic:
598 case Bytecodes::_getstatic:
599 case Bytecodes::_putfield:
600 case Bytecodes::_getfield:
601 case Bytecodes::_withfield:
602 print_field_or_method(get_index_u2_cpcache(), st);
603 break;
604
605 case Bytecodes::_invokevirtual:
606 case Bytecodes::_invokespecial:
607 case Bytecodes::_invokestatic:
608 {
609 int i = get_index_u2_cpcache();
610 print_field_or_method(i, st);
611 if (raw_code() == Bytecodes::_invokehandle &&
612 ClassPrinter::has_mode(_flags, ClassPrinter::PRINT_METHOD_HANDLE)) {
613 print_invoke_handle(i, st);
614 }
615 }
616 break;
617
618 case Bytecodes::_invokeinterface:
619 { int i = get_index_u2_cpcache();
620 int n = get_index_u1();
621 get_byte(); // ignore zero byte
622 print_field_or_method(i, st);
623 }
624 break;
625
626 case Bytecodes::_invokedynamic:
627 print_field_or_method(get_index_u4(), st);
628 break;
629
630 case Bytecodes::_new:
631 case Bytecodes::_checkcast:
632 case Bytecodes::_instanceof:
633 case Bytecodes::_aconst_init:
634 { int i = get_index_u2();
635 ConstantPool* constants = method()->constants();
636 Symbol* name = constants->klass_name_at(i);
637 st->print_cr(" %d <%s>", i, name->as_C_string());
638 }
639 break;
640
641 case Bytecodes::_wide:
642 // length is zero not one, but printed with no more info.
643 break;
644
645 default:
646 ShouldNotReachHere();
647 break;
648 }
649 }
650
651
652 void BytecodePrinter::bytecode_epilog(int bci, outputStream* st) {
653 MethodData* mdo = method()->method_data();
|