src/cpu/mips/vm/templateInterpreter_mips_64.cpp

changeset 9705
0b27fc8adf1b
parent 9645
ac996ba07f9d
child 9760
8b305ff8f6b6
     1.1 --- a/src/cpu/mips/vm/templateInterpreter_mips_64.cpp	Wed Sep 11 12:40:06 2019 +0800
     1.2 +++ b/src/cpu/mips/vm/templateInterpreter_mips_64.cpp	Fri Sep 27 11:31:13 2019 +0800
     1.3 @@ -1303,19 +1303,16 @@
     1.4    __ sw(R0, t, JNIHandleBlock::top_offset_in_bytes());
     1.5  
     1.6    // If result was an oop then unbox and save it in the frame
     1.7 -  { Label L;
     1.8 -    Label no_oop, store_result;
     1.9 +  {
    1.10 +    Label no_oop;
    1.11      //FIXME, addi only support 16-bit imeditate
    1.12      __ ld(AT, FP, frame::interpreter_frame_result_handler_offset*wordSize);
    1.13      __ li(T0, AbstractInterpreter::result_handler(T_OBJECT));
    1.14      __ bne(AT, T0, no_oop);
    1.15      __ delayed()->nop();
    1.16      __ pop(ltos);
    1.17 -    __ beq(V0, R0, store_result);
    1.18 -    __ delayed()->nop();
    1.19 -    // unbox
    1.20 -    __ ld(V0, V0, 0);
    1.21 -    __ bind(store_result);
    1.22 +    // Unbox oop result, e.g. JNIHandles::resolve value.
    1.23 +    __ resolve_jobject(V0, thread, T9);
    1.24      __ sd(V0, FP, (frame::interpreter_frame_oop_temp_offset)*wordSize);
    1.25      // keep stack depth as expected by pushing oop which will eventually be discarded
    1.26      __ push(ltos);

mercurial