public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Tom Tromey <tom@tromey.com>
To: gdb-patches@sourceware.org
Cc: Simon Marchi <simon.marchi@efficios.com>
Subject: [PATCH v2 00/48] Use methods for struct value
Date: Fri, 10 Feb 2023 14:52:18 -0700	[thread overview]
Message-ID: <20230209-submit-value-fixups-2023-v2-0-b0b27fd97177@tromey.com> (raw)

This is v2 of the struct value series.  The original cover letter is
below.

This series changes many value-related functions to be methods.  It
also moves the definition of struct value to value.h, so that callers
will benefit by inlining the smaller methods.  The members of value
are all made private at the end of the series.

It's difficult to decide exactly which value functions ought to be
converted, because there are so many.  In the end I chose a relatively
minimal approach -- only those that require direct access to the inner
workings of value.

It's possible, even easy, to convert more functions.  If there are
some in particular that seem worthwhile, let me know.

I tacked on one small cleanup at the end of this series, but as it was
already fairly long, I didn't try to do all the possible cleanups.
For example, many things could use bool, some of the setter functions
could be removed in favor of specialized constructors, etc.

Regression tested on x86-64 Fedora 36.

Tom

---
Changes in v2:
- Added operator-> patch as suggested by Simon
- Re-checked the test suite and fixed a couple of bugs it found
- Re-ran tests, this time including libstdc++ debug build
- Link to v1: https://inbox.sourceware.org/gdb-patches/20230209-submit-value-fixups-2023-v1-0-55dc2794dbb9@tromey.com

