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);