Use std::vector for traceframe_info::tvars
authorSimon Marchi <simon.marchi@polymtl.ca>
Sat, 14 Oct 2017 12:42:23 +0000 (08:42 -0400)
committerSimon Marchi <simon.marchi@ericsson.com>
Sat, 14 Oct 2017 12:42:23 +0000 (08:42 -0400)
Straightforward change to get rid of a VEC.  We need to new/delete
traceframe_info instead of malloc/free it.  I found three places that
allocate a traceframe_info (ctf_traceframe_info, tfile_traceframe_info
and parse_traceframe_info) and only one that frees it
(free_traceframe_info).

gdb/ChangeLog:

* tracepoint.h (struct traceframe_info) <tvars>: Change type to
std::vector<int>.
* tracepoint.c (free_traceframe_info): Deallocate with delete.
(traceframe_info_start_tvar): Adjust to vector change.
(parse_traceframe_info): Allocate with new.
* ctf.c (ctf_traceframe_info): Allocate with new, adjust to
vector change.
* tracefile-tfile.c (build_traceframe_info): Adjust to vector
change.
tfile_traceframe_info): Allocate with new.
* mi/mi-main.c (mi_cmd_trace_frame_collected): Adjust to vector
change.

gdb/ChangeLog
gdb/ctf.c
gdb/mi/mi-main.c
gdb/tracefile-tfile.c
gdb/tracepoint.c
gdb/tracepoint.h

index 773c8286b13af8f761bb679e5b364a1b0347cc63..51f37c3681a5d9e609624bc0e9bc5d646e520e22 100644 (file)
@@ -1,3 +1,18 @@
+2017-10-14  Simon Marchi  <simon.marchi@polymtl.ca>
+
+       * tracepoint.h (struct traceframe_info) <tvars>: Change type to
+       std::vector<int>.
+       * tracepoint.c (free_traceframe_info): Deallocate with delete.
+       (traceframe_info_start_tvar): Adjust to vector change.
+       (parse_traceframe_info): Allocate with new.
+       * ctf.c (ctf_traceframe_info): Allocate with new, adjust to
+       vector change.
+       * tracefile-tfile.c (build_traceframe_info): Adjust to vector
+       change.
+       tfile_traceframe_info): Allocate with new.
+       * mi/mi-main.c (mi_cmd_trace_frame_collected): Adjust to vector
+       change.
+
 2017-10-14  Simon Marchi  <simon.marchi@polymtl.ca>
 
        * tracepoint.c (traceframe_info): Rename to...
index d719163b35ab610236fc496bc7f322c8f124d88d..183ee34f96014269ab74360f2b87c2b333885900 100644 (file)
--- a/gdb/ctf.c
+++ b/gdb/ctf.c
@@ -1638,7 +1638,7 @@ ctf_trace_find (struct target_ops *self, enum trace_find_type type, int num,
 static struct traceframe_info *
 ctf_traceframe_info (struct target_ops *self)
 {
-  struct traceframe_info *info = XCNEW (struct traceframe_info);
+  traceframe_info *info = new traceframe_info;
   const char *name;
   struct bt_iter_pos *pos;
 
@@ -1682,7 +1682,7 @@ ctf_traceframe_info (struct target_ops *self)
 
          def = bt_ctf_get_field (event, scope, "num");
          vnum = (int) bt_ctf_get_uint64 (def);
-         VEC_safe_push (int, info->tvars, vnum);
+         info->tvars.push_back (vnum);
        }
       else
        {
index 5057f941d97988a9940e5b88674a46f308107afb..a94e329af8fe9d912be09f906bb1b6f57d80d51c 100644 (file)
@@ -2724,12 +2724,9 @@ mi_cmd_trace_frame_collected (const char *command, char **argv, int argc)
 
   /* Trace state variables.  */
   {
-    int tvar;
-    int i;
-
     ui_out_emit_list list_emitter (uiout, "tvars");
 
-    for (i = 0; VEC_iterate (int, tinfo->tvars, i, tvar); i++)
+    for (int tvar : tinfo->tvars)
       {
        struct trace_state_variable *tsv;
 
index 7288e7c261ec1c336b49b1d51c7061f667608d4e..007558167e167ee41150be0231feefa39574769a 100644 (file)
@@ -1075,7 +1075,7 @@ build_traceframe_info (char blocktype, void *data)
        int vnum;
 
        tfile_read ((gdb_byte *) &vnum, 4);
-       VEC_safe_push (int, info->tvars, vnum);
+       info->tvars.push_back (vnum);
       }
     case 'R':
     case 'S':
@@ -1095,7 +1095,7 @@ build_traceframe_info (char blocktype, void *data)
 static struct traceframe_info *
 tfile_traceframe_info (struct target_ops *self)
 {
-  struct traceframe_info *info = XCNEW (struct traceframe_info);
+  traceframe_info *info = new traceframe_info;
 
   traceframe_walk_blocks (build_traceframe_info, 0, info);
   return info;
index bbfc2ce5bc52ef16fac9fd147ab484e257b48ff3..2605c0ada96c0349d911c74762490798b4beeebb 100644 (file)
@@ -199,9 +199,8 @@ free_traceframe_info (struct traceframe_info *info)
   if (info != NULL)
     {
       VEC_free (mem_range_s, info->memory);
-      VEC_free (int, info->tvars);
 
-      xfree (info);
+      delete info;
     }
 }
 
@@ -4025,7 +4024,7 @@ traceframe_info_start_tvar (struct gdb_xml_parser *parser,
     = (const char *) xml_find_attribute (attributes, "id")->value;
   int id = gdb_xml_parse_ulongest (parser, id_attrib);
 
-  VEC_safe_push (int, info->tvars, id);
+  info->tvars.push_back (id);
 }
 
 /* Discard the constructed trace frame info (if an error occurs).  */
@@ -4072,10 +4071,9 @@ static const struct gdb_xml_element traceframe_info_elements[] = {
 struct traceframe_info *
 parse_traceframe_info (const char *tframe_info)
 {
-  struct traceframe_info *result;
+  traceframe_info *result = new traceframe_info;
   struct cleanup *back_to;
 
-  result = XCNEW (struct traceframe_info);
   back_to = make_cleanup (free_result, result);
 
   if (gdb_xml_parse_quick (_("trace frame info"),
index ffa645bacb0da00bbb29e5cd3787d2c60bc0a524..625415c5589d418be96470a98520fd725457b747 100644 (file)
 struct traceframe_info
 {
   /* Collected memory.  */
-  VEC(mem_range_s) *memory;
+  VEC(mem_range_s) *memory = NULL;
 
   /* Collected trace state variables.  */
-  VEC(int) *tvars;
+  std::vector<int> tvars;
 };
 
 /* A trace state variable is a value managed by a target being