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:
Tom Tromey 2018-04-29 21:07:03 -06:00
parent 1831a9f9d3
commit bbfa6f0086
5 changed files with 20 additions and 12 deletions

View file

@ -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. */