Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Tom Tromey <tom@tromey.com>
To: Pedro Alves <palves@redhat.com>
Cc: Tom Tromey <tom@tromey.com>,  gdb-patches@sourceware.org
Subject: Re: [RFA 2/5] More uses of ui_out_emit_tuple
Date: Wed, 19 Apr 2017 02:42:00 -0000	[thread overview]
Message-ID: <87inm15day.fsf@tromey.com> (raw)
In-Reply-To: <9c78ec4d-1f47-1462-4a1b-125b78a8d3a7@redhat.com> (Pedro Alves's	message of "Tue, 18 Apr 2017 19:42:52 +0100")

>>>>> "Pedro" == Pedro Alves <palves@redhat.com> writes:

Pedro> Looks like the reason that this needed a new scope was
Pedro> this annotate_arg_end call.

Pedro> How about instead adding something like this:
[...]

That does make the patch clearer.  Here's the updated version; I'm not
resending the whole series as nothing else has changed.

I'm running this through the buildbot; OK if it passes?

Tom

commit 7ee4a9c7624658a17fd566b2a236260a5b2e258e
Author: Tom Tromey <tom@tromey.com>
Date:   Wed Apr 12 16:10:02 2017 -0600

    More uses of ui_out_emit_tuple
    
    This patch adds a few more uses of ui_out_emit_tuple.  In these cases
    a slightly more complicated change was needed.  This also adds
    annotate_arg_emitter, for use in stack.c, to avoid having to introduce
    a new scope and reindent the code for a single call.
    
    ChangeLog
    2017-04-18  Tom Tromey  <tom@tromey.com>
    
            * stack.c (print_frame_arg): Use ui_out_emit_tuple,
            annotate_arg_emitter.
            * breakpoint.c (print_mention_watchpoint)
            (print_mention_masked_watchpoint): Use ui_out_emit_tuple.
            * annotate.h (struct annotate_arg_emitter): New.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index f5fed2f..52560f7 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2017-04-18  Tom Tromey  <tom@tromey.com>
+
+	* stack.c (print_frame_arg): Use ui_out_emit_tuple,
+	annotate_arg_emitter.
+	* breakpoint.c (print_mention_watchpoint)
+	(print_mention_masked_watchpoint): Use ui_out_emit_tuple.
+	* annotate.h (struct annotate_arg_emitter): New.
+
 2017-04-13  Tom Tromey  <tom@tromey.com>
 
 	* record-btrace.c (record_btrace_insn_history)
diff --git a/gdb/annotate.h b/gdb/annotate.h
index a1454a1..7161689 100644
--- a/gdb/annotate.h
+++ b/gdb/annotate.h
@@ -74,6 +74,17 @@ extern void annotate_arg_name_end (void);
 extern void annotate_arg_value (struct type *);
 extern void annotate_arg_end (void);
 
+/* Wrap calls to annotate_arg_begin and annotate_arg_end in an RAII
+   class. */
+struct annotate_arg_emitter
+{
+  annotate_arg_emitter () { annotate_arg_begin (); }
+  ~annotate_arg_emitter () { annotate_arg_end (); }
+
+  annotate_arg_emitter (const annotate_arg_emitter &) = delete;
+  annotate_arg_emitter &operator= (const annotate_arg_emitter &) = delete;
+};
+
 extern void annotate_source (char *, int, int, int,
 			     struct gdbarch *, CORE_ADDR);
 
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 2ff4406..269cddd 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -10778,37 +10778,37 @@ print_it_watchpoint (bpstat bs)
 static void
 print_mention_watchpoint (struct breakpoint *b)
 {
-  struct cleanup *ui_out_chain;
   struct watchpoint *w = (struct watchpoint *) b;
   struct ui_out *uiout = current_uiout;
+  const char *tuple_name;
 
   switch (b->type)
     {
     case bp_watchpoint:
       uiout->text ("Watchpoint ");
-      ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
+      tuple_name = "wpt";
       break;
     case bp_hardware_watchpoint:
       uiout->text ("Hardware watchpoint ");
-      ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
+      tuple_name = "wpt";
       break;
     case bp_read_watchpoint:
       uiout->text ("Hardware read watchpoint ");
-      ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
+      tuple_name = "hw-rwpt";
       break;
     case bp_access_watchpoint:
       uiout->text ("Hardware access (read/write) watchpoint ");
-      ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
+      tuple_name = "hw-awpt";
       break;
     default:
       internal_error (__FILE__, __LINE__,
 		      _("Invalid hardware watchpoint type."));
     }
 
+  ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
   uiout->field_int ("number", b->number);
   uiout->text (": ");
   uiout->field_string ("exp", w->exp_string);
-  do_cleanups (ui_out_chain);
 }
 
 /* Implement the "print_recreate" breakpoint_ops method for
@@ -10977,31 +10977,31 @@ print_mention_masked_watchpoint (struct breakpoint *b)
 {
   struct watchpoint *w = (struct watchpoint *) b;
   struct ui_out *uiout = current_uiout;
-  struct cleanup *ui_out_chain;
+  const char *tuple_name;
 
   switch (b->type)
     {
     case bp_hardware_watchpoint:
       uiout->text ("Masked hardware watchpoint ");
-      ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
+      tuple_name = "wpt";
       break;
     case bp_read_watchpoint:
       uiout->text ("Masked hardware read watchpoint ");
-      ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
+      tuple_name = "hw-rwpt";
       break;
     case bp_access_watchpoint:
       uiout->text ("Masked hardware access (read/write) watchpoint ");
-      ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
+      tuple_name = "hw-awpt";
       break;
     default:
       internal_error (__FILE__, __LINE__,
 		      _("Invalid hardware watchpoint type."));
     }
 
+  ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
   uiout->field_int ("number", b->number);
   uiout->text (": ");
   uiout->field_string ("exp", w->exp_string);
-  do_cleanups (ui_out_chain);
 }
 
 /* Implement the "print_recreate" breakpoint_ops method for
diff --git a/gdb/stack.c b/gdb/stack.c
index 32acca1..fa47264 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -224,7 +224,6 @@ static void
 print_frame_arg (const struct frame_arg *arg)
 {
   struct ui_out *uiout = current_uiout;
-  struct cleanup *old_chain;
   const char *error_message = NULL;
 
   string_file stb;
@@ -235,9 +234,8 @@ print_frame_arg (const struct frame_arg *arg)
 	      || (!uiout->is_mi_like_p ()
 		  && arg->entry_kind == print_entry_values_compact));
 
-  annotate_arg_begin ();
-
-  old_chain = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
+  annotate_arg_emitter arg_emitter;
+  ui_out_emit_tuple tuple_emitter (uiout, NULL);
   fprintf_symbol_filtered (&stb, SYMBOL_PRINT_NAME (arg->sym),
 			   SYMBOL_LANGUAGE (arg->sym), DMGL_PARAMS | DMGL_ANSI);
   if (arg->entry_kind == print_entry_values_compact)
@@ -305,11 +303,6 @@ print_frame_arg (const struct frame_arg *arg)
     }
 
   uiout->field_stream ("value", stb);
-
-  /* Also invoke ui_out_tuple_end.  */
-  do_cleanups (old_chain);
-
-  annotate_arg_end ();
 }
 
 /* Read in inferior function local SYM at FRAME into ARGP.  Caller is


  reply	other threads:[~2017-04-19  2:42 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-14  2:23 [RFA 0/5] some cleanup removal for ui_out Tom Tromey
2017-04-14  2:23 ` [RFA 3/5] Use ui_out_emit_tuple in tracepoint.c Tom Tromey
2017-04-18 18:43   ` Pedro Alves
2017-04-14  2:23 ` [RFA 5/5] Use ui_out_emit_list Tom Tromey
2017-04-18 18:44   ` Pedro Alves
2017-04-14  2:23 ` [RFA 2/5] More uses of ui_out_emit_tuple Tom Tromey
2017-04-18 18:42   ` Pedro Alves
2017-04-19  2:42     ` Tom Tromey [this message]
2017-04-19  9:39       ` Pedro Alves
2017-04-14  2:24 ` [RFA 1/5] Use ui_out_emit_tuple Tom Tromey
2017-04-18 18:42   ` Pedro Alves
2017-04-14  2:42 ` [RFA 4/5] Use ui_out_emit_tuple in more places in MI Tom Tromey
2017-04-18 18:44   ` Pedro Alves
2017-04-22 15:44 ` [RFA 0/5] some cleanup removal for ui_out Tom Tromey
2017-04-27 14:51   ` Simon Marchi
2017-04-27 21:23     ` Tom Tromey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87inm15day.fsf@tromey.com \
    --to=tom@tromey.com \
    --cc=gdb-patches@sourceware.org \
    --cc=palves@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox