hotspot/src/cpu/sparc/vm/macroAssembler_sparc.inline.hpp
changeset 35086 bbf32241d851
parent 28915 66ed75a5c945
child 35090 1f5b6aa795d0
equal deleted inserted replaced
35085:839c8ba29724 35086:bbf32241d851
   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();