7013812: C1: deopt blob too far from patching stub
Summary: Use long jumps to get from patching stubs to deopt blob
Reviewed-by: kvn, never
--- a/hotspot/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp Thu Jan 20 13:57:12 2011 -0800
+++ b/hotspot/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp Fri Jan 21 00:01:41 2011 -0800
@@ -343,9 +343,10 @@
// returned.
restore_live_registers(sasm);
- __ restore();
- __ br(Assembler::always, false, Assembler::pt, deopt_blob->unpack_with_reexecution(), relocInfo::runtime_call_type);
- __ delayed()->nop();
+
+ AddressLiteral dest(deopt_blob->unpack_with_reexecution());
+ __ jump_to(dest, O0);
+ __ delayed()->restore();
__ bind(no_deopt);
restore_live_registers(sasm);