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

src/cpu/x86/vm/c1_CodeStubs_x86.cpp

Print this page




 456 
 457 #ifndef PRODUCT
 458   __ incrementl(ExternalAddress((address)&Runtime1::_arraycopy_slowcase_cnt));
 459 #endif
 460 
 461   __ jmp(_continuation);
 462 }
 463 
 464 /////////////////////////////////////////////////////////////////////////////
 465 #ifndef SERIALGC
 466 
 467 void G1PreBarrierStub::emit_code(LIR_Assembler* ce) {
 468 
 469   // At this point we know that marking is in progress
 470 
 471   __ bind(_entry);
 472   assert(pre_val()->is_register(), "Precondition.");
 473 
 474   Register pre_val_reg = pre_val()->as_register();
 475 
 476   ce->mem2reg(addr(), pre_val(), T_OBJECT, patch_code(), info(), false);
 477 
 478   __ cmpptr(pre_val_reg, (int32_t) NULL_WORD);
 479   __ jcc(Assembler::equal, _continuation);
 480   ce->store_parameter(pre_val()->as_register(), 0);
 481   __ call(RuntimeAddress(Runtime1::entry_for(Runtime1::g1_pre_barrier_slow_id)));
 482   __ jmp(_continuation);
 483 
 484 }
 485 
 486 jbyte* G1PostBarrierStub::_byte_map_base = NULL;
 487 
 488 jbyte* G1PostBarrierStub::byte_map_base_slow() {
 489   BarrierSet* bs = Universe::heap()->barrier_set();
 490   assert(bs->is_a(BarrierSet::G1SATBCTLogging),
 491          "Must be if we're using this.");
 492   return ((G1SATBCardTableModRefBS*)bs)->byte_map_base;
 493 }
 494 
 495 void G1PostBarrierStub::emit_code(LIR_Assembler* ce) {
 496   __ bind(_entry);


 456 
 457 #ifndef PRODUCT
 458   __ incrementl(ExternalAddress((address)&Runtime1::_arraycopy_slowcase_cnt));
 459 #endif
 460 
 461   __ jmp(_continuation);
 462 }
 463 
 464 /////////////////////////////////////////////////////////////////////////////
 465 #ifndef SERIALGC
 466 
 467 void G1PreBarrierStub::emit_code(LIR_Assembler* ce) {
 468 
 469   // At this point we know that marking is in progress
 470 
 471   __ bind(_entry);
 472   assert(pre_val()->is_register(), "Precondition.");
 473 
 474   Register pre_val_reg = pre_val()->as_register();
 475 
 476   ce->mem2reg(addr(), pre_val(), T_OBJECT, patch_code(), info(), false /*unaligned*/, false /*wide*/);
 477 
 478   __ cmpptr(pre_val_reg, (int32_t) NULL_WORD);
 479   __ jcc(Assembler::equal, _continuation);
 480   ce->store_parameter(pre_val()->as_register(), 0);
 481   __ call(RuntimeAddress(Runtime1::entry_for(Runtime1::g1_pre_barrier_slow_id)));
 482   __ jmp(_continuation);
 483 
 484 }
 485 
 486 jbyte* G1PostBarrierStub::_byte_map_base = NULL;
 487 
 488 jbyte* G1PostBarrierStub::byte_map_base_slow() {
 489   BarrierSet* bs = Universe::heap()->barrier_set();
 490   assert(bs->is_a(BarrierSet::G1SATBCTLogging),
 491          "Must be if we're using this.");
 492   return ((G1SATBCardTableModRefBS*)bs)->byte_map_base;
 493 }
 494 
 495 void G1PostBarrierStub::emit_code(LIR_Assembler* ce) {
 496   __ bind(_entry);
src/cpu/x86/vm/c1_CodeStubs_x86.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File