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

src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp

Print this page




 360   }
 361   __ call(target, relocInfo::runtime_call_type);
 362   __ delayed()->nop();
 363   assert(_patch_info_offset == (patch_info_pc - __ pc()), "must not change");
 364   ce->add_call_info_here(_info);
 365   __ br(Assembler::always, false, Assembler::pt, _patch_site_entry);
 366   __ delayed()->nop();
 367   if (_id == load_klass_id) {
 368     CodeSection* cs = __ code_section();
 369     address pc = (address)_pc_start;
 370     RelocIterator iter(cs, pc, pc + 1);
 371     relocInfo::change_reloc_info_for_address(&iter, (address) pc, relocInfo::oop_type, relocInfo::none);
 372 
 373     pc = (address)(_pc_start + NativeMovConstReg::add_offset);
 374     RelocIterator iter2(cs, pc, pc+1);
 375     relocInfo::change_reloc_info_for_address(&iter2, (address) pc, relocInfo::oop_type, relocInfo::none);
 376   }
 377 
 378 }
 379 









 380 void ArrayCopyStub::emit_code(LIR_Assembler* ce) {
 381   //---------------slow case: call to native-----------------
 382   __ bind(_entry);
 383   __ mov(src()->as_register(),     O0);
 384   __ mov(src_pos()->as_register(), O1);
 385   __ mov(dst()->as_register(),     O2);
 386   __ mov(dst_pos()->as_register(), O3);
 387   __ mov(length()->as_register(),  O4);
 388 
 389   ce->emit_static_call_stub();
 390 
 391   __ call(SharedRuntime::get_resolve_static_call_stub(), relocInfo::static_call_type);
 392   __ delayed()->nop();
 393   ce->add_call_info_here(info());
 394   ce->verify_oop_map(info());
 395 
 396 #ifndef PRODUCT
 397   __ set((intptr_t)&Runtime1::_arraycopy_slowcase_cnt, O0);
 398   __ ld(O0, 0, O1);
 399   __ inc(O1);




 360   }
 361   __ call(target, relocInfo::runtime_call_type);
 362   __ delayed()->nop();
 363   assert(_patch_info_offset == (patch_info_pc - __ pc()), "must not change");
 364   ce->add_call_info_here(_info);
 365   __ br(Assembler::always, false, Assembler::pt, _patch_site_entry);
 366   __ delayed()->nop();
 367   if (_id == load_klass_id) {
 368     CodeSection* cs = __ code_section();
 369     address pc = (address)_pc_start;
 370     RelocIterator iter(cs, pc, pc + 1);
 371     relocInfo::change_reloc_info_for_address(&iter, (address) pc, relocInfo::oop_type, relocInfo::none);
 372 
 373     pc = (address)(_pc_start + NativeMovConstReg::add_offset);
 374     RelocIterator iter2(cs, pc, pc+1);
 375     relocInfo::change_reloc_info_for_address(&iter2, (address) pc, relocInfo::oop_type, relocInfo::none);
 376   }
 377 
 378 }
 379 
 380 
 381 void DeoptimizeStub::emit_code(LIR_Assembler* ce) {
 382   __ bind(_entry);
 383   __ call(SharedRuntime::deopt_blob()->unpack_with_reexecution());
 384   ce->add_call_info_here(_info);
 385   debug_only(__ should_not_reach_here());
 386 }
 387 
 388 
 389 void ArrayCopyStub::emit_code(LIR_Assembler* ce) {
 390   //---------------slow case: call to native-----------------
 391   __ bind(_entry);
 392   __ mov(src()->as_register(),     O0);
 393   __ mov(src_pos()->as_register(), O1);
 394   __ mov(dst()->as_register(),     O2);
 395   __ mov(dst_pos()->as_register(), O3);
 396   __ mov(length()->as_register(),  O4);
 397 
 398   ce->emit_static_call_stub();
 399 
 400   __ call(SharedRuntime::get_resolve_static_call_stub(), relocInfo::static_call_type);
 401   __ delayed()->nop();
 402   ce->add_call_info_here(info());
 403   ce->verify_oop_map(info());
 404 
 405 #ifndef PRODUCT
 406   __ set((intptr_t)&Runtime1::_arraycopy_slowcase_cnt, O0);
 407   __ ld(O0, 0, O1);
 408   __ inc(O1);


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