[PATCH 2/5] Change current_inferior_ to be a inferior_ref

Tom Tromey tom@tromey.com
Sat Oct 31 18:26:02 GMT 2020


This changes current_inferior_ to be an inferior_ref, removing some
manual reference counting.

gdb/ChangeLog
2020-10-30  Tom Tromey  <tom@tromey.com>

	* inferior.c (current_inferior_): Change type.
	(current_inferior, set_current_inferior, initialize_inferiors):
	Update.
---
 gdb/ChangeLog  |  6 ++++++
 gdb/inferior.c | 11 ++++-------
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/gdb/inferior.c b/gdb/inferior.c
index 12f4de487c4..7687dab45d1 100644
--- a/gdb/inferior.c
+++ b/gdb/inferior.c
@@ -51,12 +51,12 @@ bool print_inferior_events = true;
 /* The Current Inferior.  This is a strong reference.  I.e., whenever
    an inferior is the current inferior, its refcount is
    incremented.  */
-static struct inferior *current_inferior_ = NULL;
+static inferior_ref current_inferior_;
 
 struct inferior*
 current_inferior (void)
 {
-  return current_inferior_;
+  return current_inferior_.get ();
 }
 
 void
@@ -65,9 +65,7 @@ set_current_inferior (struct inferior *inf)
   /* There's always an inferior.  */
   gdb_assert (inf != NULL);
 
-  inf->incref ();
-  current_inferior_->decref ();
-  current_inferior_ = inf;
+  current_inferior_ = inferior_ref::new_reference (inf);
 }
 
 private_inferior::~private_inferior () = default;
@@ -962,8 +960,7 @@ initialize_inferiors (void)
      can only allocate an inferior when all those modules have done
      that.  Do this after initialize_progspace, due to the
      current_program_space reference.  */
-  current_inferior_ = add_inferior_silent (0);
-  current_inferior_->incref ();
+  set_current_inferior (add_inferior_silent (0));
   current_inferior_->pspace = current_program_space;
   current_inferior_->aspace = current_program_space->aspace;
   /* The architecture will be initialized shortly, by
-- 
2.17.2



More information about the Gdb-patches mailing list