equal
deleted
inserted
replaced
296 |
296 |
297 // Call with a check to see if we need to deal with the added |
297 // Call with a check to see if we need to deal with the added |
298 // expense of relocation and if we overflow the displacement |
298 // expense of relocation and if we overflow the displacement |
299 // of the quick call instruction. |
299 // of the quick call instruction. |
300 inline void MacroAssembler::call( address d, relocInfo::relocType rt ) { |
300 inline void MacroAssembler::call( address d, relocInfo::relocType rt ) { |
|
301 MacroAssembler::call(d, Relocation::spec_simple(rt)); |
|
302 } |
|
303 |
|
304 inline void MacroAssembler::call( address d, RelocationHolder const& rspec ) { |
301 #ifdef _LP64 |
305 #ifdef _LP64 |
302 intptr_t disp; |
306 intptr_t disp; |
303 // NULL is ok because it will be relocated later. |
307 // NULL is ok because it will be relocated later. |
304 // Must change NULL to a reachable address in order to |
308 // Must change NULL to a reachable address in order to |
305 // pass asserts here and in wdisp. |
309 // pass asserts here and in wdisp. |
307 d = pc(); |
311 d = pc(); |
308 |
312 |
309 // Is this address within range of the call instruction? |
313 // Is this address within range of the call instruction? |
310 // If not, use the expensive instruction sequence |
314 // If not, use the expensive instruction sequence |
311 if (is_far_target(d)) { |
315 if (is_far_target(d)) { |
312 relocate(rt); |
316 relocate(rspec); |
313 AddressLiteral dest(d); |
317 AddressLiteral dest(d); |
314 jumpl_to(dest, O7, O7); |
318 jumpl_to(dest, O7, O7); |
315 } else { |
319 } else { |
316 Assembler::call(d, rt); |
320 Assembler::call(d, rspec); |
317 } |
321 } |
318 #else |
322 #else |
319 Assembler::call( d, rt ); |
323 Assembler::call( d, rspec ); |
320 #endif |
324 #endif |
321 } |
325 } |
322 |
326 |
323 inline void MacroAssembler::call( Label& L, relocInfo::relocType rt ) { |
327 inline void MacroAssembler::call( Label& L, relocInfo::relocType rt ) { |
324 insert_nop_after_cbcond(); |
328 insert_nop_after_cbcond(); |