Patchwork [RFA,2/2] Remove prepare_re_set_context

login
register
mail settings
Submitter Tom Tromey
Date Oct. 9, 2017, 11:47 p.m.
Message ID <20171009234757.14624-3-tom@tromey.com>
Download mbox | patch
Permalink /patch/23420/
State New
Headers show

Comments

Tom Tromey - Oct. 9, 2017, 11:47 p.m.
prepare_re_set_context returns a null cleanup and doesn't seem
generally useful.  This patch removes it plus a few more cleanups; and
changes breakpoint_re_set to use scoped_restore rather than its own
manual mechanism.

ChangeLog
2017-10-09  Tom Tromey  <tom@tromey.com>

	* breakpoint.c (prepare_re_set_context): Remove.
	(breakpoint_re_set_one): Update.  Don't use cleanups.
	(breakpoint_re_set): Use scoped_restore, std::string, and
	scoped_restore_current_language.
---
 gdb/ChangeLog    |  7 +++++++
 gdb/breakpoint.c | 36 ++++++++++--------------------------
 2 files changed, 17 insertions(+), 26 deletions(-)
Simon Marchi - Oct. 10, 2017, 6:56 p.m.
On 2017-10-09 19:47, Tom Tromey wrote:
> prepare_re_set_context returns a null cleanup and doesn't seem
> generally useful.  This patch removes it plus a few more cleanups; and
> changes breakpoint_re_set to use scoped_restore rather than its own
> manual mechanism.
> 
> ChangeLog
> 2017-10-09  Tom Tromey  <tom@tromey.com>
> 
> 	* breakpoint.c (prepare_re_set_context): Remove.
> 	(breakpoint_re_set_one): Update.  Don't use cleanups.
> 	(breakpoint_re_set): Use scoped_restore, std::string, and
> 	scoped_restore_current_language.
> ---
>  gdb/ChangeLog    |  7 +++++++
>  gdb/breakpoint.c | 36 ++++++++++--------------------------
>  2 files changed, 17 insertions(+), 26 deletions(-)
> 
> diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
> index e56858286c..2eba1e9c48 100644
> --- a/gdb/breakpoint.c
> +++ b/gdb/breakpoint.c
> @@ -14088,17 +14088,6 @@ decode_location_default (struct breakpoint *b,
>    return {};
>  }
> 
> -/* Prepare the global context for a re-set of breakpoint B.  */
> -
> -static struct cleanup *
> -prepare_re_set_context (struct breakpoint *b)
> -{
> -  input_radix = b->input_radix;
> -  set_language (b->language);
> -
> -  return make_cleanup (null_cleanup, NULL);
> -}
> -
>  /* Reset a breakpoint given it's struct breakpoint * BINT.
>     The value we return ends up being the return value from 
> catch_errors.
>     Unused in this case.  */
> @@ -14108,11 +14097,11 @@ breakpoint_re_set_one (void *bint)
>  {
>    /* Get past catch_errs.  */
>    struct breakpoint *b = (struct breakpoint *) bint;
> -  struct cleanup *cleanups;
> 
> -  cleanups = prepare_re_set_context (b);
> +  input_radix = b->input_radix;
> +  set_language (b->language);
> +
>    b->ops->re_set (b);
> -  do_cleanups (cleanups);
>    return 0;
>  }
> 
> @@ -14123,13 +14112,10 @@ void
>  breakpoint_re_set (void)
>  {
>    struct breakpoint *b, *b_tmp;
> -  enum language save_language;
> -  int save_input_radix;
> -
> -  save_language = current_language->la_language;
> -  save_input_radix = input_radix;
> 
>    {
> +    scoped_restore_current_language save_language;
> +    scoped_restore save_input_radix = make_scoped_restore 
> (&input_radix);
>      scoped_restore_current_pspace_and_thread restore_pspace_thread;
> 
>      /* Note: we must not try to insert locations until after all
> @@ -14140,14 +14126,12 @@ breakpoint_re_set (void)
>      ALL_BREAKPOINTS_SAFE (b, b_tmp)
>        {
>  	/* Format possible error msg.  */
> -	char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
> -				    b->number);
> -	struct cleanup *cleanups = make_cleanup (xfree, message);
> -	catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
> -	do_cleanups (cleanups);
> +	std::string message
> +	  = string_printf ("Error in re-setting breakpoint %d: ",
> +			   b->number);
> +	catch_errors (breakpoint_re_set_one, b, message.c_str (),
> +		      RETURN_MASK_ALL);
>        }
> -    set_language (save_language);
> -    input_radix = save_input_radix;
> 
>      jit_breakpoint_re_set ();
>    }

LGTM.

Patch

diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index e56858286c..2eba1e9c48 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -14088,17 +14088,6 @@  decode_location_default (struct breakpoint *b,
   return {};
 }
 
-/* Prepare the global context for a re-set of breakpoint B.  */
-
-static struct cleanup *
-prepare_re_set_context (struct breakpoint *b)
-{
-  input_radix = b->input_radix;
-  set_language (b->language);
-
-  return make_cleanup (null_cleanup, NULL);
-}
-
 /* Reset a breakpoint given it's struct breakpoint * BINT.
    The value we return ends up being the return value from catch_errors.
    Unused in this case.  */
@@ -14108,11 +14097,11 @@  breakpoint_re_set_one (void *bint)
 {
   /* Get past catch_errs.  */
   struct breakpoint *b = (struct breakpoint *) bint;
-  struct cleanup *cleanups;
 
-  cleanups = prepare_re_set_context (b);
+  input_radix = b->input_radix;
+  set_language (b->language);
+
   b->ops->re_set (b);
-  do_cleanups (cleanups);
   return 0;
 }
 
@@ -14123,13 +14112,10 @@  void
 breakpoint_re_set (void)
 {
   struct breakpoint *b, *b_tmp;
-  enum language save_language;
-  int save_input_radix;
-
-  save_language = current_language->la_language;
-  save_input_radix = input_radix;
 
   {
+    scoped_restore_current_language save_language;
+    scoped_restore save_input_radix = make_scoped_restore (&input_radix);
     scoped_restore_current_pspace_and_thread restore_pspace_thread;
 
     /* Note: we must not try to insert locations until after all
@@ -14140,14 +14126,12 @@  breakpoint_re_set (void)
     ALL_BREAKPOINTS_SAFE (b, b_tmp)
       {
 	/* Format possible error msg.  */
-	char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
-				    b->number);
-	struct cleanup *cleanups = make_cleanup (xfree, message);
-	catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
-	do_cleanups (cleanups);
+	std::string message
+	  = string_printf ("Error in re-setting breakpoint %d: ",
+			   b->number);
+	catch_errors (breakpoint_re_set_one, b, message.c_str (),
+		      RETURN_MASK_ALL);
       }
-    set_language (save_language);
-    input_radix = save_input_radix;
 
     jit_breakpoint_re_set ();
   }