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

src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp

Print this page




 417   __ ld(O0, 0, O1);
 418   __ inc(O1);
 419   __ st(O1, 0, O0);
 420 #endif
 421 
 422   __ br(Assembler::always, false, Assembler::pt, _continuation);
 423   __ delayed()->nop();
 424 }
 425 
 426 
 427 ///////////////////////////////////////////////////////////////////////////////////
 428 #ifndef SERIALGC
 429 
 430 void G1PreBarrierStub::emit_code(LIR_Assembler* ce) {
 431   __ bind(_entry);
 432 
 433   assert(pre_val()->is_register(), "Precondition.");
 434 
 435   Register pre_val_reg = pre_val()->as_register();
 436 
 437   ce->mem2reg(addr(), pre_val(), T_OBJECT, patch_code(), info(), false);
 438   if (__ is_in_wdisp16_range(_continuation)) {
 439     __ br_on_reg_cond(Assembler::rc_z, /*annul*/false, Assembler::pt,
 440                       pre_val_reg, _continuation);
 441   } else {
 442     __ cmp(pre_val_reg, G0);
 443     __ brx(Assembler::equal, false, Assembler::pn, _continuation);
 444   }
 445   __ delayed()->nop();
 446 
 447   __ call(Runtime1::entry_for(Runtime1::Runtime1::g1_pre_barrier_slow_id));
 448   __ delayed()->mov(pre_val_reg, G4);
 449   __ br(Assembler::always, false, Assembler::pt, _continuation);
 450   __ delayed()->nop();
 451 
 452 }
 453 
 454 jbyte* G1PostBarrierStub::_byte_map_base = NULL;
 455 
 456 jbyte* G1PostBarrierStub::byte_map_base_slow() {
 457   BarrierSet* bs = Universe::heap()->barrier_set();




 417   __ ld(O0, 0, O1);
 418   __ inc(O1);
 419   __ st(O1, 0, O0);
 420 #endif
 421 
 422   __ br(Assembler::always, false, Assembler::pt, _continuation);
 423   __ delayed()->nop();
 424 }
 425 
 426 
 427 ///////////////////////////////////////////////////////////////////////////////////
 428 #ifndef SERIALGC
 429 
 430 void G1PreBarrierStub::emit_code(LIR_Assembler* ce) {
 431   __ bind(_entry);
 432 
 433   assert(pre_val()->is_register(), "Precondition.");
 434 
 435   Register pre_val_reg = pre_val()->as_register();
 436 
 437   ce->mem2reg(addr(), pre_val(), T_OBJECT, patch_code(), info(), false /*wide*/, false /*unaligned*/);
 438   if (__ is_in_wdisp16_range(_continuation)) {
 439     __ br_on_reg_cond(Assembler::rc_z, /*annul*/false, Assembler::pt,
 440                       pre_val_reg, _continuation);
 441   } else {
 442     __ cmp(pre_val_reg, G0);
 443     __ brx(Assembler::equal, false, Assembler::pn, _continuation);
 444   }
 445   __ delayed()->nop();
 446 
 447   __ call(Runtime1::entry_for(Runtime1::Runtime1::g1_pre_barrier_slow_id));
 448   __ delayed()->mov(pre_val_reg, G4);
 449   __ br(Assembler::always, false, Assembler::pt, _continuation);
 450   __ delayed()->nop();
 451 
 452 }
 453 
 454 jbyte* G1PostBarrierStub::_byte_map_base = NULL;
 455 
 456 jbyte* G1PostBarrierStub::byte_map_base_slow() {
 457   BarrierSet* bs = Universe::heap()->barrier_set();


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