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




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


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