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

@ -3803,6 +3803,11 @@ void GraphKit::write_barrier_post(Node* oop_store,
Node* zero = __ ConI(0); // Dirty card value
BasicType bt = T_BYTE;
if (UseConcMarkSweepGC && UseCondCardMark) {
insert_mem_bar(Op_MemBarVolatile); // StoreLoad barrier
__ sync_kit(this);
}
if (UseCondCardMark) {
// The classic GC reference write barrier is typically implemented
// as a store into the global card mark table. Unfortunately