Use forward_scope_exit for scoped_finish_thread_state
This reimplements the manually-written scoped_finish_thread_state class as a forward_scope_exit instantiation. forward_scope_exit has the same interface as scoped_finish_thread_state, so nothing else has to change. A forward_scope_exit is preferred over make_scope_exit here because infrun.c:normal_stop needs to wrap scoped_finish_thread_state in a gdb::optional. Since we need the type there, might as well use it everywhere. gdb/ChangeLog: 2019-01-23 Pedro Alves <palves@redhat.com> Andrew Burgess <andrew.burgess@embecosm.com> * gdbthread.h: Include "common/forward-scope-exit.h". (scoped_finish_thread_state): Redefine custom class in terms of forward_scope_exit.
This commit is contained in:
parent
5b9b3e53a6
commit
77f0e74cbe
|
@ -1,3 +1,10 @@
|
|||
2019-01-23 Pedro Alves <palves@redhat.com>
|
||||
Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* gdbthread.h: Include "common/forward-scope-exit.h".
|
||||
(scoped_finish_thread_state): Redefine custom class in terms of
|
||||
forward_scope_exit.
|
||||
|
||||
2019-01-23 Pedro Alves <palves@redhat.com>
|
||||
Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ struct symtab;
|
|||
#include "cli/cli-utils.h"
|
||||
#include "common/refcounted-object.h"
|
||||
#include "common-gdbthread.h"
|
||||
#include "common/forward-scope-exit.h"
|
||||
|
||||
struct inferior;
|
||||
|
||||
|
@ -612,31 +613,8 @@ extern void finish_thread_state (ptid_t ptid);
|
|||
|
||||
/* Calls finish_thread_state on scope exit, unless release() is called
|
||||
to disengage. */
|
||||
class scoped_finish_thread_state
|
||||
{
|
||||
public:
|
||||
explicit scoped_finish_thread_state (ptid_t ptid)
|
||||
: m_ptid (ptid)
|
||||
{}
|
||||
|
||||
~scoped_finish_thread_state ()
|
||||
{
|
||||
if (!m_released)
|
||||
finish_thread_state (m_ptid);
|
||||
}
|
||||
|
||||
/* Disengage. */
|
||||
void release ()
|
||||
{
|
||||
m_released = true;
|
||||
}
|
||||
|
||||
DISABLE_COPY_AND_ASSIGN (scoped_finish_thread_state);
|
||||
|
||||
private:
|
||||
bool m_released = false;
|
||||
ptid_t m_ptid;
|
||||
};
|
||||
using scoped_finish_thread_state
|
||||
= FORWARD_SCOPE_EXIT (finish_thread_state);
|
||||
|
||||
/* Commands with a prefix of `thread'. */
|
||||
extern struct cmd_list_element *thread_cmd_list;
|
||||
|
|
Loading…
Reference in New Issue