equal
deleted
inserted
replaced
662 // jvmti support |
662 // jvmti support |
663 __ notify_method_entry(); |
663 __ notify_method_entry(); |
664 |
664 |
665 // work registers |
665 // work registers |
666 const Register method = rbx; |
666 const Register method = rbx; |
667 const Register t = r12; |
667 const Register t = r11; |
668 |
668 |
669 // allocate space for parameters |
669 // allocate space for parameters |
670 __ get_method(method); |
670 __ get_method(method); |
671 __ verify_oop(method); |
671 __ verify_oop(method); |
672 __ load_unsigned_word(t, |
672 __ load_unsigned_word(t, |
842 __ movq(r12, rsp); // remember sp |
842 __ movq(r12, rsp); // remember sp |
843 __ subq(rsp, frame::arg_reg_save_area_bytes); // windows |
843 __ subq(rsp, frame::arg_reg_save_area_bytes); // windows |
844 __ andq(rsp, -16); // align stack as required by ABI |
844 __ andq(rsp, -16); // align stack as required by ABI |
845 __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, JavaThread::check_special_condition_for_native_trans))); |
845 __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, JavaThread::check_special_condition_for_native_trans))); |
846 __ movq(rsp, r12); // restore sp |
846 __ movq(rsp, r12); // restore sp |
|
847 __ reinit_heapbase(); |
847 __ bind(Continue); |
848 __ bind(Continue); |
848 } |
849 } |
849 |
850 |
850 // change thread state |
851 // change thread state |
851 __ movl(Address(r15_thread, JavaThread::thread_state_offset()), _thread_in_Java); |
852 __ movl(Address(r15_thread, JavaThread::thread_state_offset()), _thread_in_Java); |
889 __ subq(rsp, frame::arg_reg_save_area_bytes); // windows |
890 __ subq(rsp, frame::arg_reg_save_area_bytes); // windows |
890 __ andq(rsp, -16); // align stack as required by ABI |
891 __ andq(rsp, -16); // align stack as required by ABI |
891 __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::reguard_yellow_pages))); |
892 __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::reguard_yellow_pages))); |
892 __ movq(rsp, r12); // restore sp |
893 __ movq(rsp, r12); // restore sp |
893 __ popaq(); // XXX only restore smashed registers |
894 __ popaq(); // XXX only restore smashed registers |
|
895 __ reinit_heapbase(); |
894 |
896 |
895 __ bind(no_reguard); |
897 __ bind(no_reguard); |
896 } |
898 } |
897 |
899 |
898 |
900 |
1358 __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD); |
1360 __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD); |
1359 // rax: exception |
1361 // rax: exception |
1360 // rdx: return address/pc that threw exception |
1362 // rdx: return address/pc that threw exception |
1361 __ restore_bcp(); // r13 points to call/send |
1363 __ restore_bcp(); // r13 points to call/send |
1362 __ restore_locals(); |
1364 __ restore_locals(); |
|
1365 __ reinit_heapbase(); // restore r12 as heapbase. |
1363 // Entry point for exceptions thrown within interpreter code |
1366 // Entry point for exceptions thrown within interpreter code |
1364 Interpreter::_throw_exception_entry = __ pc(); |
1367 Interpreter::_throw_exception_entry = __ pc(); |
1365 // expression stack is undefined here |
1368 // expression stack is undefined here |
1366 // rax: exception |
1369 // rax: exception |
1367 // r13: exception bcp |
1370 // r13: exception bcp |
1656 "entry must have been generated"); |
1659 "entry must have been generated"); |
1657 __ movq(r12, rsp); // remember sp |
1660 __ movq(r12, rsp); // remember sp |
1658 __ andq(rsp, -16); // align stack as required by ABI |
1661 __ andq(rsp, -16); // align stack as required by ABI |
1659 __ call(RuntimeAddress(Interpreter::trace_code(t->tos_in()))); |
1662 __ call(RuntimeAddress(Interpreter::trace_code(t->tos_in()))); |
1660 __ movq(rsp, r12); // restore sp |
1663 __ movq(rsp, r12); // restore sp |
|
1664 __ reinit_heapbase(); |
1661 } |
1665 } |
1662 |
1666 |
1663 |
1667 |
1664 void TemplateInterpreterGenerator::stop_interpreter_at() { |
1668 void TemplateInterpreterGenerator::stop_interpreter_at() { |
1665 Label L; |
1669 Label L; |