# HG changeset patch # User hshi # Date 1455640059 0 # Tue Feb 16 16:27:39 2016 +0000 # Node ID f90e98d9a3e53ffa6d4611bec799d8a9b338d82c # Parent 225180d970c1fd447b87de8122016cdbfaea0dff 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 diff -r 225180d970c1 -r f90e98d9a3e5 src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp --- openjdk/hotspot/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Thu Jan 21 22:17:05 2016 +0000 +++ openjdk/hotspot/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Tue Feb 16 16:27:39 2016 +0000 @@ -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;