From 6b6c5bd62234628cfec960e5948ee504518fc21d Mon Sep 17 00:00:00 2001 From: Zhengyu Gu Date: Sat, 28 Mar 2020 11:00:09 -0400 Subject: [PATCH] 8241765: Shenandoah: AARCH64 need to save/restore call clobbered registers before calling keepalive barrier Reviewed-by: rkennke, smonteith, aph --- .../gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp index 74dc35bcb6c..2996d963724 100644 --- a/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp +++ b/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2019, Red Hat, Inc. All rights reserved. + * Copyright (c) 2018, 2020, Red Hat, Inc. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -384,6 +384,7 @@ void ShenandoahBarrierSetAssembler::load_at(MacroAssembler* masm, DecoratorSet d // 3: apply keep-alive barrier if needed if (ShenandoahBarrierSet::need_keep_alive_barrier(decorators, type)) { __ enter(); + __ push_call_clobbered_registers(); satb_write_barrier_pre(masm /* masm */, noreg /* obj */, dst /* pre_val */, @@ -391,6 +392,7 @@ void ShenandoahBarrierSetAssembler::load_at(MacroAssembler* masm, DecoratorSet d tmp1 /* tmp */, true /* tosca_live */, true /* expand_call */); + __ pop_call_clobbered_registers(); __ leave(); } }