2240 } 2241 2242 // Wouldn't need if AddressLiteral version had new name 2243 void MacroAssembler::call(Label& L, relocInfo::relocType rtype) { 2244 Assembler::call(L, rtype); 2245 } 2246 2247 void MacroAssembler::call(Register entry) { 2248 Assembler::call(entry); 2249 } 2250 2251 void MacroAssembler::call(AddressLiteral entry) { 2252 if (reachable(entry)) { 2253 Assembler::call_literal(entry.target(), entry.rspec()); 2254 } else { 2255 lea(rscratch1, entry); 2256 Assembler::call(rscratch1); 2257 } 2258 } 2259 2260 void MacroAssembler::ic_call(address entry) { 2261 RelocationHolder rh = virtual_call_Relocation::spec(pc()); 2262 movptr(rax, (intptr_t)Universe::non_oop_word()); 2263 call(AddressLiteral(entry, rh)); 2264 } 2265 2266 // Implementation of call_VM versions 2267 2268 void MacroAssembler::call_VM(Register oop_result, 2269 address entry_point, 2270 bool check_exceptions) { 2271 Label C, E; 2272 call(C, relocInfo::none); 2273 jmp(E); 2274 2275 bind(C); 2276 call_VM_helper(oop_result, entry_point, 0, check_exceptions); 2277 ret(0); 2278 2279 bind(E); 2280 } 2281 | 2240 } 2241 2242 // Wouldn't need if AddressLiteral version had new name 2243 void MacroAssembler::call(Label& L, relocInfo::relocType rtype) { 2244 Assembler::call(L, rtype); 2245 } 2246 2247 void MacroAssembler::call(Register entry) { 2248 Assembler::call(entry); 2249 } 2250 2251 void MacroAssembler::call(AddressLiteral entry) { 2252 if (reachable(entry)) { 2253 Assembler::call_literal(entry.target(), entry.rspec()); 2254 } else { 2255 lea(rscratch1, entry); 2256 Assembler::call(rscratch1); 2257 } 2258 } 2259 2260 void MacroAssembler::ic_call(address entry, jint method_index) { 2261 RelocationHolder rh = virtual_call_Relocation::spec(pc(), method_index); 2262 movptr(rax, (intptr_t)Universe::non_oop_word()); 2263 call(AddressLiteral(entry, rh)); 2264 } 2265 2266 // Implementation of call_VM versions 2267 2268 void MacroAssembler::call_VM(Register oop_result, 2269 address entry_point, 2270 bool check_exceptions) { 2271 Label C, E; 2272 call(C, relocInfo::none); 2273 jmp(E); 2274 2275 bind(C); 2276 call_VM_helper(oop_result, entry_point, 0, check_exceptions); 2277 ret(0); 2278 2279 bind(E); 2280 } 2281 |