Mercurial > hg > icedtea7-forest-aarch64 > hotspot
changeset 6038:0a377d9c35cd
Fix guarantee failure in syncronizer.cpp
author | Edward Nevill <ed@camswl.com> |
---|---|
date | Fri, 09 Jan 2015 10:05:00 +0000 |
parents | a685a32270c3 |
children | 219b0a7f15b6 |
files | src/cpu/aarch64/vm/aarch64.ad |
diffstat | 1 files changed, 6 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cpu/aarch64/vm/aarch64.ad Tue Dec 30 21:41:20 2014 +0000 +++ b/src/cpu/aarch64/vm/aarch64.ad Fri Jan 09 10:05:00 2015 +0000 @@ -2950,7 +2950,8 @@ __ ldxr(tmp, oop); __ cmp(tmp, disp_hdr); __ br(Assembler::NE, cas_failed); - __ stxr(tmp, box, oop); + // use stlxr to ensure update is immediately visible + __ stlxr(tmp, box, oop); __ cbzw(tmp, cont); __ b(retry_load); } @@ -2999,7 +3000,8 @@ __ ldxr(rscratch1, tmp); __ cmp(disp_hdr, rscratch1); __ br(Assembler::NE, fail); - __ stxr(rscratch1, rthread, tmp); + // use stlxr to ensure update is immediately visible + __ stlxr(rscratch1, rthread, tmp); __ cbnzw(rscratch1, retry_load); __ bind(fail); } @@ -3087,7 +3089,8 @@ __ ldxr(tmp, oop); __ cmp(box, tmp); __ br(Assembler::NE, cas_failed); - __ stxr(tmp, disp_hdr, oop); + // use stlxr to ensure update is immediately visible + __ stlxr(tmp, disp_hdr, oop); __ cbzw(tmp, cont); __ b(retry_load); }