< prev index next >

src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp

Print this page




 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();
 437   ce->add_call_info_here(info());
 438   ce->verify_oop_map(info());
 439 
 440 #ifndef PRODUCT
 441   __ set((intptr_t)&Runtime1::_arraycopy_slowcase_cnt, O0);
 442   __ ld(O0, 0, O1);
 443   __ inc(O1);
 444   __ st(O1, 0, O0);
 445 #endif
 446 
 447   __ br(Assembler::always, false, Assembler::pt, _continuation);
 448   __ delayed()->nop();
 449 }
 450 
 451 
 452 ///////////////////////////////////////////////////////////////////////////////////
 453 #if INCLUDE_ALL_GCS




 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   if (ce->compilation()->bailed_out()) {
 435     return; // CodeCache is full
 436   }
 437 
 438   __ call(SharedRuntime::get_resolve_static_call_stub(), relocInfo::static_call_type);
 439   __ delayed()->nop();
 440   ce->add_call_info_here(info());
 441   ce->verify_oop_map(info());
 442 
 443 #ifndef PRODUCT
 444   __ set((intptr_t)&Runtime1::_arraycopy_slowcase_cnt, O0);
 445   __ ld(O0, 0, O1);
 446   __ inc(O1);
 447   __ st(O1, 0, O0);
 448 #endif
 449 
 450   __ br(Assembler::always, false, Assembler::pt, _continuation);
 451   __ delayed()->nop();
 452 }
 453 
 454 
 455 ///////////////////////////////////////////////////////////////////////////////////
 456 #if INCLUDE_ALL_GCS


< prev index next >