---
Tom Tromey (48):
      Rename all fields of struct value
      Move ~value body out-of-line
      Move struct value to value.h
      Turn value_type into method
      Turn deprecated_set_value_type into a method
      Turn value_arch into method
      Turn value_bitsize into method
      Turn value_bitpos into method
      Turn value_parent into method
      Turn value_offset into method
      Turn deprecated_value_modifiable into method
      Turn value_enclosing_type into method
      Turn some value offset functions into method
      Turn value_lazy and set_value_lazy functions into methods
      Turn value_stack and set_value_stack functions into methods
      Turn value_computed_closure and value_computed_funcs functions into methods
      Convert value_lval_const and deprecated_lval_hack to methods
      Turn value_initialized and set_value_initialized functions into methods
      Turn value_address and set_value_address functions into methods
      Turn more deprecated_* functions into methods
      Turn allocate_value_lazy into a static "constructor"
      Turn allocate_value into a static "constructor"
      Turn allocate_computed_value into static "constructor"
      Turn allocate_optimized_out_value into static "constructor"
      Turn value_zero into static "constructor"
      Turn some value_contents functions into methods
      Turn value_fetch_lazy into a method
      Turn allocate_value_contents into a method
      Turn value_contents_eq into a method
      Turn value_bits_synthetic_pointer into a method
      Move value_ref_policy methods out-of-line
      Turn value_incref and value_decref into methods
      Turn remaining value_contents functions into methods
      Fully qualify calls to copy in value.c
      Turn value_copy into a method
      Turn many optimized-out value functions into methods
      Turn value_non_lval and value_force_lval into methods
      Turn set_value_component_location into method
      Change some code to use value methods
      Turn some xmethod functions into methods
      Turn preserve_one_value into method
      Turn various value copying-related functions into methods
      Add value::set_modifiable
      Make struct value data members private
      Make ~value private
      Introduce set_lval method on value
      Remove deprecated_lval_hack
      Rely on value_ref_ptr::operator->

 gdb/aarch64-linux-tdep.c                |    2 +-
 gdb/aarch64-tdep.c                      |   36 +-
 gdb/ada-exp.h                           |    4 +-
 gdb/ada-exp.y                           |    4 +-
 gdb/ada-lang.c                          |  566 ++++++------
 gdb/ada-tasks.c                         |    8 +-
 gdb/ada-valprint.c                      |   60 +-
 gdb/ada-varobj.c                        |   12 +-
 gdb/alpha-tdep.c                        |   14 +-
 gdb/amd64-tdep.c                        |   30 +-
 gdb/amd64-windows-tdep.c                |   20 +-
 gdb/arc-tdep.c                          |    8 +-
 gdb/arch-utils.c                        |    4 +-
 gdb/arm-tdep.c                          |   16 +-
 gdb/avr-tdep.c                          |    4 +-
 gdb/ax-gdb.c                            |    8 +-
 gdb/bfin-tdep.c                         |    6 +-
 gdb/breakpoint.c                        |   55 +-
 gdb/c-exp.h                             |    2 +-
 gdb/c-lang.c                            |   16 +-
 gdb/c-valprint.c                        |   46 +-
 gdb/c-varobj.c                          |    8 +-
 gdb/cli/cli-cmds.c                      |    6 +-
 gdb/cli/cli-dump.c                      |   12 +-
 gdb/cli/cli-utils.c                     |    4 +-
 gdb/compile/compile-c-symbols.c         |    4 +-
 gdb/compile/compile-cplus-symbols.c     |    4 +-
 gdb/compile/compile-loc2c.c             |    4 +-
 gdb/compile/compile-object-load.c       |    6 +-
 gdb/cp-abi.c                            |    2 +-
 gdb/cp-abi.h                            |    6 +-
 gdb/cp-valprint.c                       |   40 +-
 gdb/cris-tdep.c                         |    4 +-
 gdb/csky-tdep.c                         |    4 +-
 gdb/d-valprint.c                        |   15 +-
 gdb/darwin-nat-info.c                   |    2 +-
 gdb/dtrace-probe.c                      |    2 +-
 gdb/dummy-frame.c                       |    4 +-
 gdb/dwarf2/expr.c                       |  176 ++--
 gdb/dwarf2/frame.c                      |    4 +-
 gdb/dwarf2/loc.c                        |   58 +-
 gdb/dwarf2/read.c                       |    4 +-
 gdb/elfread.c                           |   14 +-
 gdb/eval.c                              |  252 +++---
 gdb/expop.h                             |   18 +-
 gdb/f-lang.c                            |  184 ++--
 gdb/f-valprint.c                        |   14 +-
 gdb/findcmd.c                           |    4 +-
 gdb/findvar.c                           |   52 +-
 gdb/frame-unwind.c                      |   16 +-
 gdb/frame.c                             |   56 +-
 gdb/frv-tdep.c                          |   10 +-
 gdb/gdbtypes.c                          |   14 +-
 gdb/gdbtypes.h                          |    4 +-
 gdb/gnu-v2-abi.c                        |   31 +-
 gdb/gnu-v3-abi.c                        |   68 +-
 gdb/go-valprint.c                       |    8 +-
 gdb/guile/scm-math.c                    |   12 +-
 gdb/guile/scm-pretty-print.c            |    8 +-
 gdb/guile/scm-value.c                   |   44 +-
 gdb/h8300-tdep.c                        |    6 +-
 gdb/hppa-tdep.c                         |   20 +-
 gdb/i386-darwin-tdep.c                  |    6 +-
 gdb/i386-tdep.c                         |   56 +-
 gdb/i386-windows-tdep.c                 |    2 +-
 gdb/i387-tdep.c                         |    4 +-
 gdb/ia64-tdep.c                         |   32 +-
 gdb/infcall.c                           |   18 +-
 gdb/infcmd.c                            |   10 +-
 gdb/infrun.c                            |   22 +-
 gdb/iq2000-tdep.c                       |    6 +-
 gdb/linespec.c                          |    2 +-
 gdb/lm32-tdep.c                         |    4 +-
 gdb/loongarch-tdep.c                    |    6 +-
 gdb/m2-lang.c                           |   12 +-
 gdb/m2-valprint.c                       |   14 +-
 gdb/m32c-tdep.c                         |    6 +-
 gdb/m32r-tdep.c                         |   10 +-
 gdb/m68hc11-tdep.c                      |    8 +-
 gdb/m68k-tdep.c                         |    4 +-
 gdb/mep-tdep.c                          |   10 +-
 gdb/mi/mi-cmd-stack.c                   |    9 +-
 gdb/mi/mi-main.c                        |   10 +-
 gdb/mips-tdep.c                         |   32 +-
 gdb/mn10300-tdep.c                      |   12 +-
 gdb/msp430-tdep.c                       |    8 +-
 gdb/nds32-tdep.c                        |    8 +-
 gdb/nios2-tdep.c                        |    6 +-
 gdb/objc-lang.c                         |    2 +-
 gdb/opencl-lang.c                       |  115 ++-
 gdb/or1k-tdep.c                         |   18 +-
 gdb/p-exp.y                             |    6 +-
 gdb/p-valprint.c                        |   38 +-
 gdb/ppc-linux-nat.c                     |   18 +-
 gdb/ppc-linux-tdep.c                    |    4 +-
 gdb/ppc-sysv-tdep.c                     |   20 +-
 gdb/printcmd.c                          |   80 +-
 gdb/python/py-framefilter.c             |    8 +-
 gdb/python/py-inferior.c                |    4 +-
 gdb/python/py-prettyprint.c             |   10 +-
 gdb/python/py-type.c                    |    2 +-
 gdb/python/py-unwind.c                  |   14 +-
 gdb/python/py-value.c                   |   60 +-
 gdb/python/py-xmethods.c                |    6 +-
 gdb/regcache.c                          |   14 +-
 gdb/riscv-tdep.c                        |   32 +-
 gdb/rl78-tdep.c                         |    4 +-
 gdb/rs6000-aix-tdep.c                   |   20 +-
 gdb/rs6000-lynx178-tdep.c               |   18 +-
 gdb/rust-lang.c                         |   94 +-
 gdb/rx-tdep.c                           |    8 +-
 gdb/s390-tdep.c                         |   34 +-
 gdb/sh-tdep.c                           |   20 +-
 gdb/sparc-tdep.c                        |   12 +-
 gdb/sparc64-tdep.c                      |    8 +-
 gdb/stack.c                             |   64 +-
 gdb/std-regs.c                          |    8 +-
 gdb/testsuite/gdb.gdb/python-helper.exp |    6 +-
 gdb/tic6x-tdep.c                        |    8 +-
 gdb/tilegx-tdep.c                       |    8 +-
 gdb/tracepoint.c                        |    8 +-
 gdb/typeprint.c                         |    6 +-
 gdb/v850-tdep.c                         |   14 +-
 gdb/valarith.c                          |  208 ++---
 gdb/valops.c                            |  525 ++++++-----
 gdb/valprint.c                          |  112 ++-
 gdb/value.c                             | 1508 +++++++++++--------------------
 gdb/value.h                             | 1111 +++++++++++++++--------
 gdb/varobj.c                            |   32 +-
 gdb/vax-tdep.c                          |    4 +-
 gdb/windows-tdep.c                      |    8 +-
 gdb/xstormy16-tdep.c                    |    8 +-
 gdb/xtensa-tdep.c                       |    8 +-
 133 files changed, 3295 insertions(+), 3462 deletions(-)
