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
|