1691 return entry; 1692 } // end of ForceEarlyReturn support 1693 1694 1695 //----------------------------------------------------------------------------- 1696 // Helper for vtos entry point generation 1697 1698 void TemplateInterpreterGenerator::set_vtos_entry_points(Template* t, 1699 address& bep, 1700 address& cep, 1701 address& sep, 1702 address& aep, 1703 address& iep, 1704 address& lep, 1705 address& fep, 1706 address& dep, 1707 address& vep) { 1708 assert(t->is_valid() && t->tos_in() == vtos, "illegal template"); 1709 Label L; 1710 aep = __ pc(); __ push_ptr(); __ jmp(L); 1711 fep = __ pc(); __ push_f(); __ jmp(L); 1712 dep = __ pc(); __ push_d(); __ jmp(L); 1713 lep = __ pc(); __ push_l(); __ jmp(L); 1714 bep = cep = sep = 1715 iep = __ pc(); __ push_i(); 1716 vep = __ pc(); 1717 __ bind(L); 1718 generate_and_dispatch(t); 1719 } 1720 1721 1722 //----------------------------------------------------------------------------- 1723 // Generation of individual instructions 1724 1725 // helpers for generate_and_dispatch 1726 1727 1728 InterpreterGenerator::InterpreterGenerator(StubQueue* code) 1729 : TemplateInterpreterGenerator(code) { 1730 generate_all(); // down here so it can be "virtual" 1731 } 1732 | 1691 return entry; 1692 } // end of ForceEarlyReturn support 1693 1694 1695 //----------------------------------------------------------------------------- 1696 // Helper for vtos entry point generation 1697 1698 void TemplateInterpreterGenerator::set_vtos_entry_points(Template* t, 1699 address& bep, 1700 address& cep, 1701 address& sep, 1702 address& aep, 1703 address& iep, 1704 address& lep, 1705 address& fep, 1706 address& dep, 1707 address& vep) { 1708 assert(t->is_valid() && t->tos_in() == vtos, "illegal template"); 1709 Label L; 1710 aep = __ pc(); __ push_ptr(); __ jmp(L); 1711 fep = __ pc(); __ push_f(xmm0); __ jmp(L); 1712 dep = __ pc(); __ push_d(xmm0); __ jmp(L); 1713 lep = __ pc(); __ push_l(); __ jmp(L); 1714 bep = cep = sep = 1715 iep = __ pc(); __ push_i(); 1716 vep = __ pc(); 1717 __ bind(L); 1718 generate_and_dispatch(t); 1719 } 1720 1721 1722 //----------------------------------------------------------------------------- 1723 // Generation of individual instructions 1724 1725 // helpers for generate_and_dispatch 1726 1727 1728 InterpreterGenerator::InterpreterGenerator(StubQueue* code) 1729 : TemplateInterpreterGenerator(code) { 1730 generate_all(); // down here so it can be "virtual" 1731 } 1732 |