Convert contained_in to method
authorTom Tromey <tom@tromey.com>
Fri, 20 Jan 2023 14:46:51 +0000 (07:46 -0700)
committerTom Tromey <tom@tromey.com>
Sun, 19 Feb 2023 19:51:06 +0000 (12:51 -0700)
This converts contained_in to be a method of block.

gdb/block.c
gdb/block.h
gdb/blockframe.c
gdb/breakpoint.c
gdb/frame.c
gdb/inline-frame.c
gdb/parse.c
gdb/printcmd.c

index 334d8180448cafbfafa99146e80684b4d714f091..4e40247b79c31e564f27c7574947e0e85cedb8a0 100644 (file)
@@ -65,15 +65,14 @@ block::gdbarch () const
 /* See block.h.  */
 
 bool
-contained_in (const struct block *a, const struct block *b,
-             bool allow_nested)
+block::contains (const struct block *a, bool allow_nested) const
 {
-  if (!a || !b)
+  if (a == nullptr)
     return false;
 
   do
     {
-      if (a == b)
+      if (a == this)
        return true;
       /* If A is a function block, then A cannot be contained in B,
         except if A was inlined.  */
index 32e3c9ebcfd7f30e3107a385db85a2b5712eceaf..cdcee0844ec7ac530a551fecdd8a024179f9a3da 100644 (file)
@@ -271,6 +271,15 @@ struct block : public allocate_on_obstack
 
   struct dynamic_prop *static_link () const;
 
+  /* Return true if block A is lexically nested within this block, or
+     if A and this block have the same pc range.  Return false
+     otherwise.  If ALLOW_NESTED is true, then block A is considered
+     to be in this block if A is in a nested function in this block's
+     function.  If ALLOW_NESTED is false (the default), then blocks in
+     nested functions are not considered to be contained.  */
+
+  bool contains (const struct block *a, bool allow_nested = false) const;
+
 private:
 
   /* If the namespace_info is NULL, allocate it via OBSTACK and
@@ -400,16 +409,6 @@ private:
   struct block *m_blocks[1];
 };
 
-/* Return true if block A is lexically nested within block B, or if a
-   and b have the same pc range.  Return false otherwise.  If
-   ALLOW_NESTED is true, then block A is considered to be in block B
-   if A is in a nested function in B's function.  If ALLOW_NESTED is
-   false (the default), then blocks in nested functions are not
-   considered to be contained.  */
-
-extern bool contained_in (const struct block *a, const struct block *b,
-                         bool allow_nested = false);
-
 extern const struct blockvector *blockvector_for_pc (CORE_ADDR,
                                               const struct block **);
 
index 7c9faf487a7a0692978e3dba95936654a406fdc1..633a9674d97dbc00e694635b9b7a793abb1294ff 100644 (file)
@@ -469,7 +469,7 @@ block_innermost_frame (const struct block *block)
   while (frame != NULL)
     {
       const struct block *frame_block = get_frame_block (frame, NULL);
-      if (frame_block != NULL && contained_in (frame_block, block))
+      if (frame_block != NULL && block->contains (frame_block))
        return frame;
 
       frame = get_prev_frame (frame);
index a2f119087517d123e1003c7e8c368749f7c87b23..0db3adaf916cc71f65eb4e1ca6862fd641d7ea06 100644 (file)
@@ -5149,7 +5149,7 @@ watchpoint_check (bpstat *bs)
 
          function = get_frame_function (fr);
          if (function == NULL
-             || !contained_in (b->exp_valid_block, function->value_block ()))
+             || !function->value_block ()->contains (b->exp_valid_block))
            within_current_scope = false;
        }
 
index 6629f444afe44e7d4fe23276e1d5ff5a7d4b9405..9b867b6cd9c641d442946447e459a36091227f1f 100644 (file)
@@ -895,7 +895,7 @@ frame_id_inner (struct gdbarch *gdbarch, struct frame_id l, struct frame_id r)
        /* This will return true if LB and RB are the same block, or
           if the block with the smaller depth lexically encloses the
           block with the greater depth.  */
-       inner = contained_in (lb, rb);
+       inner = rb->contains (lb);
     }
   else
     /* Only return non-zero when strictly inner than.  Note that, per
index 21431a280fae089f269708e2e91b234e193c1014..80765d5cca508890744f234aa5b68296dff33b86 100644 (file)
@@ -293,7 +293,7 @@ block_starting_point_at (CORE_ADDR pc, const struct block *block)
   if (new_block == NULL)
     return 1;
 
-  if (new_block == block || contained_in (new_block, block))
+  if (new_block == block || block->contains (new_block))
     return 0;
 
   /* The immediately preceding address belongs to a different block,
index 4c20b91f238ffa315fb2e4507a9948a45e351a9d..f2917b30740b4de8ee17f4653929a92b047f7f28 100644 (file)
@@ -86,7 +86,7 @@ innermost_block_tracker::update (const struct block *b,
 {
   if ((m_types & t) != 0
       && (m_innermost_block == NULL
-         || contained_in (b, m_innermost_block)))
+         || m_innermost_block->contains (b)))
     m_innermost_block = b;
 }
 
index 88984691ae96627e1bd6fab077cfaa4338852e4c..0d3bc292d4ebea9bf74e6aea69432f95e779ea37 100644 (file)
@@ -2139,8 +2139,8 @@ do_one_display (struct display *d)
   if (d->block)
     {
       if (d->pspace == current_program_space)
-       within_current_scope = contained_in (get_selected_block (0), d->block,
-                                            true);
+       within_current_scope = d->block->contains (get_selected_block (0),
+                                                  true);
       else
        within_current_scope = 0;
     }
@@ -2298,7 +2298,7 @@ Num Enb Expression\n"));
       else if (d->format.format)
        gdb_printf ("/%c ", d->format.format);
       gdb_puts (d->exp_string.c_str ());
-      if (d->block && !contained_in (get_selected_block (0), d->block, true))
+      if (d->block && !d->block->contains (get_selected_block (0), true))
        gdb_printf (_(" (cannot be evaluated in the current context)"));
       gdb_printf ("\n");
     }