diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2011-06-03 20:40:54 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2011-06-03 20:40:54 +0000 |
commit | 5a6fa540dcc0a86b6e4412ad27bbb0a732bc859b (patch) | |
tree | 8dbe47be4a30cf36fd9c11f5259b5c29bf59dde5 /lldb/source/Target/Thread.cpp | |
parent | 70969ef10270d3be63498be123ef98ac5dcf2f57 (diff) | |
download | bcm5719-llvm-5a6fa540dcc0a86b6e4412ad27bbb0a732bc859b.tar.gz bcm5719-llvm-5a6fa540dcc0a86b6e4412ad27bbb0a732bc859b.zip |
Move SaveFrameZeroState and RestoreSaveFrameZero implementations to Thread base class
llvm-svn: 132586
Diffstat (limited to 'lldb/source/Target/Thread.cpp')
-rw-r--r-- | lldb/source/Target/Thread.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lldb/source/Target/Thread.cpp b/lldb/source/Target/Thread.cpp index 288694bfffd..b1a3c15b6b3 100644 --- a/lldb/source/Target/Thread.cpp +++ b/lldb/source/Target/Thread.cpp @@ -1156,7 +1156,34 @@ Thread::GetStackFrameStatus (Stream& strm, source_lines_after); } +bool +Thread::SaveFrameZeroState (RegisterCheckpoint &checkpoint) +{ + lldb::StackFrameSP frame_sp(GetStackFrameAtIndex (0)); + if (frame_sp) + { + checkpoint.SetStackID(frame_sp->GetStackID()); + return frame_sp->GetRegisterContext()->ReadAllRegisterValues (checkpoint.GetData()); + } + return false; +} + +bool +Thread::RestoreSaveFrameZero (const RegisterCheckpoint &checkpoint) +{ + lldb::StackFrameSP frame_sp(GetStackFrameAtIndex (0)); + if (frame_sp) + { + bool ret = frame_sp->GetRegisterContext()->WriteAllRegisterValues (checkpoint.GetData()); + + // Clear out all stack frames as our world just changed. + ClearStackFrames(); + frame_sp->GetRegisterContext()->InvalidateIfNeeded(true); + return ret; + } + return false; +} #pragma mark "Thread::SettingsController" //-------------------------------------------------------------- |