557 int entry_offset = InstanceKlass::vtable_start_offset() + vtable_index*vtableEntry::size(); |
557 int entry_offset = InstanceKlass::vtable_start_offset() + vtable_index*vtableEntry::size(); |
558 int v_off = entry_offset*wordSize + vtableEntry::method_offset_in_bytes(); |
558 int v_off = entry_offset*wordSize + vtableEntry::method_offset_in_bytes(); |
559 int klass_load_size; |
559 int klass_load_size; |
560 if (UseCompressedKlassPointers) { |
560 if (UseCompressedKlassPointers) { |
561 assert(Universe::heap() != NULL, "java heap should be initialized"); |
561 assert(Universe::heap() != NULL, "java heap should be initialized"); |
562 if (Universe::narrow_klass_base() == NULL) |
562 klass_load_size = MacroAssembler::instr_size_for_decode_klass_not_null() + 1*BytesPerInstWord; |
563 klass_load_size = 2*BytesPerInstWord; // see MacroAssembler::load_klass() |
|
564 else |
|
565 klass_load_size = 3*BytesPerInstWord; |
|
566 } else { |
563 } else { |
567 klass_load_size = 1*BytesPerInstWord; |
564 klass_load_size = 1*BytesPerInstWord; |
568 } |
565 } |
569 if (Assembler::is_simm13(v_off)) { |
566 if (Assembler::is_simm13(v_off)) { |
570 return klass_load_size + |
567 return klass_load_size + |
1661 st->print_cr("\nUEP:"); |
1658 st->print_cr("\nUEP:"); |
1662 #ifdef _LP64 |
1659 #ifdef _LP64 |
1663 if (UseCompressedKlassPointers) { |
1660 if (UseCompressedKlassPointers) { |
1664 assert(Universe::heap() != NULL, "java heap should be initialized"); |
1661 assert(Universe::heap() != NULL, "java heap should be initialized"); |
1665 st->print_cr("\tLDUW [R_O0 + oopDesc::klass_offset_in_bytes],R_G5\t! Inline cache check - compressed klass"); |
1662 st->print_cr("\tLDUW [R_O0 + oopDesc::klass_offset_in_bytes],R_G5\t! Inline cache check - compressed klass"); |
1666 st->print_cr("\tSLL R_G5,3,R_G5"); |
1663 st->print_cr("\tSET Universe::narrow_klass_base,R_G6_heap_base"); |
1667 if (Universe::narrow_klass_base() != NULL) |
1664 if (Universe::narrow_klass_shift() != 0) { |
1668 st->print_cr("\tADD R_G5,R_G6_heap_base,R_G5"); |
1665 st->print_cr("\tSLL R_G5,3,R_G5"); |
|
1666 } |
|
1667 st->print_cr("\tADD R_G5,R_G6_heap_base,R_G5"); |
|
1668 st->print_cr("\tSET Universe::narrow_ptrs_base,R_G6_heap_base"); |
1669 } else { |
1669 } else { |
1670 st->print_cr("\tLDX [R_O0 + oopDesc::klass_offset_in_bytes],R_G5\t! Inline cache check"); |
1670 st->print_cr("\tLDX [R_O0 + oopDesc::klass_offset_in_bytes],R_G5\t! Inline cache check"); |
1671 } |
1671 } |
1672 st->print_cr("\tCMP R_G5,R_G3" ); |
1672 st->print_cr("\tCMP R_G5,R_G3" ); |
1673 st->print ("\tTne xcc,R_G0+ST_RESERVED_FOR_USER_0+2"); |
1673 st->print ("\tTne xcc,R_G0+ST_RESERVED_FOR_USER_0+2"); |
2561 int off = __ offset(); |
2561 int off = __ offset(); |
2562 __ load_klass(O0, G3_scratch); |
2562 __ load_klass(O0, G3_scratch); |
2563 int klass_load_size; |
2563 int klass_load_size; |
2564 if (UseCompressedKlassPointers) { |
2564 if (UseCompressedKlassPointers) { |
2565 assert(Universe::heap() != NULL, "java heap should be initialized"); |
2565 assert(Universe::heap() != NULL, "java heap should be initialized"); |
2566 if (Universe::narrow_klass_base() == NULL) |
2566 klass_load_size = MacroAssembler::instr_size_for_decode_klass_not_null() + 1*BytesPerInstWord; |
2567 klass_load_size = 2*BytesPerInstWord; |
|
2568 else |
|
2569 klass_load_size = 3*BytesPerInstWord; |
|
2570 } else { |
2567 } else { |
2571 klass_load_size = 1*BytesPerInstWord; |
2568 klass_load_size = 1*BytesPerInstWord; |
2572 } |
2569 } |
2573 int entry_offset = InstanceKlass::vtable_start_offset() + vtable_index*vtableEntry::size(); |
2570 int entry_offset = InstanceKlass::vtable_start_offset() + vtable_index*vtableEntry::size(); |
2574 int v_off = entry_offset*wordSize + vtableEntry::method_offset_in_bytes(); |
2571 int v_off = entry_offset*wordSize + vtableEntry::method_offset_in_bytes(); |