From d952b6bb20b906b3ddd4aaf1036777d35ed4d3b5 Mon Sep 17 00:00:00 2001 From: Almaz Mingaleev Date: Wed, 26 Feb 2025 17:24:26 +0000 Subject: Call target method in accessor MHs when it is set. Bug: 297147201 Test: ./art/tools/run-libcore-tests.sh --mode host --variant X64 Test: ./art/test/testrunner/testrunner.py -b --host --64 Test: ./art/test/testrunner/testrunner.py -b --target --64 Change-Id: I5f8dc0761abbc1f5bb4f5727ae1e6966a4ebaf8a --- runtime/class_linker.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'runtime/class_linker.cc') diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc index 70eea2d268..009d705caf 100644 --- a/runtime/class_linker.cc +++ b/runtime/class_linker.cc @@ -10569,7 +10569,7 @@ ObjPtr ClassLinker::ResolveMethodHandleForField( return nullptr; } - StackHandleScope<4> hs(self); + StackHandleScope<5> hs(self); ObjPtr array_of_class = GetClassRoot>(this); Handle> method_params(hs.NewHandle( mirror::ObjectArray::Alloc(self, array_of_class, num_params))); @@ -10629,7 +10629,8 @@ ObjPtr ClassLinker::ResolveMethodHandleForField( return nullptr; } - uintptr_t target = reinterpret_cast(target_field); + Handle target(hs.NewHandle( + mirror::Field::CreateFromArtField(self, target_field, /*force_resolve=*/ true))); return mirror::MethodHandleImpl::Create(self, target, kind, method_type); } -- cgit v1.2.3-59-g8ed1b