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




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




 407   __ ld(O0, 0, O1);
 408   __ inc(O1);
 409   __ st(O1, 0, O0);
 410 #endif
 411 
 412   __ br(Assembler::always, false, Assembler::pt, _continuation);
 413   __ delayed()->nop();
 414 }
 415 
 416 
 417 ///////////////////////////////////////////////////////////////////////////////////
 418 #ifndef SERIALGC
 419 
 420 void G1PreBarrierStub::emit_code(LIR_Assembler* ce) {
 421   __ bind(_entry);
 422 
 423   assert(pre_val()->is_register(), "Precondition.");
 424 
 425   Register pre_val_reg = pre_val()->as_register();
 426 
 427   ce->mem2reg(addr(), pre_val(), T_OBJECT, patch_code(), info(), false /*unaligned*/, false /*wide*/);
 428   if (__ is_in_wdisp16_range(_continuation)) {
 429     __ br_on_reg_cond(Assembler::rc_z, /*annul*/false, Assembler::pt,
 430                       pre_val_reg, _continuation);
 431   } else {
 432     __ cmp(pre_val_reg, G0);
 433     __ brx(Assembler::equal, false, Assembler::pn, _continuation);
 434   }
 435   __ delayed()->nop();
 436 
 437   __ call(Runtime1::entry_for(Runtime1::Runtime1::g1_pre_barrier_slow_id));
 438   __ delayed()->mov(pre_val_reg, G4);
 439   __ br(Assembler::always, false, Assembler::pt, _continuation);
 440   __ delayed()->nop();
 441 
 442 }
 443 
 444 jbyte* G1PostBarrierStub::_byte_map_base = NULL;
 445 
 446 jbyte* G1PostBarrierStub::byte_map_base_slow() {
 447   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