comparison src/cpu/sparc/vm/c1_Runtime1_sparc.cpp @ 2156:85330eaa15ee

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
author iveresov
date Fri, 21 Jan 2011 00:01:41 -0800
parents 5577848f5923
children 635b068a7224
comparison
equal deleted inserted replaced
2153:377371490991 2156:85330eaa15ee
341 // return to the deoptimization handler entry for unpacking and rexecute 341 // return to the deoptimization handler entry for unpacking and rexecute
342 // if we simply returned the we'd deopt as if any call we patched had just 342 // if we simply returned the we'd deopt as if any call we patched had just
343 // returned. 343 // returned.
344 344
345 restore_live_registers(sasm); 345 restore_live_registers(sasm);
346 __ restore(); 346
347 __ br(Assembler::always, false, Assembler::pt, deopt_blob->unpack_with_reexecution(), relocInfo::runtime_call_type); 347 AddressLiteral dest(deopt_blob->unpack_with_reexecution());
348 __ delayed()->nop(); 348 __ jump_to(dest, O0);
349 __ delayed()->restore();
349 350
350 __ bind(no_deopt); 351 __ bind(no_deopt);
351 restore_live_registers(sasm); 352 restore_live_registers(sasm);
352 __ ret(); 353 __ ret();
353 __ delayed()->restore(); 354 __ delayed()->restore();