java-1.8.0-openjdk/rh1300630.patch
2016-02-22 15:27:34 +01:00

25 lines
1.1 KiB
Diff

# 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;