Mercurial > hg > graal-compiler
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; |