From 9c2a0a8bfc5369a110956ac26cf9cf145a6a4bb7 Mon Sep 17 00:00:00 2001 From: Almaz Mingaleev Date: Fri, 21 Mar 2025 13:13:41 +0000 Subject: arm64: fix reference unpoisoning in invokeExact intrinsic. As reference is read from heap it should be unpoisoned. Bug: 297147201 Test: ART_HEAP_POISONING=true art/test/testrunner/testrunner.py \ -b --target --64 -t 2277 Change-Id: I0d19af3b3b4326a443f6a80316cbc02c42092944 --- compiler/optimizing/intrinsics_arm64.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/optimizing/intrinsics_arm64.cc b/compiler/optimizing/intrinsics_arm64.cc index c4f8681631..4eb73019fd 100644 --- a/compiler/optimizing/intrinsics_arm64.cc +++ b/compiler/optimizing/intrinsics_arm64.cc @@ -6131,7 +6131,7 @@ void IntrinsicCodeGeneratorARM64::VisitMethodHandleInvokeExact(HInvoke* invoke) __ Bind(&do_imt_dispatch); // Re-using `method` to store receiver class and ImTableEntry. __ Ldr(method.W(), HeapOperand(receiver.W(), mirror::Object::ClassOffset())); - codegen_->GetAssembler()->MaybePoisonHeapReference(method.W()); + codegen_->GetAssembler()->MaybeUnpoisonHeapReference(method.W()); __ Ldr(method, MemOperand(method, mirror::Class::ImtPtrOffset(PointerSize::k64).Int32Value())); __ Ldr(method, MemOperand(method, temp, Extend::UXTW, 3u)); -- cgit v1.2.3-59-g8ed1b