binutils-gdb/gdb/mi
Tom Tromey 22bc8444e6 Introduce a gdb_ref_ptr specialization for struct value
struct value is internally reference counted and so, while it also has
some ownership rules unique to it, it makes sense to use a gdb_ref_ptr
when managing it automatically.

This patch removes the existing unique_ptr specialization in favor of
a reference-counted pointer.  It also introduces two other
clarifications:

1. Rename value_free to value_decref, which I think is more in line
   with what the function actually does; and

2. Change release_value to return a gdb_ref_ptr.  This change allows
   us to remove the confusing release_value_or_incref function,
   primarily by making it much simpler to reason about the result of
   release_value.

gdb/ChangeLog
2018-04-06  Tom Tromey  <tom@tromey.com>

	* varobj.c (varobj_clear_saved_item)
	(update_dynamic_varobj_children, install_new_value, ~varobj):
	Update.
	* value.h (value_incref): Move declaration earlier.
	(value_decref): Rename from value_free.
	(struct value_ref_policy): New.
	(value_ref_ptr): New typedef.
	(struct value_deleter): Remove.
	(gdb_value_up): Remove typedef.
	(release_value): Change return type.
	(release_value_or_incref): Remove.
	* value.c (set_value_parent): Update.
	(value_incref): Change return type.
	(value_decref): Rename from value_free.
	(value_free_to_mark, free_all_values, free_value_chain): Update.
	(release_value): Return value_ref_ptr.
	(release_value_or_incref): Remove.
	(record_latest_value, set_internalvar, clear_internalvar):
	Update.
	* stack.c (info_frame_command): Don't call value_free.
	* python/py-value.c (valpy_dealloc, valpy_new)
	(value_to_value_object): Update.
	* printcmd.c (do_examine): Update.
	* opencl-lang.c (lval_func_free_closure): Update.
	* mi/mi-main.c (register_changed_p): Don't call value_free.
	* mep-tdep.c (mep_frame_prev_register): Don't call value_free.
	* m88k-tdep.c (m88k_frame_prev_register): Don't call value_free.
	* m68hc11-tdep.c (m68hc11_frame_prev_register): Don't call
	value_free.
	* guile/scm-value.c (vlscm_free_value_smob)
	(vlscm_scm_from_value): Update.
	* frame.c (frame_register_unwind, frame_unwind_register_signed)
	(frame_unwind_register_unsigned, get_frame_register_bytes)
	(put_frame_register_bytes): Don't call value_free.
	* findvar.c (address_from_register): Don't call value_free.
	* dwarf2read.c (dwarf2_compute_name): Don't call value_free.
	* dwarf2loc.c (entry_data_value_free_closure)
	(value_of_dwarf_reg_entry, free_pieced_value_closure)
	(dwarf2_evaluate_loc_desc_full): Update.
	* breakpoint.c (update_watchpoint, breakpoint_init_inferior)
	(~bpstats, bpstats, bpstat_clear_actions, watchpoint_check)
	(~watchpoint, watch_command_1)
	(invalidate_bp_value_on_memory_change): Update.
	* alpha-tdep.c (alpha_register_to_value): Don't call value_free.
2018-04-06 15:44:46 -06:00
..
ChangeLog-1999-2003
mi-cmd-break.c Convert observers to C++ 2018-03-19 09:37:49 -06:00
mi-cmd-break.h Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-cmd-catch.c (Ada) Add gdb-mi support for stopping at start of exception handler. 2018-01-31 13:42:30 +01:00
mi-cmd-disas.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-cmd-env.c Move some declarations to source.h 2018-02-14 08:09:52 -07:00
mi-cmd-file.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-cmd-info.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-cmd-stack.c Change frame_filter_flags to use DEF_ENUM_FLAGS_TYPE 2018-02-26 09:37:03 -07:00
mi-cmd-target.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-cmd-var.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-cmds.c (Ada) Add gdb-mi support for stopping at start of exception handler. 2018-01-31 13:42:30 +01:00
mi-cmds.h (Ada) Add gdb-mi support for stopping at start of exception handler. 2018-01-31 13:42:30 +01:00
mi-common.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-common.h Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-console.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-console.h Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-getopt.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-getopt.h Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-interp.c Convert observers to C++ 2018-03-19 09:37:49 -06:00
mi-interp.h Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-main.c Introduce a gdb_ref_ptr specialization for struct value 2018-04-06 15:44:46 -06:00
mi-main.h Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-out.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-out.h Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-parse.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-parse.h Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
mi-symbol-cmds.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00