Use new_reference for struct value
value_incref returned its argument just as a convenience, which in the end turned out to only be used in precisely the cases where new_reference helps. So, this patch changes value_incref to return void and changes some value-using code to use new_reference. I also noticed that the comments for value_incref and value_decref were swapped, so this patch fixes those. ChangeLog 2018-04-30 Tom Tromey <tom@tromey.com> * varobj.c (install_new_value): Use new_reference. * value.h (value_incref): Return void. Swap intro comment with value_decref. * value.c (set_value_parent): Use new_reference. (value_incref): Return void. Update intro comment. (release_value): Use new_reference. * dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Use new_reference.
This commit is contained in:
parent
1831a9f9d3
commit
bbfa6f0086
@ -1,3 +1,13 @@
|
||||
2018-04-30 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* varobj.c (install_new_value): Use new_reference.
|
||||
* value.h (value_incref): Return void. Swap intro comment with
|
||||
value_decref.
|
||||
* value.c (set_value_parent): Use new_reference.
|
||||
(value_incref): Return void. Update intro comment.
|
||||
(release_value): Use new_reference.
|
||||
* dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Use new_reference.
|
||||
|
||||
2018-04-30 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* symfile-mem.c (symbol_file_add_from_memory): Use new_reference.
|
||||
|
@ -2482,7 +2482,7 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame,
|
||||
/* Preserve VALUE because we are going to free values back
|
||||
to the mark, but we still need the value contents
|
||||
below. */
|
||||
value_ref_ptr value_holder (value_incref (value));
|
||||
value_ref_ptr value_holder = value_ref_ptr::new_reference (value);
|
||||
free_values.free_to_mark ();
|
||||
|
||||
retval = allocate_value (subobj_type);
|
||||
|
10
gdb/value.c
10
gdb/value.c
@ -1133,7 +1133,7 @@ value_parent (const struct value *value)
|
||||
void
|
||||
set_value_parent (struct value *value, struct value *parent)
|
||||
{
|
||||
value->parent = value_ref_ptr (value_incref (parent));
|
||||
value->parent = value_ref_ptr::new_reference (parent);
|
||||
}
|
||||
|
||||
gdb_byte *
|
||||
@ -1572,14 +1572,12 @@ value_mark (void)
|
||||
return all_values.back ().get ();
|
||||
}
|
||||
|
||||
/* Take a reference to VAL. VAL will not be deallocated until all
|
||||
references are released. */
|
||||
/* See value.h. */
|
||||
|
||||
struct value *
|
||||
void
|
||||
value_incref (struct value *val)
|
||||
{
|
||||
val->reference_count++;
|
||||
return val;
|
||||
}
|
||||
|
||||
/* Release a reference to VAL, which was acquired with value_incref.
|
||||
@ -1635,7 +1633,7 @@ release_value (struct value *val)
|
||||
/* We must always return an owned reference. Normally this happens
|
||||
because we transfer the reference from the value chain, but in
|
||||
this case the value was not on the chain. */
|
||||
return value_ref_ptr (value_incref (val));
|
||||
return value_ref_ptr::new_reference (val);
|
||||
}
|
||||
|
||||
/* See value.h. */
|
||||
|
@ -88,13 +88,13 @@ struct value_print_options;
|
||||
|
||||
struct value;
|
||||
|
||||
/* Increase VAL's reference count. */
|
||||
|
||||
extern void value_incref (struct value *val);
|
||||
|
||||
/* Decrease VAL's reference count. When the reference count drops to
|
||||
0, VAL will be freed. */
|
||||
|
||||
extern struct value *value_incref (struct value *val);
|
||||
|
||||
/* Increate VAL's reference count. VAL is returned. */
|
||||
|
||||
extern void value_decref (struct value *val);
|
||||
|
||||
/* A policy class to interface gdb::ref_ptr with struct value. */
|
||||
|
@ -1329,7 +1329,7 @@ install_new_value (struct varobj *var, struct value *value, bool initial)
|
||||
code that might release it. */
|
||||
value_ref_ptr value_holder;
|
||||
if (value != NULL)
|
||||
value_holder.reset (value_incref (value));
|
||||
value_holder = value_ref_ptr::new_reference (value);
|
||||
|
||||
/* Below, we'll be comparing string rendering of old and new
|
||||
values. Don't get string rendering if the value is
|
||||
|
Loading…
Reference in New Issue
Block a user