binutils-gdb/gdb/python
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
..
lib/gdb Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-all-events.def Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-arch.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-auto-load.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-block.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-bpevent.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-breakpoint.c Convert observers to C++ 2018-03-19 09:37:49 -06:00
py-cmd.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-continueevent.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-event-types.def Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-event.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-event.h Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-events.h Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-evtregistry.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-evts.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-exitedevent.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-finishbreakpoint.c Convert observers to C++ 2018-03-19 09:37:49 -06:00
py-frame.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-framefilter.c Simplify exception handling in py-framefilter.c 2018-03-26 21:57:14 -06:00
py-function.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-gdb-readline.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-inferior.c Convert observers to C++ 2018-03-19 09:37:49 -06:00
py-infevents.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-infthread.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-instruction.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-instruction.h Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-lazy-string.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-linetable.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-newobjfileevent.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-objfile.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-param.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-prettyprint.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-progspace.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-record-btrace.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-record-btrace.h Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-record-full.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-record-full.h Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-record.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-record.h Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-ref.h Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-signalevent.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-stopevent.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-stopevent.h Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-symbol.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-symtab.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-threadevent.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-type.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-unwind.c Convert observers to C++ 2018-03-19 09:37:49 -06:00
py-utils.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-value.c Introduce a gdb_ref_ptr specialization for struct value 2018-04-06 15:44:46 -06:00
py-varobj.c Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00
py-xmethods.c Remove xmethod_worker::clone 2018-01-07 09:25:33 -05:00
python-config.py
python-internal.h Change frame_filter_flags to use DEF_ENUM_FLAGS_TYPE 2018-02-26 09:37:03 -07:00
python.c C++ify xmethod_worker, get rid of VEC(xmethod_worker_ptr) 2018-01-07 09:25:32 -05:00
python.h Update copyright year range in all GDB files 2018-01-02 07:38:06 +04:00