7198084: NPG: distance is too big for short branches in test_invocation_counter_for_mdp()
authorkvn
Thu, 27 Sep 2012 15:49:48 -0700
changeset 13896 0a77deee915f
parent 13895 f6dfe4123709
child 13897 4d2ca6fb1285
7198084: NPG: distance is too big for short branches in test_invocation_counter_for_mdp() Summary: use long branches in test_invocation_counter_for_mdp() Reviewed-by: twisti
hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp
--- a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp	Thu Sep 27 09:38:42 2012 -0700
+++ b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp	Thu Sep 27 15:49:48 2012 -0700
@@ -1395,12 +1395,17 @@
   AddressLiteral profile_limit((address) &InvocationCounter::InterpreterProfileLimit);
   sethi(profile_limit, Rtmp);
   ld(Rtmp, profile_limit.low10(), Rtmp);
-  cmp_and_br_short(invocation_count, Rtmp, Assembler::lessUnsigned, Assembler::pn, profile_continue);
+  cmp(invocation_count, Rtmp);
+  // Use long branches because call_VM() code and following code generated by
+  // test_backedge_count_for_osr() is large in debug VM.
+  br(Assembler::lessUnsigned, false, Assembler::pn, profile_continue);
+  delayed()->nop();
 
   // Build it now.
   call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::profile_method));
   set_method_data_pointer_for_bcp();
-  ba_short(profile_continue);
+  ba(profile_continue);
+  delayed()->nop();
   bind(done);
 }