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(); |