397 assert(_patch_info_offset == (patch_info_pc - __ pc()), "must not change");
398 ce->add_call_info_here(_info);
399 __ br(Assembler::always, false, Assembler::pt, _patch_site_entry);
400 __ delayed()->nop();
401 if (_id == load_klass_id || _id == load_mirror_id || _id == load_appendix_id) {
402 CodeSection* cs = __ code_section();
403 address pc = (address)_pc_start;
404 RelocIterator iter(cs, pc, pc + 1);
405 relocInfo::change_reloc_info_for_address(&iter, (address) pc, reloc_type, relocInfo::none);
406
407 pc = (address)(_pc_start + NativeMovConstReg::add_offset);
408 RelocIterator iter2(cs, pc, pc+1);
409 relocInfo::change_reloc_info_for_address(&iter2, (address) pc, reloc_type, relocInfo::none);
410 }
411
412 }
413
414
415 void DeoptimizeStub::emit_code(LIR_Assembler* ce) {
416 __ bind(_entry);
417 __ call(Runtime1::entry_for(Runtime1::deoptimize_id), relocInfo::runtime_call_type);
418 __ delayed()->nop();
419 ce->add_call_info_here(_info);
420 DEBUG_ONLY(__ should_not_reach_here());
421 }
422
423
424 void ArrayCopyStub::emit_code(LIR_Assembler* ce) {
425 //---------------slow case: call to native-----------------
426 __ bind(_entry);
427 __ mov(src()->as_register(), O0);
428 __ mov(src_pos()->as_register(), O1);
429 __ mov(dst()->as_register(), O2);
430 __ mov(dst_pos()->as_register(), O3);
431 __ mov(length()->as_register(), O4);
432
433 ce->emit_static_call_stub();
434
435 __ call(SharedRuntime::get_resolve_static_call_stub(), relocInfo::static_call_type);
436 __ delayed()->nop();
|
397 assert(_patch_info_offset == (patch_info_pc - __ pc()), "must not change");
398 ce->add_call_info_here(_info);
399 __ br(Assembler::always, false, Assembler::pt, _patch_site_entry);
400 __ delayed()->nop();
401 if (_id == load_klass_id || _id == load_mirror_id || _id == load_appendix_id) {
402 CodeSection* cs = __ code_section();
403 address pc = (address)_pc_start;
404 RelocIterator iter(cs, pc, pc + 1);
405 relocInfo::change_reloc_info_for_address(&iter, (address) pc, reloc_type, relocInfo::none);
406
407 pc = (address)(_pc_start + NativeMovConstReg::add_offset);
408 RelocIterator iter2(cs, pc, pc+1);
409 relocInfo::change_reloc_info_for_address(&iter2, (address) pc, reloc_type, relocInfo::none);
410 }
411
412 }
413
414
415 void DeoptimizeStub::emit_code(LIR_Assembler* ce) {
416 __ bind(_entry);
417 __ set(_trap_request, G4);
418 __ call(Runtime1::entry_for(Runtime1::deoptimize_id), relocInfo::runtime_call_type);
419 __ delayed()->nop();
420 ce->add_call_info_here(_info);
421 DEBUG_ONLY(__ should_not_reach_here());
422 }
423
424
425 void ArrayCopyStub::emit_code(LIR_Assembler* ce) {
426 //---------------slow case: call to native-----------------
427 __ bind(_entry);
428 __ mov(src()->as_register(), O0);
429 __ mov(src_pos()->as_register(), O1);
430 __ mov(dst()->as_register(), O2);
431 __ mov(dst_pos()->as_register(), O3);
432 __ mov(length()->as_register(), O4);
433
434 ce->emit_static_call_stub();
435
436 __ call(SharedRuntime::get_resolve_static_call_stub(), relocInfo::static_call_type);
437 __ delayed()->nop();
|