Mercurial > hg > openjdk > aarch64-port > hotspot
changeset 8589:7a921b442081
8147805: aarch64: C1 segmentation fault due to inline Unsafe.getAndSetObject
Summary: In Aarch64 LIR_Assembler.atomic_op, keep stored data reference register in decompressed forms as it may be used later
Reviewed-by: aph
Contributed-by: hui.shi@linaro.org, felix.yang@linaro.org
author | hshi |
---|---|
date | Wed, 20 Jan 2016 04:56:51 -0800 |
parents | 220fb5b3d9ce |
children | 6c2017fdb2e6 |
files | src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp |
diffstat | 1 files changed, 2 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Tue Jan 19 17:52:52 2016 +0000 +++ b/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Wed Jan 20 04:56:51 2016 -0800 @@ -3202,7 +3202,8 @@ Register obj = as_reg(data); Register dst = as_reg(dest); if (is_oop && UseCompressedOops) { - __ encode_heap_oop(obj); + __ encode_heap_oop(rscratch1, obj); + obj = rscratch1; } assert_different_registers(obj, addr.base(), tmp, rscratch2, dst); Label again;