From 311dc83a411c83d61cd6cb931289761574ea3ecc Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 23 Jan 2019 18:58:37 +0000 Subject: [PATCH] Use scope_exit in regcache.c This removes the regcache_invalidator class in favor of a scope_exit. This seems like an improvement (albeit a minor one) because regcache_invalidator is only used in a single spot. gdb/ChangeLog: 2019-01-23 Tom Tromey Pedro Alves * regcache.c (class regcache_invalidator): Remove. (regcache::raw_write): Use make_scope_exit. --- gdb/ChangeLog | 6 ++++++ gdb/regcache.c | 34 ++-------------------------------- 2 files changed, 8 insertions(+), 32 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 39d5b58..e01f5ee 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,4 +1,10 @@ 2019-01-23 Tom Tromey + Pedro Alves + + * regcache.c (class regcache_invalidator): Remove. + (regcache::raw_write): Use make_scope_exit. + +2019-01-23 Tom Tromey * ui-out.h (class ui_out_emit_type): Update comment. diff --git a/gdb/regcache.c b/gdb/regcache.c index 4a68390..a354e15 100644 --- a/gdb/regcache.c +++ b/gdb/regcache.c @@ -219,37 +219,6 @@ reg_buffer::arch () const return m_descr->gdbarch; } -/* Cleanup class for invalidating a register. */ - -class regcache_invalidator -{ -public: - - regcache_invalidator (struct regcache *regcache, int regnum) - : m_regcache (regcache), - m_regnum (regnum) - { - } - - ~regcache_invalidator () - { - if (m_regcache != nullptr) - m_regcache->invalidate (m_regnum); - } - - DISABLE_COPY_AND_ASSIGN (regcache_invalidator); - - void release () - { - m_regcache = nullptr; - } - -private: - - struct regcache *m_regcache; - int m_regnum; -}; - /* Return a pointer to register REGNUM's buffer cache. */ gdb_byte * @@ -769,7 +738,8 @@ regcache::raw_write (int regnum, const gdb_byte *buf) /* Invalidate the register after it is written, in case of a failure. */ - regcache_invalidator invalidator (this, regnum); + auto invalidator + = make_scope_exit ([&] { this->invalidate (regnum); }); target_store_registers (this, regnum); -- 2.7.4