From patchwork Fri Feb 10 21:52:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 55477 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6CF6D38432FE for ; Fri, 10 Feb 2023 21:53:05 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from gproxy2-pub.mail.unifiedlayer.com (gproxy2-pub.mail.unifiedlayer.com [69.89.18.3]) by sourceware.org (Postfix) with ESMTPS id B60153858414 for ; Fri, 10 Feb 2023 21:52:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B60153858414 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=tromey.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tromey.com Received: from cmgw13.mail.unifiedlayer.com (unknown [10.0.90.128]) by progateway4.mail.pro1.eigbox.com (Postfix) with ESMTP id 0984810047E04 for ; Fri, 10 Feb 2023 21:52:31 +0000 (UTC) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with ESMTP id QbJmpX8AkNX2aQbJmpI2Zb; Fri, 10 Feb 2023 21:52:30 +0000 X-Authority-Reason: nr=8 X-Authority-Analysis: v=2.4 cv=NMAQR22g c=1 sm=1 tr=0 ts=63e6bc9e a=ApxJNpeYhEAb1aAlGBBbmA==:117 a=ApxJNpeYhEAb1aAlGBBbmA==:17 a=dLZJa+xiwSxG16/P+YVxDGlgEgI=:19 a=IkcTkHD0fZMA:10:nop_charset_1 a=m04uMKEZRckA:10:nop_rcvd_month_year a=Qbun_eYptAEA:10:endurance_base64_authed_username_1 a=CCpqsmhAAAAA:8 a=zstS-IiYAAAA:8 a=1yHbAJpnJ1oCp9NzdWwA:9 a=QEXdDO2ut3YA:10:nop_charset_2 a=ul9cdbp4aOFLsgKbc677:22 a=4G6NA9xxw8l3yy4pmD5M:22 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Cc:To:Content-Transfer-Encoding:Content-Type:MIME-Version: Message-Id:Date:Subject:From:Sender:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=/jjZZFEKZjVIS2BAg3il7bFm3/r7feMnGrbCi1tGPtE=; b=gUeCgqji1ughyQ99PWD5pt1ovu r2X7tjKLd9qEUuKbRtzUTG/k1FrorUpsU8t6WGmG4hcFsYVwxdzMmVmLK6zR3Rt01QdXfwhAppjyL uB/xgj76s5V2zLdHYJcHjSVVC; Received: from 75-166-130-93.hlrn.qwest.net ([75.166.130.93]:57244 helo=[192.168.0.21]) by box5379.bluehost.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1pQbJm-000WcR-GW; Fri, 10 Feb 2023 14:52:30 -0700 From: Tom Tromey Subject: [PATCH v2 00/48] Use methods for struct value Date: Fri, 10 Feb 2023 14:52:18 -0700 Message-Id: <20230209-submit-value-fixups-2023-v2-0-b0b27fd97177@tromey.com> MIME-Version: 1.0 X-B4-Tracking: v=1; b=H4sIAJS85mMC/42OSw6DIBRFt2IY9zWItcSOuo/GAZ9nJSlqeEhqj HsvuIIOz725n50RBofEHtXOAiZHbp4yiEvFzKimN4KzmZngouGCd0Cr9i5CUp8VYXDfdSEoJjQ orTR32XI1sBzXihB0UJMZS4FXFDEUYwmYc+fmq888Oopz2M4LqS7qH2upBg5ta42Q3c1q3T1jm D1uVzN71h/H8QOl56p92gAAAA== To: gdb-patches@sourceware.org Cc: Simon Marchi X-Mailer: b4 0.12.0 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box5379.bluehost.com X-AntiAbuse: Original Domain - sourceware.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tromey.com X-BWhitelist: no X-Source-IP: 75.166.130.93 X-Source-L: No X-Exim-ID: 1pQbJm-000WcR-GW X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 75-166-130-93.hlrn.qwest.net ([192.168.0.21]) [75.166.130.93]:57244 X-Source-Auth: tom+tromey.com X-Email-Count: 18 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-Spam-Status: No, score=-3021.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, JMQ_SPF_NEUTRAL, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org Sender: "Gdb-patches" 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,