aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2019-01-23 18:58:30 +0000
committerPedro Alves <palves@redhat.com>2019-01-23 19:03:48 +0000
commit77f0e74cbe2ee7e874432776a0394a3d2a7a4342 (patch)
tree9925e62f515f7c3ab9800a257ce0e2bc77187993
parent5b9b3e53a68f4568dc0b6907e34e763a6c3dd145 (diff)
downloadgdb-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/ChangeLog7
-rw-r--r--gdb/gdbthread.h28
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;