482 jint* key = NEW_RESOURCE_ARRAY(jint, len);
483 jint* dest = NEW_RESOURCE_ARRAY(jint, len);
484 for (int i = 0; i < len; i++) {
485 key [i] = get_int();
486 dest[i] = bci + get_int();
487 };
488 st->print(" %d %d ", default_dest, len);
489 const char *comma = "";
490 for (int ll = 0; ll < len; ll++) {
491 st->print("%s " INT32_FORMAT ":" INT32_FORMAT, comma, key[ll], dest[ll]);
492 comma = ",";
493 }
494 st->cr();
495 }
496 break;
497
498 case Bytecodes::_putstatic:
499 case Bytecodes::_getstatic:
500 case Bytecodes::_putfield:
501 case Bytecodes::_getfield:
502 {
503 int cp_index;
504 if (is_linked()) {
505 int field_index = get_native_index_u2();
506 cp_index = cpcache()->resolved_field_entry_at(field_index)->constant_pool_index();
507 } else {
508 cp_index = get_Java_index_u2();
509 }
510 print_field_or_method(cp_index, st);
511 }
512 break;
513
514 case Bytecodes::_invokevirtual:
515 case Bytecodes::_invokespecial:
516 case Bytecodes::_invokestatic:
517 {
518 int cp_index;
519 int cpcache_index;
520 if (is_linked()) {
521 cpcache_index = get_native_index_u2();
553 {
554 int indy_index;
555 int cp_index;
556 if (is_linked()) {
557 int i = get_native_index_u4();
558 indy_index = ConstantPool::decode_invokedynamic_index(i);
559 cp_index = constants()->resolved_indy_entry_at(indy_index)->constant_pool_index();
560 } else {
561 indy_index = -1;
562 cp_index = get_Java_index_u2();
563 get_byte(); // ignore zero byte
564 get_byte(); // ignore zero byte
565 }
566 print_invokedynamic(indy_index, cp_index, st);
567 }
568 break;
569
570 case Bytecodes::_new:
571 case Bytecodes::_checkcast:
572 case Bytecodes::_instanceof:
573 { int i = get_Java_index_u2();
574 ConstantPool* constants = method()->constants();
575 Symbol* name = constants->klass_name_at(i);
576 st->print_cr(" %d <%s>", i, name->as_C_string());
577 }
578 break;
579
580 case Bytecodes::_wide:
581 // length is zero not one, but printed with no more info.
582 break;
583
584 default:
585 ShouldNotReachHere();
586 break;
587 }
588 }
589
590
591 void BytecodePrinter::bytecode_epilog(int bci, outputStream* st) {
592 MethodData* mdo = method()->method_data();
|
482 jint* key = NEW_RESOURCE_ARRAY(jint, len);
483 jint* dest = NEW_RESOURCE_ARRAY(jint, len);
484 for (int i = 0; i < len; i++) {
485 key [i] = get_int();
486 dest[i] = bci + get_int();
487 };
488 st->print(" %d %d ", default_dest, len);
489 const char *comma = "";
490 for (int ll = 0; ll < len; ll++) {
491 st->print("%s " INT32_FORMAT ":" INT32_FORMAT, comma, key[ll], dest[ll]);
492 comma = ",";
493 }
494 st->cr();
495 }
496 break;
497
498 case Bytecodes::_putstatic:
499 case Bytecodes::_getstatic:
500 case Bytecodes::_putfield:
501 case Bytecodes::_getfield:
502 case Bytecodes::_withfield:
503 {
504 int cp_index;
505 if (is_linked()) {
506 int field_index = get_native_index_u2();
507 cp_index = cpcache()->resolved_field_entry_at(field_index)->constant_pool_index();
508 } else {
509 cp_index = get_Java_index_u2();
510 }
511 print_field_or_method(cp_index, st);
512 }
513 break;
514
515 case Bytecodes::_invokevirtual:
516 case Bytecodes::_invokespecial:
517 case Bytecodes::_invokestatic:
518 {
519 int cp_index;
520 int cpcache_index;
521 if (is_linked()) {
522 cpcache_index = get_native_index_u2();
554 {
555 int indy_index;
556 int cp_index;
557 if (is_linked()) {
558 int i = get_native_index_u4();
559 indy_index = ConstantPool::decode_invokedynamic_index(i);
560 cp_index = constants()->resolved_indy_entry_at(indy_index)->constant_pool_index();
561 } else {
562 indy_index = -1;
563 cp_index = get_Java_index_u2();
564 get_byte(); // ignore zero byte
565 get_byte(); // ignore zero byte
566 }
567 print_invokedynamic(indy_index, cp_index, st);
568 }
569 break;
570
571 case Bytecodes::_new:
572 case Bytecodes::_checkcast:
573 case Bytecodes::_instanceof:
574 case Bytecodes::_aconst_init:
575 { int i = get_Java_index_u2();
576 ConstantPool* constants = method()->constants();
577 Symbol* name = constants->klass_name_at(i);
578 st->print_cr(" %d <%s>", i, name->as_C_string());
579 }
580 break;
581
582 case Bytecodes::_wide:
583 // length is zero not one, but printed with no more info.
584 break;
585
586 default:
587 ShouldNotReachHere();
588 break;
589 }
590 }
591
592
593 void BytecodePrinter::bytecode_epilog(int bci, outputStream* st) {
594 MethodData* mdo = method()->method_data();
|