This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Use scope_exit in regcache.c


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=311dc83a411c83d61cd6cb931289761574ea3ecc

commit 311dc83a411c83d61cd6cb931289761574ea3ecc
Author: Tom Tromey <tom@tromey.com>
Date:   Wed Jan 23 18:58:37 2019 +0000

    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.

Diff:
---
 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  <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);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]