aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Expression/Materializer.cpp
diff options
context:
space:
mode:
authorSean Callanan <scallanan@apple.com>2013-06-20 18:42:16 +0000
committerSean Callanan <scallanan@apple.com>2013-06-20 18:42:16 +0000
commita4e8105bfdb94bbc12fb147bd6dd9543dff3780a (patch)
treeb46c28d2ed9d04ceea05a3aa333d6bce18a6b997 /lldb/source/Expression/Materializer.cpp
parentdb5d8feeead5b191051e2f4703952a004a19768a (diff)
downloadllvm-a4e8105bfdb94bbc12fb147bd6dd9543dff3780a.zip
llvm-a4e8105bfdb94bbc12fb147bd6dd9543dff3780a.tar.gz
llvm-a4e8105bfdb94bbc12fb147bd6dd9543dff3780a.tar.bz2
Fixed a problem with materialization and
dematerialization of registers that caused conditional breakpoint expressions not to work properly. Also added a testcase. <rdar://problem/14129252> llvm-svn: 184451
Diffstat (limited to 'lldb/source/Expression/Materializer.cpp')
-rw-r--r--lldb/source/Expression/Materializer.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/lldb/source/Expression/Materializer.cpp b/lldb/source/Expression/Materializer.cpp
index 4bc4f81..52dfefd 100644
--- a/lldb/source/Expression/Materializer.cpp
+++ b/lldb/source/Expression/Materializer.cpp
@@ -21,6 +21,7 @@
#include "lldb/Target/RegisterContext.h"
#include "lldb/Target/StackFrame.h"
#include "lldb/Target/Target.h"
+#include "lldb/Target/Thread.h"
using namespace lldb_private;
@@ -1288,7 +1289,11 @@ Materializer::Materialize (lldb::StackFrameSP &frame_sp, IRMemoryMap &map, lldb:
void
Materializer::Dematerializer::Dematerialize (Error &error, lldb::ClangExpressionVariableSP &result_sp, lldb::addr_t frame_bottom, lldb::addr_t frame_top)
{
- lldb::StackFrameSP frame_sp = m_frame_wp.lock();
+ lldb::StackFrameSP frame_sp;
+
+ lldb::ThreadSP thread_sp = m_thread_wp.lock();
+ if (thread_sp)
+ frame_sp = thread_sp->GetFrameWithStackID(m_stack_id);
ExecutionContextScope *exe_scope = m_map->GetBestExecutionContextScope();