8079315: UseCondCardMark broken in conjunction with CMS precleaning on x86

Add the necessary StoreLoad barrier in interpreter, C1 and C2 for x86

Reviewed-by: tschatzl
This commit is contained in:
Andrew Haley 2015-06-19 09:41:50 +02:00
parent 6cb9f920e1
commit b387838cea
3 changed files with 11 additions and 0 deletions

View file

@ -1619,6 +1619,9 @@ void LIRGenerator::CardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc*
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();