# HG changeset patch # User qpzhang # Date 1553159030 -28800 # Thu Mar 21 17:03:50 2019 +0800 # Node ID c4cf7234e35b817b28219cc6491917c6e0b2a2c7 # Parent 488ad5f23093e86eee7b6a070003ff248b6b3004 8221220: AArch64: Add StoreStore membar explicitly for Volatile Writes in TemplateTable diff --git a/src/cpu/aarch64/vm/templateTable_aarch64.cpp b/src/cpu/aarch64/vm/templateTable_aarch64.cpp --- a/src/cpu/aarch64/vm/templateTable_aarch64.cpp +++ b/src/cpu/aarch64/vm/templateTable_aarch64.cpp @@ -1461,7 +1461,7 @@ { transition(itos, itos); __ negw(r0, r0); - + } void TemplateTable::lneg() @@ -1685,7 +1685,7 @@ __ br(Assembler::HI, done); // install 0 for EQ otherwise ~0 __ csinv(r0, zr, zr, Assembler::EQ); - + } __ bind(done); } @@ -1737,7 +1737,7 @@ } // Normal (non-jsr) branch handling - + // Adjust the bcp by the displacement in r2 __ add(rbcp, rbcp, r2); @@ -2827,7 +2827,7 @@ { Label notVolatile; __ tbz(r5, ConstantPoolCacheEntry::is_volatile_shift, notVolatile); - __ membar(MacroAssembler::StoreLoad); + __ membar(MacroAssembler::StoreLoad | MacroAssembler::StoreStore); __ bind(notVolatile); } } @@ -2966,7 +2966,7 @@ { Label notVolatile; __ tbz(r3, ConstantPoolCacheEntry::is_volatile_shift, notVolatile); - __ membar(MacroAssembler::StoreLoad); + __ membar(MacroAssembler::StoreLoad | MacroAssembler::StoreStore); __ bind(notVolatile); } }