diff -r 09f8c0c1f722 -r fb7da68ac0c3 src/cpu/mips/vm/mips_64.ad --- a/src/cpu/mips/vm/mips_64.ad Wed Mar 08 08:57:26 2017 -0500 +++ b/src/cpu/mips/vm/mips_64.ad Mon Mar 13 01:52:16 2017 -0400 @@ -682,7 +682,7 @@ // relocation entries for call stub, compiled java to interpreter uint reloc_java_to_interp() { - return 12; // in emit_java_to_interp + in Java_Static_Call + return 16; // in emit_java_to_interp + in Java_Static_Call } bool Matcher::is_short_branch_offset(int rule, int br_size, int offset) { @@ -871,8 +871,8 @@ //lui //ori - //dsll - //ori + //nop + //nop //jalr //nop @@ -953,25 +953,26 @@ int MachCallStaticJavaNode::ret_addr_offset() { //lui //ori + //nop + //nop //jalr //nop - return 16; + return 24; } int MachCallDynamicJavaNode::ret_addr_offset() { - assert(NativeCall::instruction_size == 24, "in MachCallDynamicJavaNode::ret_addr_offset"); - //The value ought to be 4 + 16 bytes. //lui IC_Klass, //ori IC_Klass, //dsll IC_Klass //ori IC_Klass + //lui T9 //ori T9 - //dsll T9 - //ori T9 + //nop + //nop //jalr T9 //nop - return 4 * 4 + NativeCall::instruction_size; + return 4 * 4 + 4 * 6; } //============================================================================= @@ -3394,7 +3395,7 @@ __ relocate(relocInfo::static_call_type); } - __ patchable_call32(T9, $meth$$method); + __ patchable_set48(T9, $meth$$method); __ jalr(T9); __ nop(); if( _method ) { // Emit stub for static call @@ -12063,7 +12064,7 @@ ins_encode( Java_Static_Call( meth ) ); ins_pipe( pipe_slow ); ins_pc_relative(1); - ins_alignment(8); + ins_alignment(16); %} // Call Java Dynamic Instruction @@ -12074,7 +12075,7 @@ effect(USE meth); ins_cost(300); - format %{"MOV IC_Klass, (oop)-1 @ CallDynamicJavaDirect\n\t" + format %{"MOV IC_Klass, (oop)-1\n\t" "CallDynamic @ CallDynamicJavaDirect" %} ins_encode( Java_Dynamic_Call( meth ) ); ins_pipe( pipe_slow );