< prev index next >

src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp

Print this page




1741     Label profile_continue, done;
1742 
1743     test_method_data_pointer(mdp, profile_continue);
1744 
1745     if (MethodData::profile_return_jsr292_only()) {
1746       assert(Method::intrinsic_id_size_in_bytes() == 2, "assuming Method::_intrinsic_id is u2");
1747 
1748       // If we don't profile all invoke bytecodes we must make sure
1749       // it's a bytecode we indeed profile. We can't go back to the
1750       // begining of the ProfileData we intend to update to check its
1751       // type because we're right after it and we don't known its
1752       // length
1753       Label do_profile;
1754       ldrb(rscratch1, Address(rbcp, 0));
1755       cmp(rscratch1, Bytecodes::_invokedynamic);
1756       br(Assembler::EQ, do_profile);
1757       cmp(rscratch1, Bytecodes::_invokehandle);
1758       br(Assembler::EQ, do_profile);
1759       get_method(tmp);
1760       ldrh(rscratch1, Address(tmp, Method::intrinsic_id_offset_in_bytes()));
1761       cmp(rscratch1, vmIntrinsics::_compiledLambdaForm);
1762       br(Assembler::NE, profile_continue);
1763 
1764       bind(do_profile);
1765     }
1766 
1767     Address mdo_ret_addr(mdp, -in_bytes(ReturnTypeEntry::size()));
1768     mov(tmp, ret);
1769     profile_obj_type(tmp, mdo_ret_addr);
1770 
1771     bind(profile_continue);
1772   }
1773 }
1774 
1775 void InterpreterMacroAssembler::profile_parameters_type(Register mdp, Register tmp1, Register tmp2) {
1776   assert_different_registers(rscratch1, rscratch2, mdp, tmp1, tmp2);
1777   if (ProfileInterpreter && MethodData::profile_parameters()) {
1778     Label profile_continue, done;
1779 
1780     test_method_data_pointer(mdp, profile_continue);
1781 




1741     Label profile_continue, done;
1742 
1743     test_method_data_pointer(mdp, profile_continue);
1744 
1745     if (MethodData::profile_return_jsr292_only()) {
1746       assert(Method::intrinsic_id_size_in_bytes() == 2, "assuming Method::_intrinsic_id is u2");
1747 
1748       // If we don't profile all invoke bytecodes we must make sure
1749       // it's a bytecode we indeed profile. We can't go back to the
1750       // begining of the ProfileData we intend to update to check its
1751       // type because we're right after it and we don't known its
1752       // length
1753       Label do_profile;
1754       ldrb(rscratch1, Address(rbcp, 0));
1755       cmp(rscratch1, Bytecodes::_invokedynamic);
1756       br(Assembler::EQ, do_profile);
1757       cmp(rscratch1, Bytecodes::_invokehandle);
1758       br(Assembler::EQ, do_profile);
1759       get_method(tmp);
1760       ldrh(rscratch1, Address(tmp, Method::intrinsic_id_offset_in_bytes()));
1761       subs(zr, rscratch1, vmIntrinsics::_compiledLambdaForm);
1762       br(Assembler::NE, profile_continue);
1763 
1764       bind(do_profile);
1765     }
1766 
1767     Address mdo_ret_addr(mdp, -in_bytes(ReturnTypeEntry::size()));
1768     mov(tmp, ret);
1769     profile_obj_type(tmp, mdo_ret_addr);
1770 
1771     bind(profile_continue);
1772   }
1773 }
1774 
1775 void InterpreterMacroAssembler::profile_parameters_type(Register mdp, Register tmp1, Register tmp2) {
1776   assert_different_registers(rscratch1, rscratch2, mdp, tmp1, tmp2);
1777   if (ProfileInterpreter && MethodData::profile_parameters()) {
1778     Label profile_continue, done;
1779 
1780     test_method_data_pointer(mdp, profile_continue);
1781 


< prev index next >