[Lldb-commits] [lldb] 3728133 - Unify the ExecutionContextScope computation in Materializer.
Adrian Prantl via lldb-commits
lldb-commits at lists.llvm.org
Wed Jul 8 15:18:37 PDT 2020
Author: Adrian Prantl
Date: 2020-07-08T15:18:21-07:00
New Revision: 3728133d3f124c4c6972b118b0265de48ba89db1
URL: https://github.com/llvm/llvm-project/commit/3728133d3f124c4c6972b118b0265de48ba89db1
DIFF: https://github.com/llvm/llvm-project/commit/3728133d3f124c4c6972b118b0265de48ba89db1.diff
LOG: Unify the ExecutionContextScope computation in Materializer.
This is an NFC cleanup for Clang, and a bugfix for the Swift
branch. In swift-lldb one target may have multiple scratch
TypeSystems, so it is important to pick the one that belongs to the
current frame, rather than the one for the current target.
<rdar://problem/65001402>
Added:
Modified:
lldb/source/Expression/Materializer.cpp
Removed:
################################################################################
diff --git a/lldb/source/Expression/Materializer.cpp b/lldb/source/Expression/Materializer.cpp
index dccba5885bd9..f33462053f22 100644
--- a/lldb/source/Expression/Materializer.cpp
+++ b/lldb/source/Expression/Materializer.cpp
@@ -785,7 +785,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<uint64_t> byte_size = m_type.GetByteSize(exe_scope);
if (!byte_size) {
@@ -835,7 +837,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 "
@@ -1061,7 +1065,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;
@@ -1342,7 +1348,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();
@@ -1393,7 +1398,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();
More information about the lldb-commits
mailing list