< prev index next >

src/hotspot/share/interpreter/bytecodeTracer.cpp

Print this page

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