cleanup: use value_lazy_at instead of allocate_value_lazy/attribute setter
authorSanimir Agovic <sagovic@sourceware.org>
Thu, 29 Aug 2013 12:25:03 +0000 (12:25 +0000)
committerSanimir Agovic <sagovic@sourceware.org>
Thu, 29 Aug 2013 12:25:03 +0000 (12:25 +0000)
I came across a pattern used to construct a value in the following way:

  struct value *val = allocate_value_lazy (type);
  VALUE_LVAL (val) = lval_memory;
  set_value_address (val, address);

Instead we fold the above call into:

  value_at_lazy (type, addr);

2013-08-27  Sanimir Agovic  <sanimir.agovic@intel.com>

* dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Use value_at_lazy instead
of assembling value via allocate_value_lazy and attribute setter.
* findvar.c (default_read_var_value): Use value_at_lazy instead of
assembling value via allocate_value_lazy and attribute setter.
* valops.c (do_search_struct_field): Use value_at_lazy instead of
assembling value via allocate_value_lazy and attribute setter.

gdb/ChangeLog
gdb/dwarf2loc.c
gdb/findvar.c
gdb/valops.c

index 7f9056cc2ea27a6bef87b59ca51f8d97c4040d94..2f0bb8588ff7f7f9c9c6093155348101ffae1b95 100644 (file)
@@ -1,3 +1,12 @@
+2013-08-29  Sanimir Agovic  <sanimir.agovic@intel.com>
+
+       * dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Use value_at_lazy instead
+       of assembling value via allocate_value_lazy and attribute setter.
+       * findvar.c (default_read_var_value): Use value_at_lazy instead of
+       assembling value via allocate_value_lazy and attribute setter.
+       * valops.c (do_search_struct_field): Use value_at_lazy instead of
+       assembling value via allocate_value_lazy and attribute setter.
+
 2013-08-29  Sanimir Agovic  <sanimir.agovic@intel.com>
 
        * value.c (value_from_contents_and_address): Replace allocate_value and
index 02afcdf339bf6e07b6a9df8ed3a119fd499b712e..a1a384a201b5bd36dc8ea6dac3ed7c8002ecd425 100644 (file)
@@ -2303,11 +2303,9 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame,
            int in_stack_memory = dwarf_expr_fetch_in_stack_memory (ctx, 0);
 
            do_cleanups (value_chain);
-           retval = allocate_value_lazy (type);
-           VALUE_LVAL (retval) = lval_memory;
+           retval = value_at_lazy (type, address + byte_offset);
            if (in_stack_memory)
              set_value_stack (retval, 1);
-           set_value_address (retval, address + byte_offset);
          }
          break;
 
index f586ce24efeb8d9b8ea725f47d15e3d7150c6734..d59bee1aedc0735cccc78d5593cc6c1d8d84aef8 100644 (file)
@@ -502,7 +502,6 @@ default_read_var_value (struct symbol *var, struct frame_info *frame)
       return v;
 
     case LOC_STATIC:
-      v = allocate_value_lazy (type);
       if (overlay_debugging)
        addr = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (var),
                                         SYMBOL_OBJ_SECTION (SYMBOL_OBJFILE (var),
@@ -517,7 +516,6 @@ default_read_var_value (struct symbol *var, struct frame_info *frame)
        error (_("Unknown argument list address for `%s'."),
               SYMBOL_PRINT_NAME (var));
       addr += SYMBOL_VALUE (var);
-      v = allocate_value_lazy (type);
       break;
 
     case LOC_REF_ARG:
@@ -532,14 +530,12 @@ default_read_var_value (struct symbol *var, struct frame_info *frame)
        argref += SYMBOL_VALUE (var);
        ref = value_at (lookup_pointer_type (type), argref);
        addr = value_as_address (ref);
-       v = allocate_value_lazy (type);
        break;
       }
 
     case LOC_LOCAL:
       addr = get_frame_locals_address (frame);
       addr += SYMBOL_VALUE (var);
-      v = allocate_value_lazy (type);
       break;
 
     case LOC_TYPEDEF:
@@ -548,7 +544,6 @@ default_read_var_value (struct symbol *var, struct frame_info *frame)
       break;
 
     case LOC_BLOCK:
-      v = allocate_value_lazy (type);
       if (overlay_debugging)
        addr = symbol_overlayed_address
          (BLOCK_START (SYMBOL_BLOCK_VALUE (var)), SYMBOL_OBJ_SECTION (SYMBOL_OBJFILE (var),
@@ -575,7 +570,6 @@ default_read_var_value (struct symbol *var, struct frame_info *frame)
                     SYMBOL_PRINT_NAME (var));
 
            addr = value_as_address (regval);
-           v = allocate_value_lazy (type);
          }
        else
          {
@@ -620,7 +614,6 @@ default_read_var_value (struct symbol *var, struct frame_info *frame)
        if (obj_section
            && (obj_section->the_bfd_section->flags & SEC_THREAD_LOCAL) != 0)
          addr = target_translate_tls_address (obj_section->objfile, addr);
-       v = allocate_value_lazy (type);
       }
       break;
 
@@ -633,8 +626,7 @@ default_read_var_value (struct symbol *var, struct frame_info *frame)
       break;
     }
 
-  VALUE_LVAL (v) = lval_memory;
-  set_value_address (v, addr);
+  v = value_at_lazy (type, addr);
   return v;
 }
 
index f86b2835d548a82cde5a948de3363843f001ce27..890735e9b9b88ab07e518112ea5473b9c86be53c 100644 (file)
@@ -1950,14 +1950,12 @@ do_search_struct_field (const char *name, struct value *arg1, int offset,
            {
              CORE_ADDR base_addr;
 
-             v2  = allocate_value (basetype);
              base_addr = value_address (arg1) + boffset;
+             v2 = value_at_lazy (basetype, base_addr);
              if (target_read_memory (base_addr, 
                                      value_contents_raw (v2),
-                                     TYPE_LENGTH (basetype)) != 0)
+                                     TYPE_LENGTH (value_type (basetype))) != 0)
                error (_("virtual baseclass botch"));
-             VALUE_LVAL (v2) = lval_memory;
-             set_value_address (v2, base_addr);
            }
          else
            {