350 assert(_patch_info_offset == (patch_info_pc - __ pc()), "must not change"); 351 ce->add_call_info_here(_info); 352 __ br(Assembler::always, false, Assembler::pt, _patch_site_entry); 353 __ delayed()->nop(); 354 if (_id == load_klass_id) { 355 CodeSection* cs = __ code_section(); 356 address pc = (address)_pc_start; 357 RelocIterator iter(cs, pc, pc + 1); 358 relocInfo::change_reloc_info_for_address(&iter, (address) pc, relocInfo::oop_type, relocInfo::none); 359 360 pc = (address)(_pc_start + NativeMovConstReg::add_offset); 361 RelocIterator iter2(cs, pc, pc+1); 362 relocInfo::change_reloc_info_for_address(&iter2, (address) pc, relocInfo::oop_type, relocInfo::none); 363 } 364 365 } 366 367 368 void DeoptimizeStub::emit_code(LIR_Assembler* ce) { 369 __ bind(_entry); 370 __ call(SharedRuntime::deopt_blob()->unpack_with_reexecution()); 371 __ delayed()->nop(); 372 ce->add_call_info_here(_info); 373 debug_only(__ should_not_reach_here()); 374 } 375 376 377 void ArrayCopyStub::emit_code(LIR_Assembler* ce) { 378 //---------------slow case: call to native----------------- 379 __ bind(_entry); 380 __ mov(src()->as_register(), O0); 381 __ mov(src_pos()->as_register(), O1); 382 __ mov(dst()->as_register(), O2); 383 __ mov(dst_pos()->as_register(), O3); 384 __ mov(length()->as_register(), O4); 385 386 ce->emit_static_call_stub(); 387 388 __ call(SharedRuntime::get_resolve_static_call_stub(), relocInfo::static_call_type); 389 __ delayed()->nop(); 390 ce->add_call_info_here(info()); 391 ce->verify_oop_map(info()); 392 393 #ifndef PRODUCT | 350 assert(_patch_info_offset == (patch_info_pc - __ pc()), "must not change"); 351 ce->add_call_info_here(_info); 352 __ br(Assembler::always, false, Assembler::pt, _patch_site_entry); 353 __ delayed()->nop(); 354 if (_id == load_klass_id) { 355 CodeSection* cs = __ code_section(); 356 address pc = (address)_pc_start; 357 RelocIterator iter(cs, pc, pc + 1); 358 relocInfo::change_reloc_info_for_address(&iter, (address) pc, relocInfo::oop_type, relocInfo::none); 359 360 pc = (address)(_pc_start + NativeMovConstReg::add_offset); 361 RelocIterator iter2(cs, pc, pc+1); 362 relocInfo::change_reloc_info_for_address(&iter2, (address) pc, relocInfo::oop_type, relocInfo::none); 363 } 364 365 } 366 367 368 void DeoptimizeStub::emit_code(LIR_Assembler* ce) { 369 __ bind(_entry); 370 __ call(Runtime1::entry_for(Runtime1::deoptimize_id), relocInfo::runtime_call_type); 371 __ delayed()->nop(); 372 ce->add_call_info_here(_info); 373 DEBUG_ONLY(__ should_not_reach_here()); 374 } 375 376 377 void ArrayCopyStub::emit_code(LIR_Assembler* ce) { 378 //---------------slow case: call to native----------------- 379 __ bind(_entry); 380 __ mov(src()->as_register(), O0); 381 __ mov(src_pos()->as_register(), O1); 382 __ mov(dst()->as_register(), O2); 383 __ mov(dst_pos()->as_register(), O3); 384 __ mov(length()->as_register(), O4); 385 386 ce->emit_static_call_stub(); 387 388 __ call(SharedRuntime::get_resolve_static_call_stub(), relocInfo::static_call_type); 389 __ delayed()->nop(); 390 ce->add_call_info_here(info()); 391 ce->verify_oop_map(info()); 392 393 #ifndef PRODUCT |