Created
November 4, 2020 14:13
-
-
Save rkennke/d057f906814a4e022b2bf69ffe996712 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp b/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp | |
| index f19a93ea487..fb1b9ccbf20 100644 | |
| --- a/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp | |
| +++ b/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp | |
| @@ -348,27 +348,33 @@ void ShenandoahBarrierSetAssembler::load_reference_barrier(MacroAssembler* masm, | |
| } | |
| save_xmm_registers(masm); | |
| + address calladdr = NULL; | |
| switch (kind) { | |
| case ShenandoahBarrierSet::AccessKind::NORMAL: | |
| if (UseCompressedOops) { | |
| - __ super_call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_narrow), arg0, arg1); | |
| + calladdr = CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_narrow); | |
| } else { | |
| - __ super_call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier), arg0, arg1); | |
| + calladdr = CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier); | |
| } | |
| break; | |
| case ShenandoahBarrierSet::AccessKind::WEAK: | |
| if (UseCompressedOops) { | |
| - __ super_call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_weak_narrow), arg0, arg1); | |
| + calladdr = CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_weak_narrow); | |
| } else { | |
| - __ super_call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_weak), arg0, arg1); | |
| + calladdr = CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_weak); | |
| } | |
| break; | |
| case ShenandoahBarrierSet::AccessKind::NATIVE: | |
| - __ super_call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_weak), arg0, arg1); | |
| + calladdr = CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_weak); | |
| break; | |
| default: | |
| ShouldNotReachHere(); | |
| } | |
| + if (kind == ShenandoahBarrierSet::AccessKind::WEAK) { | |
| + __ super_call_VM_leaf(calladdr, arg0, arg1); | |
| + } else { | |
| + __ call_VM_leaf(calladdr, arg0, arg1); | |
| + } | |
| restore_xmm_registers(masm); | |
| #ifdef _LP64 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment