From a4ac01044c50f4da02c40b8da5520d2eb65b41d9 Mon Sep 17 00:00:00 2001 From: Santiago Aboy Solanes Date: Thu, 2 May 2024 15:40:47 +0100 Subject: Workaround for b/336842546 Resolve the type if it hasn't been resolved before. Also, change to use Handles instead of ObjPtr since ResolveType can potentially suspend. Bug: 336842546 Bug: 73760543 Test: art/test/testrunner/testrunner.py --host --64 --optimizing -b Change-Id: I8ad77e63d6d9cc76fee8aac88742d4a4b678abf5 --- compiler/dex/inline_method_analyser.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'compiler/dex/inline_method_analyser.cc') diff --git a/compiler/dex/inline_method_analyser.cc b/compiler/dex/inline_method_analyser.cc index 85cf83c099..0567fe12c8 100644 --- a/compiler/dex/inline_method_analyser.cc +++ b/compiler/dex/inline_method_analyser.cc @@ -147,8 +147,11 @@ ArtMethod* GetTargetConstructor(ArtMethod* method, const Instruction* invoke_dir accessor.RegistersSize() - accessor.InsSize()); } uint32_t method_index = invoke_direct->VRegB_35c(); + StackHandleScope<2> hs(Thread::Current()); + Handle h_dex_cache = hs.NewHandle(method->GetDexCache()); + Handle h_class_loader = hs.NewHandle(method->GetClassLoader()); ArtMethod* target_method = Runtime::Current()->GetClassLinker()->LookupResolvedMethod( - method_index, method->GetDexCache(), method->GetClassLoader()); + method_index, h_dex_cache, h_class_loader); if (kIsDebugBuild && target_method != nullptr) { CHECK(!target_method->IsStatic()); CHECK(target_method->IsConstructor()); -- cgit v1.2.3-59-g8ed1b