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  <tom@tromey.com>
	    Pedro Alves  <palves@redhat.com>

	* regcache.c (class regcache_invalidator): Remove.
	(regcache::raw_write): Use make_scope_exit.
This commit is contained in:
Tom Tromey 2019-01-23 18:58:37 +00:00 committed by Pedro Alves
parent 296bd123f7
commit 311dc83a41
2 changed files with 8 additions and 32 deletions

View File

@ -1,3 +1,9 @@
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.

View File

@ -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);