src/cpu/x86/vm/assembler_x86.cpp

Print this page

        

*** 5210,5228 **** } void MacroAssembler::reset_last_Java_frame(bool clear_fp, bool clear_pc) { // we must set sp to zero to clear frame ! movptr(Address(r15_thread, JavaThread::last_Java_sp_offset()), (int32_t)NULL_WORD); // must clear fp, so that compiled frames are not confused; it is // possible that we need it only for debugging if (clear_fp) { ! movptr(Address(r15_thread, JavaThread::last_Java_fp_offset()), (int32_t)NULL_WORD); } if (clear_pc) { ! movptr(Address(r15_thread, JavaThread::last_Java_pc_offset()), (int32_t)NULL_WORD); } } void MacroAssembler::set_last_Java_frame(Register last_java_sp, Register last_java_fp, --- 5210,5228 ---- } void MacroAssembler::reset_last_Java_frame(bool clear_fp, bool clear_pc) { // we must set sp to zero to clear frame ! movptr(Address(r15_thread, JavaThread::last_Java_sp_offset()), NULL_WORD); // must clear fp, so that compiled frames are not confused; it is // possible that we need it only for debugging if (clear_fp) { ! movptr(Address(r15_thread, JavaThread::last_Java_fp_offset()), NULL_WORD); } if (clear_pc) { ! movptr(Address(r15_thread, JavaThread::last_Java_pc_offset()), NULL_WORD); } } void MacroAssembler::set_last_Java_frame(Register last_java_sp, Register last_java_fp,
*** 5668,5678 **** } // get oop result if there is one and reset the value in the thread if (oop_result->is_valid()) { movptr(oop_result, Address(java_thread, JavaThread::vm_result_offset())); ! movptr(Address(java_thread, JavaThread::vm_result_offset()), (int32_t)NULL_WORD); verify_oop(oop_result, "broken oop in call_VM_base"); } } void MacroAssembler::call_VM_helper(Register oop_result, address entry_point, int number_of_arguments, bool check_exceptions) { --- 5668,5678 ---- } // get oop result if there is one and reset the value in the thread if (oop_result->is_valid()) { movptr(oop_result, Address(java_thread, JavaThread::vm_result_offset())); ! movptr(Address(java_thread, JavaThread::vm_result_offset()), NULL_WORD); verify_oop(oop_result, "broken oop in call_VM_base"); } } void MacroAssembler::call_VM_helper(Register oop_result, address entry_point, int number_of_arguments, bool check_exceptions) {
*** 6424,6440 **** if (!java_thread->is_valid()) { java_thread = rdi; get_thread(java_thread); } // we must set sp to zero to clear frame ! movptr(Address(java_thread, JavaThread::last_Java_sp_offset()), (int32_t)NULL_WORD); if (clear_fp) { ! movptr(Address(java_thread, JavaThread::last_Java_fp_offset()), (int32_t)NULL_WORD); } if (clear_pc) ! movptr(Address(java_thread, JavaThread::last_Java_pc_offset()), (int32_t)NULL_WORD); } void MacroAssembler::restore_rax(Register tmp) { if (tmp == noreg) pop(rax); --- 6424,6440 ---- if (!java_thread->is_valid()) { java_thread = rdi; get_thread(java_thread); } // we must set sp to zero to clear frame ! movptr(Address(java_thread, JavaThread::last_Java_sp_offset()), NULL_WORD); if (clear_fp) { ! movptr(Address(java_thread, JavaThread::last_Java_fp_offset()), NULL_WORD); } if (clear_pc) ! movptr(Address(java_thread, JavaThread::last_Java_pc_offset()), NULL_WORD); } void MacroAssembler::restore_rax(Register tmp) { if (tmp == noreg) pop(rax);