diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | 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 <tom@tromey.com> + Pedro Alves <palves@redhat.com> + + * regcache.c (class regcache_invalidator): Remove. + (regcache::raw_write): Use make_scope_exit. + +2019-01-23 Tom Tromey <tom@tromey.com> * 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); |