< prev index next >
src/share/vm/c1/c1_LIRGenerator.cpp
Print this page
rev 8303 : 8079315: UseCondCardMark broken in conjunction with CMS precleaning
Summary: Insert StoreLoad barriers in CondCardMark sequence
Reviewed-by: kvn
@@ -1615,10 +1615,13 @@
}
LIR_Opr dirty = LIR_OprFact::intConst(CardTableModRefBS::dirty_card_val());
if (UseCondCardMark) {
LIR_Opr cur_value = new_register(T_INT);
+ if (UseConcMarkSweepGC) {
+ __ membar_storeload();
+ }
__ move(card_addr, cur_value);
LabelObj* L_already_dirty = new LabelObj();
__ cmp(lir_cond_equal, cur_value, dirty);
__ branch(lir_cond_equal, T_BYTE, L_already_dirty->label());
< prev index next >