From 78995ebe68dfc3ab9532152e94eb438db4c35c02 Mon Sep 17 00:00:00 2001 From: Andrew Haley Date: Fri, 1 Nov 2019 06:04:35 -0400 Subject: [PATCH] 8233232: AArch64: Shenandoah: jni_fast_GetLongField is broken Reviewed-by: shade, rkennke --- .../gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp index ac39106162b..b9a70edac3f 100644 --- a/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp +++ b/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp @@ -443,8 +443,9 @@ void ShenandoahBarrierSetAssembler::try_resolve_jobject_in_native(MacroAssembler __ cbz(obj, done); assert(obj != rscratch2, "need rscratch2"); - Address gc_state(rthread, in_bytes(ShenandoahThreadLocalData::gc_state_offset())); - __ ldrb(rscratch2, gc_state); + Address gc_state(jni_env, ShenandoahThreadLocalData::gc_state_offset() - JavaThread::jni_environment_offset()); + __ lea(rscratch2, gc_state); + __ ldrb(rscratch2, Address(rscratch2)); // Check for heap in evacuation phase __ tbnz(rscratch2, ShenandoahHeap::EVACUATION_BITPOS, slowpath);