diff --git a/lldb/source/Expression/Materializer.cpp b/lldb/source/Expression/Materializer.cpp index cd332484debbcd..e94832f09ef8e1 100644 --- a/lldb/source/Expression/Materializer.cpp +++ b/lldb/source/Expression/Materializer.cpp @@ -784,7 +784,9 @@ class EntityResultVariable : public Materializer::Entity { const lldb::addr_t load_addr = process_address + m_offset; - ExecutionContextScope *exe_scope = map.GetBestExecutionContextScope(); + ExecutionContextScope *exe_scope = frame_sp.get(); + if (!exe_scope) + exe_scope = map.GetBestExecutionContextScope(); llvm::Optional byte_size = m_type.GetByteSize(exe_scope); if (!byte_size) { @@ -834,7 +836,9 @@ class EntityResultVariable : public Materializer::Entity { lldb::addr_t frame_bottom, Status &err) override { err.Clear(); - ExecutionContextScope *exe_scope = map.GetBestExecutionContextScope(); + ExecutionContextScope *exe_scope = frame_sp.get(); + if (!exe_scope) + exe_scope = map.GetBestExecutionContextScope(); if (!exe_scope) { err.SetErrorString("Couldn't dematerialize a result variable: invalid " @@ -1062,7 +1066,9 @@ class EntitySymbol : public Materializer::Entity { const Address sym_address = m_symbol.GetAddress(); - ExecutionContextScope *exe_scope = map.GetBestExecutionContextScope(); + ExecutionContextScope *exe_scope = frame_sp.get(); + if (!exe_scope) + exe_scope = map.GetBestExecutionContextScope(); lldb::TargetSP target_sp; @@ -1346,7 +1352,6 @@ Materializer::DematerializerSP Materializer::Materialize(lldb::StackFrameSP &frame_sp, IRMemoryMap &map, lldb::addr_t process_address, Status &error) { ExecutionContextScope *exe_scope = frame_sp.get(); - if (!exe_scope) exe_scope = map.GetBestExecutionContextScope(); @@ -1397,7 +1402,9 @@ void Materializer::Dematerializer::Dematerialize(Status &error, if (thread_sp) frame_sp = thread_sp->GetFrameWithStackID(m_stack_id); - ExecutionContextScope *exe_scope = m_map->GetBestExecutionContextScope(); + ExecutionContextScope *exe_scope = frame_sp.get(); + if (!exe_scope) + exe_scope = m_map->GetBestExecutionContextScope(); if (!IsValid()) { error.SetErrorToGenericError();