< prev index next >

src/hotspot/share/interpreter/bytecodeTracer.cpp

Print this page




 418         print_constant(get_index_u1_cpcache(), st);
 419       } else {
 420         print_constant(get_index_u1(), st);
 421       }
 422       break;
 423 
 424     case Bytecodes::_ldc_w:
 425     case Bytecodes::_ldc2_w:
 426       if (Bytecodes::uses_cp_cache(raw_code())) {
 427         print_constant(get_index_u2_cpcache(), st);
 428       } else {
 429         print_constant(get_index_u2(), st);
 430       }
 431       break;
 432 
 433     case Bytecodes::_iload:
 434     case Bytecodes::_lload:
 435     case Bytecodes::_fload:
 436     case Bytecodes::_dload:
 437     case Bytecodes::_aload:
 438     case Bytecodes::_vload:
 439     case Bytecodes::_istore:
 440     case Bytecodes::_lstore:
 441     case Bytecodes::_fstore:
 442     case Bytecodes::_dstore:
 443     case Bytecodes::_astore:
 444     case Bytecodes::_vstore:
 445       st->print_cr(" #%d", get_index_special());
 446       break;
 447 
 448     case Bytecodes::_iinc:
 449       { int index = get_index_special();
 450         jint offset = is_wide() ? get_short(): get_byte();
 451         st->print_cr(" #%d " INT32_FORMAT, index, offset);
 452       }
 453       break;
 454 
 455     case Bytecodes::_newarray: {
 456         BasicType atype = (BasicType)get_index_u1();
 457         const char* str = type2name(atype);
 458         if (str == NULL || atype == T_OBJECT || atype == T_ARRAY) {
 459           assert(false, "Unidentified basic type");
 460         }
 461         st->print_cr(" %s", str);
 462       }
 463       break;
 464     case Bytecodes::_anewarray: {


 533         jint* key         = NEW_RESOURCE_ARRAY(jint, len);
 534         jint* dest        = NEW_RESOURCE_ARRAY(jint, len);
 535         for (int i = 0; i < len; i++) {
 536           key [i] = get_int();
 537           dest[i] = bci + get_int();
 538         };
 539         st->print(" %d %d ", default_dest, len);
 540         const char *comma = "";
 541         for (int ll = 0; ll < len; ll++)  {
 542           st->print("%s " INT32_FORMAT ":" INT32_FORMAT, comma, key[ll], dest[ll]);
 543           comma = ",";
 544         }
 545         st->cr();
 546       }
 547       break;
 548 
 549     case Bytecodes::_putstatic:
 550     case Bytecodes::_getstatic:
 551     case Bytecodes::_putfield:
 552     case Bytecodes::_getfield:
 553     case Bytecodes::_vwithfield:
 554       print_field_or_method(get_index_u2_cpcache(), st);
 555       break;
 556 
 557     case Bytecodes::_invokevirtual:
 558     case Bytecodes::_invokespecial:
 559     case Bytecodes::_invokestatic:
 560       print_field_or_method(get_index_u2_cpcache(), st);
 561       break;
 562 
 563     case Bytecodes::_invokeinterface:
 564       { int i = get_index_u2_cpcache();
 565         int n = get_index_u1();
 566         get_byte();            // ignore zero byte
 567         print_field_or_method(i, st);
 568       }
 569       break;
 570 
 571     case Bytecodes::_invokedynamic:
 572       print_field_or_method(get_index_u4(), st);
 573       break;
 574 
 575     case Bytecodes::_new:
 576     case Bytecodes::_checkcast:
 577     case Bytecodes::_instanceof:
 578     case Bytecodes::_vbox:
 579     case Bytecodes::_vunbox:
 580     case Bytecodes::_vdefault:
 581       { int i = get_index_u2();
 582         ConstantPool* constants = method()->constants();
 583         Symbol* name = constants->klass_name_at(i);
 584         st->print_cr(" %d <%s>", i, name->as_C_string());
 585       }
 586       break;
 587 
 588     case Bytecodes::_wide:
 589       // length is zero not one, but printed with no more info.
 590       break;
 591 
 592     default:
 593       ShouldNotReachHere();
 594       break;
 595   }
 596 }
 597 
 598 
 599 void BytecodePrinter::bytecode_epilog(int bci, outputStream* st) {
 600   MethodData* mdo = method()->method_data();


 418         print_constant(get_index_u1_cpcache(), st);
 419       } else {
 420         print_constant(get_index_u1(), st);
 421       }
 422       break;
 423 
 424     case Bytecodes::_ldc_w:
 425     case Bytecodes::_ldc2_w:
 426       if (Bytecodes::uses_cp_cache(raw_code())) {
 427         print_constant(get_index_u2_cpcache(), st);
 428       } else {
 429         print_constant(get_index_u2(), st);
 430       }
 431       break;
 432 
 433     case Bytecodes::_iload:
 434     case Bytecodes::_lload:
 435     case Bytecodes::_fload:
 436     case Bytecodes::_dload:
 437     case Bytecodes::_aload:

 438     case Bytecodes::_istore:
 439     case Bytecodes::_lstore:
 440     case Bytecodes::_fstore:
 441     case Bytecodes::_dstore:
 442     case Bytecodes::_astore:

 443       st->print_cr(" #%d", get_index_special());
 444       break;
 445 
 446     case Bytecodes::_iinc:
 447       { int index = get_index_special();
 448         jint offset = is_wide() ? get_short(): get_byte();
 449         st->print_cr(" #%d " INT32_FORMAT, index, offset);
 450       }
 451       break;
 452 
 453     case Bytecodes::_newarray: {
 454         BasicType atype = (BasicType)get_index_u1();
 455         const char* str = type2name(atype);
 456         if (str == NULL || atype == T_OBJECT || atype == T_ARRAY) {
 457           assert(false, "Unidentified basic type");
 458         }
 459         st->print_cr(" %s", str);
 460       }
 461       break;
 462     case Bytecodes::_anewarray: {


 531         jint* key         = NEW_RESOURCE_ARRAY(jint, len);
 532         jint* dest        = NEW_RESOURCE_ARRAY(jint, len);
 533         for (int i = 0; i < len; i++) {
 534           key [i] = get_int();
 535           dest[i] = bci + get_int();
 536         };
 537         st->print(" %d %d ", default_dest, len);
 538         const char *comma = "";
 539         for (int ll = 0; ll < len; ll++)  {
 540           st->print("%s " INT32_FORMAT ":" INT32_FORMAT, comma, key[ll], dest[ll]);
 541           comma = ",";
 542         }
 543         st->cr();
 544       }
 545       break;
 546 
 547     case Bytecodes::_putstatic:
 548     case Bytecodes::_getstatic:
 549     case Bytecodes::_putfield:
 550     case Bytecodes::_getfield:
 551     case Bytecodes::_withfield:
 552       print_field_or_method(get_index_u2_cpcache(), st);
 553       break;
 554 
 555     case Bytecodes::_invokevirtual:
 556     case Bytecodes::_invokespecial:
 557     case Bytecodes::_invokestatic:
 558       print_field_or_method(get_index_u2_cpcache(), st);
 559       break;
 560 
 561     case Bytecodes::_invokeinterface:
 562       { int i = get_index_u2_cpcache();
 563         int n = get_index_u1();
 564         get_byte();            // ignore zero byte
 565         print_field_or_method(i, st);
 566       }
 567       break;
 568 
 569     case Bytecodes::_invokedynamic:
 570       print_field_or_method(get_index_u4(), st);
 571       break;
 572 
 573     case Bytecodes::_new:
 574     case Bytecodes::_checkcast:
 575     case Bytecodes::_instanceof:
 576     case Bytecodes::_defaultvalue:


 577       { int i = get_index_u2();
 578         ConstantPool* constants = method()->constants();
 579         Symbol* name = constants->klass_name_at(i);
 580         st->print_cr(" %d <%s>", i, name->as_C_string());
 581       }
 582       break;
 583 
 584     case Bytecodes::_wide:
 585       // length is zero not one, but printed with no more info.
 586       break;
 587 
 588     default:
 589       ShouldNotReachHere();
 590       break;
 591   }
 592 }
 593 
 594 
 595 void BytecodePrinter::bytecode_epilog(int bci, outputStream* st) {
 596   MethodData* mdo = method()->method_data();
< prev index next >