src/cpu/x86/vm/templateInterpreter_x86_64.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8076373 Sdiff src/cpu/x86/vm

src/cpu/x86/vm/templateInterpreter_x86_64.cpp

Print this page




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 


src/cpu/x86/vm/templateInterpreter_x86_64.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File