From: Tom Tromey Date: Wed, 23 Jan 2019 18:58:37 +0000 (+0000) Subject: Use scope_exit in regcache.c X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=311dc83a411c83d61cd6cb931289761574ea3ecc;p=binutils-gdb.git 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. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 39d5b580878..e01f5eecb4c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +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 4a68390c5f7..a354e15d2d8 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);