hotspot/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp

Print this page
rev 611 : Merge


 390 
 391   ce->emit_static_call_stub();
 392 
 393   __ call(SharedRuntime::get_resolve_static_call_stub(), relocInfo::static_call_type);
 394   __ delayed()->nop();
 395   ce->add_call_info_here(info());
 396   ce->verify_oop_map(info());
 397 
 398 #ifndef PRODUCT
 399   __ set((intptr_t)&Runtime1::_arraycopy_slowcase_cnt, O0);
 400   __ ld(O0, 0, O1);
 401   __ inc(O1);
 402   __ st(O1, 0, O0);
 403 #endif
 404 
 405   __ br(Assembler::always, false, Assembler::pt, _continuation);
 406   __ delayed()->nop();
 407 }
 408 
 409 



















































 410 #undef __
 411 


 390 
 391   ce->emit_static_call_stub();
 392 
 393   __ call(SharedRuntime::get_resolve_static_call_stub(), relocInfo::static_call_type);
 394   __ delayed()->nop();
 395   ce->add_call_info_here(info());
 396   ce->verify_oop_map(info());
 397 
 398 #ifndef PRODUCT
 399   __ set((intptr_t)&Runtime1::_arraycopy_slowcase_cnt, O0);
 400   __ ld(O0, 0, O1);
 401   __ inc(O1);
 402   __ st(O1, 0, O0);
 403 #endif
 404 
 405   __ br(Assembler::always, false, Assembler::pt, _continuation);
 406   __ delayed()->nop();
 407 }
 408 
 409 
 410 ///////////////////////////////////////////////////////////////////////////////////
 411 #ifndef SERIALGC
 412 
 413 void G1PreBarrierStub::emit_code(LIR_Assembler* ce) {
 414   __ bind(_entry);
 415 
 416   assert(pre_val()->is_register(), "Precondition.");
 417 
 418   Register pre_val_reg = pre_val()->as_register();
 419 
 420   ce->mem2reg(addr(), pre_val(), T_OBJECT, patch_code(), info(), false);
 421   __ br_on_reg_cond(Assembler::rc_z, /*annul*/false, Assembler::pt,
 422                     pre_val_reg, _continuation);
 423   __ delayed()->nop();
 424 
 425   __ call(Runtime1::entry_for(Runtime1::Runtime1::g1_pre_barrier_slow_id));
 426   __ delayed()->mov(pre_val_reg, G4);
 427   __ br(Assembler::always, false, Assembler::pt, _continuation);
 428   __ delayed()->nop();
 429 
 430 }
 431 
 432 jbyte* G1PostBarrierStub::_byte_map_base = NULL;
 433 
 434 jbyte* G1PostBarrierStub::byte_map_base_slow() {
 435   BarrierSet* bs = Universe::heap()->barrier_set();
 436   assert(bs->is_a(BarrierSet::G1SATBCTLogging),
 437          "Must be if we're using this.");
 438   return ((G1SATBCardTableModRefBS*)bs)->byte_map_base;
 439 }
 440 
 441 void G1PostBarrierStub::emit_code(LIR_Assembler* ce) {
 442   __ bind(_entry);
 443 
 444   assert(addr()->is_register(), "Precondition.");
 445   assert(new_val()->is_register(), "Precondition.");
 446   Register addr_reg = addr()->as_pointer_register();
 447   Register new_val_reg = new_val()->as_register();
 448   __ br_on_reg_cond(Assembler::rc_z, /*annul*/false, Assembler::pt,
 449                     new_val_reg, _continuation);
 450   __ delayed()->nop();
 451 
 452   __ call(Runtime1::entry_for(Runtime1::Runtime1::g1_post_barrier_slow_id));
 453   __ delayed()->mov(addr_reg, G4);
 454   __ br(Assembler::always, false, Assembler::pt, _continuation);
 455   __ delayed()->nop();
 456 }
 457 
 458 #endif // SERIALGC
 459 ///////////////////////////////////////////////////////////////////////////////////
 460 
 461 #undef __
 462