objects for the backlink to the lldb_private::Process. The issues we were running into before was someone was holding onto a shared pointer to a lldb_private::Thread for too long, and the lldb_private::Process parent object would get destroyed and the lldb_private::Thread had a "Process &m_process" member which would just treat whatever memory that used to be a Process as a valid Process. This was mostly happening for lldb_private::StackFrame objects that had a member like "Thread &m_thread". So this completes the internal strong/weak changes. Documented the ExecutionContext and ExecutionContextRef classes so that our LLDB developers can understand when and where to use ExecutionContext and ExecutionContextRef objects. llvm-svn: 151009
65 lines
1.8 KiB
C++
65 lines
1.8 KiB
C++
//===-- ThreadMemory.h -----------------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef liblldb_ThreadMemory_h_
|
|
#define liblldb_ThreadMemory_h_
|
|
|
|
#include "lldb/Target/Thread.h"
|
|
|
|
class ThreadMemory :
|
|
public lldb_private::Thread
|
|
{
|
|
public:
|
|
|
|
ThreadMemory (const lldb::ProcessSP &process_sp,
|
|
lldb::tid_t tid,
|
|
const lldb::ValueObjectSP &thread_info_valobj_sp);
|
|
|
|
virtual
|
|
~ThreadMemory();
|
|
|
|
//------------------------------------------------------------------
|
|
// lldb_private::Thread methods
|
|
//------------------------------------------------------------------
|
|
virtual void
|
|
RefreshStateAfterStop();
|
|
|
|
virtual lldb::RegisterContextSP
|
|
GetRegisterContext ();
|
|
|
|
virtual lldb::RegisterContextSP
|
|
CreateRegisterContextForFrame (lldb_private::StackFrame *frame);
|
|
|
|
virtual lldb::StopInfoSP
|
|
GetPrivateStopReason ();
|
|
|
|
virtual bool
|
|
WillResume (lldb::StateType resume_state);
|
|
|
|
lldb::ValueObjectSP &
|
|
GetValueObject ()
|
|
{
|
|
return m_thread_info_valobj_sp;
|
|
}
|
|
|
|
protected:
|
|
//------------------------------------------------------------------
|
|
// For ThreadMemory and subclasses
|
|
//------------------------------------------------------------------
|
|
lldb::ValueObjectSP m_thread_info_valobj_sp;
|
|
|
|
private:
|
|
//------------------------------------------------------------------
|
|
// For ThreadMemory only
|
|
//------------------------------------------------------------------
|
|
DISALLOW_COPY_AND_ASSIGN (ThreadMemory);
|
|
};
|
|
|
|
#endif // liblldb_ThreadMemory_h_
|