Mercurial > hg > truffle
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(); |