src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7102657 Sdiff src/cpu/sparc/vm

src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp

Print this page




 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


src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File