1543 if (is_wide) __ get_4_byte_integer_at_bcp( 1, G4_scratch, O1_disp, InterpreterMacroAssembler::set_CC); |
1543 if (is_wide) __ get_4_byte_integer_at_bcp( 1, G4_scratch, O1_disp, InterpreterMacroAssembler::set_CC); |
1544 else __ get_2_byte_integer_at_bcp( 1, G4_scratch, O1_disp, InterpreterMacroAssembler::Signed, InterpreterMacroAssembler::set_CC); |
1544 else __ get_2_byte_integer_at_bcp( 1, G4_scratch, O1_disp, InterpreterMacroAssembler::Signed, InterpreterMacroAssembler::set_CC); |
1545 |
1545 |
1546 // Handle all the JSR stuff here, then exit. |
1546 // Handle all the JSR stuff here, then exit. |
1547 // It's much shorter and cleaner than intermingling with the |
1547 // It's much shorter and cleaner than intermingling with the |
1548 // non-JSR normal-branch stuff occuring below. |
1548 // non-JSR normal-branch stuff occurring below. |
1549 if( is_jsr ) { |
1549 if( is_jsr ) { |
1550 // compute return address as bci in Otos_i |
1550 // compute return address as bci in Otos_i |
1551 __ ld_ptr(Address(Lmethod, 0, in_bytes(methodOopDesc::const_offset())), G3_scratch); |
1551 __ ld_ptr(Address(Lmethod, 0, in_bytes(methodOopDesc::const_offset())), G3_scratch); |
1552 __ sub(Lbcp, G3_scratch, G3_scratch); |
1552 __ sub(Lbcp, G3_scratch, G3_scratch); |
1553 __ sub(G3_scratch, in_bytes(constMethodOopDesc::codes_offset()) - (is_wide ? 5 : 3), Otos_i); |
1553 __ sub(G3_scratch, in_bytes(constMethodOopDesc::codes_offset()) - (is_wide ? 5 : 3), Otos_i); |
3077 __ ld_ptr(Rscratch, itableOffsetEntry::interface_offset_in_bytes(), Rtemp); |
3077 __ ld_ptr(Rscratch, itableOffsetEntry::interface_offset_in_bytes(), Rtemp); |
3078 { |
3078 { |
3079 Label ok; |
3079 Label ok; |
3080 |
3080 |
3081 // Check that entry is non-null. Null entries are probably a bytecode |
3081 // Check that entry is non-null. Null entries are probably a bytecode |
3082 // problem. If the interface isn't implemented by the reciever class, |
3082 // problem. If the interface isn't implemented by the receiver class, |
3083 // the VM should throw IncompatibleClassChangeError. linkResolver checks |
3083 // the VM should throw IncompatibleClassChangeError. linkResolver checks |
3084 // this too but that's only if the entry isn't already resolved, so we |
3084 // this too but that's only if the entry isn't already resolved, so we |
3085 // need to check again. |
3085 // need to check again. |
3086 __ br_notnull( Rtemp, false, Assembler::pt, ok); |
3086 __ br_notnull( Rtemp, false, Assembler::pt, ok); |
3087 __ delayed()->nop(); |
3087 __ delayed()->nop(); |