diff options
author | Pedro Alves <palves@redhat.com> | 2019-01-23 18:58:30 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2019-01-23 19:03:48 +0000 |
commit | 77f0e74cbe2ee7e874432776a0394a3d2a7a4342 (patch) | |
tree | 9925e62f515f7c3ab9800a257ce0e2bc77187993 | |
parent | 5b9b3e53a68f4568dc0b6907e34e763a6c3dd145 (diff) | |
download | gdb-77f0e74cbe2ee7e874432776a0394a3d2a7a4342.zip gdb-77f0e74cbe2ee7e874432776a0394a3d2a7a4342.tar.gz gdb-77f0e74cbe2ee7e874432776a0394a3d2a7a4342.tar.bz2 |
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.
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/gdbthread.h | 28 |
2 files changed, 10 insertions, 25 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index dff515d..008208e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,6 +1,13 @@ 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> + * common/forward-scope-exit.h: New file. 2019-01-23 Pedro Alves <palves@redhat.com> diff --git a/gdb/gdbthread.h b/gdb/gdbthread.h index 95db696..c35a54e 100644 --- a/gdb/gdbthread.h +++ b/gdb/gdbthread.h @@ -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; |