--- a/hotspot/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Sat Feb 20 15:15:35 2016 +0000
+++ b/hotspot/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Sat Mar 05 22:22:37 2016 +0800
@@ -1565,6 +1565,7 @@
Label retry_load, nope;
// flush and load exclusive from the memory location
// and fail if it is not what we expect
+ __ prfm(Address(addr), PSTL1STRM);
__ bind(retry_load);
__ ldaxrw(rscratch1, addr);
__ cmpw(rscratch1, cmpval);
@@ -1590,6 +1591,7 @@
Label retry_load, nope;
// flush and load exclusive from the memory location
// and fail if it is not what we expect
+ __ prfm(Address(addr), PSTL1STRM);
__ bind(retry_load);
__ ldaxr(rscratch1, addr);
__ cmp(rscratch1, cmpval);
@@ -3170,6 +3172,7 @@
}
Label again;
__ lea(tmp, addr);
+ __ prfm(Address(tmp), PSTL1STRM);
__ bind(again);
(_masm->*lda)(dst, tmp);
(_masm->*add)(rscratch1, dst, inc);
@@ -3189,6 +3192,7 @@
assert_different_registers(obj, addr.base(), tmp, rscratch2, dst);
Label again;
__ lea(tmp, addr);
+ __ prfm(Address(tmp), PSTL1STRM);
__ bind(again);
(_masm->*lda)(dst, tmp);
(_masm->*stl)(rscratch2, obj, tmp);