---
base-commit: 632652850db23bfec2499febe03c9ac4aa0b8dce
change-id: 20230209-submit-value-fixups-2023-3e7d7c6750af

Best regards,
-- 
Tom Tromey <tom@tromey.com>


             reply	other threads:[~2023-02-10 21:52 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-10 21:52 Tom Tromey [this message]
2023-02-10 21:52 ` [PATCH v2 01/48] Rename all fields of " Tom Tromey
2023-02-11 13:44   ` Simon Marchi
2023-02-13 14:15     ` Tom Tromey
2023-02-10 21:52 ` [PATCH v2 02/48] Move ~value body out-of-line Tom Tromey
2023-02-10 21:52 ` [PATCH v2 03/48] Move struct value to value.h Tom Tromey
2023-02-10 21:52 ` [PATCH v2 04/48] Turn value_type into method Tom Tromey
2023-02-10 21:52 ` [PATCH v2 05/48] Turn deprecated_set_value_type into a method Tom Tromey
2023-02-10 21:52 ` [PATCH v2 06/48] Turn value_arch into method Tom Tromey
2023-02-10 21:52 ` [PATCH v2 07/48] Turn value_bitsize " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 08/48] Turn value_bitpos " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 09/48] Turn value_parent " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 10/48] Turn value_offset " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 11/48] Turn deprecated_value_modifiable " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 12/48] Turn value_enclosing_type " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 13/48] Turn some value offset functions " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 14/48] Turn value_lazy and set_value_lazy functions into methods Tom Tromey
2023-02-10 21:52 ` [PATCH v2 15/48] Turn value_stack and set_value_stack " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 16/48] Turn value_computed_closure and value_computed_funcs " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 17/48] Convert value_lval_const and deprecated_lval_hack to methods Tom Tromey
2023-02-10 21:52 ` [PATCH v2 18/48] Turn value_initialized and set_value_initialized functions into methods Tom Tromey
2023-02-10 21:52 ` [PATCH v2 19/48] Turn value_address and set_value_address " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 20/48] Turn more deprecated_* " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 21/48] Turn allocate_value_lazy into a static "constructor" Tom Tromey
2023-02-10 21:52 ` [PATCH v2 22/48] Turn allocate_value " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 23/48] Turn allocate_computed_value into " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 24/48] Turn allocate_optimized_out_value " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 25/48] Turn value_zero " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 26/48] Turn some value_contents functions into methods Tom Tromey
2023-02-10 21:52 ` [PATCH v2 27/48] Turn value_fetch_lazy into a method Tom Tromey
2023-02-10 21:52 ` [PATCH v2 28/48] Turn allocate_value_contents " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 29/48] Turn value_contents_eq " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 30/48] Turn value_bits_synthetic_pointer " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 31/48] Move value_ref_policy methods out-of-line Tom Tromey
2023-02-10 21:52 ` [PATCH v2 32/48] Turn value_incref and value_decref into methods Tom Tromey
2023-02-10 21:52 ` [PATCH v2 33/48] Turn remaining value_contents functions " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 34/48] Fully qualify calls to copy in value.c Tom Tromey
2023-02-10 21:52 ` [PATCH v2 35/48] Turn value_copy into a method Tom Tromey
2023-02-10 21:52 ` [PATCH v2 36/48] Turn many optimized-out value functions into methods Tom Tromey
2023-02-10 21:52 ` [PATCH v2 37/48] Turn value_non_lval and value_force_lval " Tom Tromey
2023-02-10 21:52 ` [PATCH v2 38/48] Turn set_value_component_location into method Tom Tromey
2023-02-10 21:52 ` [PATCH v2 39/48] Change some code to use value methods Tom Tromey
2023-02-10 21:52 ` [PATCH v2 40/48] Turn some xmethod functions into methods Tom Tromey
2023-02-10 21:52 ` [PATCH v2 41/48] Turn preserve_one_value into method Tom Tromey
2023-02-10 21:53 ` [PATCH v2 42/48] Turn various value copying-related functions into methods Tom Tromey
2023-02-11 13:46   ` Simon Marchi
2023-02-12 15:14     ` Tom Tromey
2023-02-10 21:53 ` [PATCH v2 43/48] Add value::set_modifiable Tom Tromey
2023-02-10 21:53 ` [PATCH v2 44/48] Make struct value data members private Tom Tromey
2023-02-10 21:53 ` [PATCH v2 45/48] Make ~value private Tom Tromey
2023-02-10 21:53 ` [PATCH v2 46/48] Introduce set_lval method on value Tom Tromey
2023-02-10 21:53 ` [PATCH v2 47/48] Remove deprecated_lval_hack Tom Tromey
2023-02-10 21:53 ` [PATCH v2 48/48] Rely on value_ref_ptr::operator-> Tom Tromey
2023-02-11 13:40 ` [PATCH v2 00/48] Use methods for struct value Simon Marchi
2023-02-11 13:47   ` Simon Marchi
2023-02-12  4:11     ` Tom Tromey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230209-submit-value-fixups-2023-v2-0-b0b27fd97177@tromey.com \
    --to=tom@tromey.com \
    --cc=gdb-patches@sourceware.org \
    --cc=simon.marchi@efficios.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).