Mercurial > hg > release > icedtea7-forest-2.6 > hotspot
changeset 6735:6774b8e70603 icedtea-2.6.19 icedtea-2.6.20pre00
8224828, PR3741: aarch64: rflags is not correct after safepoint poll
Reviewed-by: aph, adinn
Contributed-by: Xiang Yuan <yuanxiang4@huawei.com>
author | fyang |
---|---|
date | Tue, 16 Jul 2019 08:14:51 +0100 |
parents | 5e713e212064 |
children | a9e5052ad011 |
files | src/cpu/aarch64/vm/aarch64.ad src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp |
diffstat | 2 files changed, 4 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cpu/aarch64/vm/aarch64.ad Tue May 28 11:15:11 2019 -0400 +++ b/src/cpu/aarch64/vm/aarch64.ad Tue Jul 16 08:14:51 2019 +0100 @@ -11399,9 +11399,10 @@ // TODO // provide a near and far version of this code -instruct safePoint(iRegP poll) +instruct safePoint(rFlagsReg cr, iRegP poll) %{ match(SafePoint poll); + effect(KILL cr); format %{ "ldrw zr, [$poll]\t# Safepoint: poll for GC"
--- a/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp Tue May 28 11:15:11 2019 -0400 +++ b/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp Tue Jul 16 08:14:51 2019 +0100 @@ -118,7 +118,7 @@ int frame_size_in_words = frame_size_in_bytes / wordSize; *total_frame_words = frame_size_in_words; - // Save registers, fpu state, and flags. + // Save Integer and Float registers. __ enter(); __ push_CPU_state(); @@ -2827,7 +2827,7 @@ bool cause_return = (poll_type == POLL_AT_RETURN); bool save_vectors = (poll_type == POLL_AT_VECTOR_LOOP); - // Save registers, fpu state, and flags + // Save Integer and Float registers. map = RegisterSaver::save_live_registers(masm, 0, &frame_size_in_words); // The following is basically a call_VM. However, we need the precise