< prev index next >

src/hotspot/share/interpreter/bytecodeTracer.cpp

Print this page

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();
< prev index next >