comparison src/cpu/x86/vm/templateInterpreter_x86_64.cpp @ 113:ba764ed4b6f2

6420645: Create a vm that uses compressed oops for up to 32gb heapsizes Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
author coleenp
date Sun, 13 Apr 2008 17:43:42 -0400
parents a61af66fc99e
children d1605aabd0a1
comparison
equal deleted inserted replaced
110:a49a647afe9a 113:ba764ed4b6f2
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;