#6126 Fixed ForceEarlyReturn error

Fri, 13 Oct 2017 11:29:53 +0800

author
wangxue
date
Fri, 13 Oct 2017 11:29:53 +0800
changeset 7995
67882e9d8b35
parent 7994
04ff2f6cd0eb
child 7996
2102a5402a07

#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

mercurial