< prev index next >

src/cpu/x86/vm/c1_Runtime1_x86.cpp

Print this page
rev 8802 : G1 performance improvements: card batching, joining, sorting, prefetching and write barrier fence elision and simplification based on a global syncrhonization using handshakes piggybacking on thread-local safepoints.
rev 8803 : Implementation improvements to pass JPRT

*** 1772,1787 **** --- 1772,1792 ---- __ movptr(cardtable, (intptr_t)ct->byte_map_base); __ addptr(card_addr, cardtable); NOT_LP64(__ get_thread(thread);) + if (G1ElideMembar) { + __ cmpb(Address(card_addr, 0), (int)CardTableModRefBS::clean_card_val()); + __ jcc(Assembler::notEqual, done); + } else { __ cmpb(Address(card_addr, 0), (int)G1SATBCardTableModRefBS::g1_young_card_val()); __ jcc(Assembler::equal, done); __ membar(Assembler::Membar_mask_bits(Assembler::StoreLoad)); __ cmpb(Address(card_addr, 0), (int)CardTableModRefBS::dirty_card_val()); __ jcc(Assembler::equal, done); + } // storing region crossing non-NULL, card is clean. // dirty card and log. __ movb(Address(card_addr, 0), (int)CardTableModRefBS::dirty_card_val());
< prev index next >