Fri, 13 Oct 2017 11:29:53 +0800
#6126 Fixed ForceEarlyReturn error
call_VM_leaf() handles the stack alignment when the assemble code calls c code.
Modified part of debugging code of call_VM_base() in macroAssembler_mips.cpp.
src/cpu/mips/vm/interp_masm_mips_64.cpp | file | annotate | diff | comparison | revisions | |
src/cpu/mips/vm/macroAssembler_mips.cpp | file | annotate | diff | comparison | revisions |
1.1 --- a/src/cpu/mips/vm/interp_masm_mips_64.cpp Tue Oct 17 12:58:25 2017 +0800 1.2 +++ b/src/cpu/mips/vm/interp_masm_mips_64.cpp Fri Oct 13 11:29:53 2017 +0800 1.3 @@ -262,8 +262,7 @@ 1.4 ld_ptr(tmp,java_thread, in_bytes(JavaThread::jvmti_thread_state_offset())); 1.5 lw(AT,tmp, in_bytes(JvmtiThreadState::earlyret_tos_offset())); 1.6 move(A0, AT); 1.7 - call(CAST_FROM_FN_PTR(address, Interpreter::remove_activation_early_entry), 1.8 - relocInfo::runtime_call_type); 1.9 + call_VM_leaf(CAST_FROM_FN_PTR(address, Interpreter::remove_activation_early_entry), A0); 1.10 jr(V0); 1.11 delayed()->nop(); 1.12 bind(L);
2.1 --- a/src/cpu/mips/vm/macroAssembler_mips.cpp Tue Oct 17 12:58:25 2017 +0800 2.2 +++ b/src/cpu/mips/vm/macroAssembler_mips.cpp Fri Oct 13 11:29:53 2017 +0800 2.3 @@ -1195,19 +1195,18 @@ 2.4 // may be overwritten by C code generated by an optimizing compiler); 2.5 // however can use the register value directly if it is callee saved. 2.6 #ifndef OPT_THREAD 2.7 - if (java_thread >=S0 && java_thread <=S7) { 2.8 + get_thread(java_thread); 2.9 +#else 2.10 #ifdef ASSERT 2.11 - { Label L; 2.12 - get_thread(AT); 2.13 - beq(java_thread, AT, L); 2.14 - delayed()->nop(); 2.15 - stop("MacroAssembler::call_VM_base: edi not callee saved?"); 2.16 - bind(L); 2.17 - } 2.18 + { 2.19 + Label L; 2.20 + get_thread(AT); 2.21 + beq(java_thread, AT, L); 2.22 + delayed()->nop(); 2.23 + stop("MacroAssembler::call_VM_base: edi not callee saved?"); 2.24 + bind(L); 2.25 + } 2.26 #endif 2.27 - } else { 2.28 - get_thread(java_thread); 2.29 - } 2.30 #endif 2.31 2.32 // discard thread and arguments