From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id KRUBFgVkl2daIRwAWB0awg (envelope-from ) for ; Mon, 27 Jan 2025 05:46:29 -0500 Received: by simark.ca (Postfix, from userid 112) id 4BB271E105; Mon, 27 Jan 2025 05:46:29 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.3 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.0 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 8FA271E08E for ; Mon, 27 Jan 2025 05:46:28 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E333B3857C6C for ; Mon, 27 Jan 2025 10:46:27 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E333B3857C6C Received: from us-smtp-delivery-114.mimecast.com (us-smtp-delivery-114.mimecast.com [170.10.133.114]) by sourceware.org (Postfix) with ESMTP id 0F49A3858D37 for ; Mon, 27 Jan 2025 10:45:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0F49A3858D37 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=labware.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=labware.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0F49A3858D37 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.133.114 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1737974734; cv=none; b=scjfU/3SiLDwiR7Vmq1MTk/18Khz7b1MwEhd0f2jLpIWDeBn8zcRbVZNBOl3785zsTWDSIB+fZO0SGeiqikBC7JYB6NeKMepHBXZde0e8KPH3J5jh+/3sqJP6DGXYRv04rhcX1aF4PS5mU40APH205VLeSq2KGRv6UXjIv5rKtg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1737974734; c=relaxed/simple; bh=AVaJXuEuQ3mjHd3R+KmJeJuszNujqwnjfJtiYy6oKFI=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=AyqdZuwvo+npNkI3tlEOzgMle/+cwThe4frFvztUCOgbIAcP/AOEZb8DFSSshq9m+JyXJXG4w0wrXK8DzdzbSEV8/0TakB1ekKWCR0Iq6C5yYWq0A6lYMT8tSUt8ZSAr0zoZFikcLNOjriAQ2SikTwPUKlJOJy9DMYhBSU+4XwQ= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0F49A3858D37 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2041.outbound.protection.outlook.com [104.47.66.41]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-550-QgbGQDHiN0KLnqs9FDSGUA-1; Mon, 27 Jan 2025 05:45:32 -0500 X-MC-Unique: QgbGQDHiN0KLnqs9FDSGUA-1 X-Mimecast-MFC-AGG-ID: QgbGQDHiN0KLnqs9FDSGUA Received: from SA0PR17MB4314.namprd17.prod.outlook.com (2603:10b6:806:e7::16) by DM4PR17MB6954.namprd17.prod.outlook.com (2603:10b6:8:18e::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8377.22; Mon, 27 Jan 2025 10:45:29 +0000 Received: from SA0PR17MB4314.namprd17.prod.outlook.com ([fe80::38a7:a6f2:3b95:bc26]) by SA0PR17MB4314.namprd17.prod.outlook.com ([fe80::38a7:a6f2:3b95:bc26%5]) with mapi id 15.20.8377.021; Mon, 27 Jan 2025 10:45:29 +0000 From: Jan Vrany To: gdb-patches@sourceware.org CC: Jan Vrany , Andrew Burgess Subject: [RFC 0/9] Attempt to unify Python object's lifecycle Date: Mon, 27 Jan 2025 10:44:26 +0000 Message-ID: <20250127104435.823519-1-jan.vrany@labware.com> X-Mailer: git-send-email 2.45.2 X-ClientProxiedBy: LO4P265CA0183.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:311::6) To SA0PR17MB4314.namprd17.prod.outlook.com (2603:10b6:806:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA0PR17MB4314:EE_|DM4PR17MB6954:EE_ X-MS-Office365-Filtering-Correlation-Id: bdd00130-7e3f-43f6-1f55-08dd3ebfb771 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024 X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?dQR+mSNDPxJ1fxnEVOnImCCJ5LP7L1cc899/Oa3I60rJCClaBoXyYAKU6d/O?= =?us-ascii?Q?T6vC3AyE/EljkqqxsOS8WkkilSdevtD2PNqqRy7eAa8PODM/uXQcQxVQikNb?= =?us-ascii?Q?x2/+oi5QEkxrnoSQ8kAMrEpRbJBrATw5WoEyAtPyDQLPTXyNm+VHDAGgC+sG?= =?us-ascii?Q?sD8sD3g2TmAYxarNKG8qQo4ELuFuqCT3yRttpC8q4pCBgjizq8jZcUcwBjKB?= =?us-ascii?Q?XPuCKJ52b0MekMV0Om6Lwo19//DuITYol3Oc4LIM3p4tEGApipylPVBtDiI1?= =?us-ascii?Q?VLdtjgiymyrHpj0IWPWyO32kaFwSkbk5ROGsx25ye+rc6hoNv0gimF6FsruU?= =?us-ascii?Q?CABxHl0RGM0zO6JFCNm627z1ZuSkD6X+h+w+unXy2mvcovsdHoLWDygoxLuB?= =?us-ascii?Q?ImPKruteLZPhmxSt6LGGMRIaHfU7hQR+De1uf4DWMn3/D4/fbpFStyIy6p8W?= =?us-ascii?Q?yALYSV8cxexkD+KuSpYCcnQ5wOwnrHHZZn5OqtWV/Jn4+JU1K5HFkD4MES1c?= =?us-ascii?Q?4EkrnHzRI8SHW44cX9EAkj/uW1geGqH0BpwWBCNPtuBnUDK0uEs1jh2vfSZH?= =?us-ascii?Q?cKbw7HGRHkJwH7pAH997CpPwHGmTQ8dXFuw/LMhu1CWSn9t4Vi4elhV5ZE3K?= =?us-ascii?Q?WwNY4vAcqh0Qqs7X8uN2kKwCIluFBi5uYLCuyWJXkQA1DPmeN6NakS3IgNiM?= =?us-ascii?Q?Ena8LBxFw8XZyryVTvsnMgWrakIsnrbFrMCxAmEqkTlNeOqzOI8OHSNv03qR?= =?us-ascii?Q?Gkxq2CA3JY5nJLAjH9uznqvdkUQ7mfIqFjv29BRHPqeAkM2ukRBB+MO1mczQ?= =?us-ascii?Q?VlKL0C3dh36oVg/n2eLvOES0A39Y1dOCIshi03FcCV1FJU9vh3fpPuRd3Xw5?= =?us-ascii?Q?d1i8bJbKYcKfTP+x4frMZPyaMzSuOrRtM+xDxzeasUQnaOLwObYLhcR+JzBl?= =?us-ascii?Q?cp/z36Ri9G2wJ0CaDHztuyBptqPYkgv++jGoZfGA9pwezp/wLS2vrZblxhZm?= =?us-ascii?Q?sZW2rHl2HNWA/JJzN4I8/nXcBLppo2tPS5BWol72RctzoppXHoxOIdqtUfdl?= =?us-ascii?Q?0+rPOOUPP5qtXEMmH8p9r9JO/iloNeNo8eibKV51ITvwp9C8xUY7NgjuI2sj?= =?us-ascii?Q?1x5c8KHtQgNQjdqxtVrXlat+p/RoqHyRn3elz99a9Dst5+lylJtR2+x9Risw?= =?us-ascii?Q?gkfgyxjGBugWIbqvg1d0BqJDokHF+ZT0CE/4Q+5Xllp5VVpxT9Ncka0TtS89?= =?us-ascii?Q?dx7xe/AxTOjPHpWUMH+ROoMRorh+OaEZ7NrZbnRPnra+mmjbUgQSVGFSfRdw?= =?us-ascii?Q?gMZKG9Qdx/mYUIkEsA4sC27rXrCf0G9AoU8FFDdlua+MYg=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA0PR17MB4314.namprd17.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024); DIR:OUT; SFP:1102 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?yZ3Q6svdkY2SzPcb9l+DCXStONVXuGXM0RUlfY8FHuW8OKMp84ZAJqb6G2YA?= =?us-ascii?Q?iWTDmNdQwSyqtEY/dIvL6b2Q+4RhNIhctxJYQpkh+XKK0tSedyiLV59u+IdL?= =?us-ascii?Q?xyolDfDR1eC0V0PpuU336jtry2f6jmr1dITCh5H908l54BZwn6i+Y5JOHano?= =?us-ascii?Q?BJ2dNu52BwqWiZaRTzJeB0V8RF004dkgNXmrHa+jhvgJs/LsK+Asks8hq3db?= =?us-ascii?Q?xfeSm3cd1Rx2Bxwp7oLCxvKSLQx+Vw3fPIxlMW6py9S4JE7FI/unTRnFldpr?= =?us-ascii?Q?tnFjXSaeyH81zSmS2iYTVzJrZVbEk8XWNLilVmqy0+5yWDAbmpmzUAkQtk3t?= =?us-ascii?Q?IxwlmdkuoHV9Z9YsNu+Kv2mv9G6mqYuneoFJ5+NG8vz28Jpof2GJnuDkrNmc?= =?us-ascii?Q?UREKnLXJ+Smm6MUhtp2G+iV/7SkbC0xMTMiepQ7qzEwUqWngGDXh3vkVk/QP?= =?us-ascii?Q?/IK//oBdUduSrEvHUH4a1N3WIV6CkFcVVVUo7Z30qS6p+x1+sDX5bXXjlEHD?= =?us-ascii?Q?lAb6alRtVtUXPsJVdNpnGTjjSTYMsojT0HIVltPVeYiNRRvyUnj+AxafehXP?= =?us-ascii?Q?cs8u//EuFcocPusNulXNEPlIPt19CcxczSxo2ok3eKbZZlCVWOnNDUCMfzK+?= =?us-ascii?Q?XoLsp4lHDt/R9PmHq/Jzjq+1KyyPdgckhGSYYm9bNt9hhyyLbXvBlZmbVjH9?= =?us-ascii?Q?5RwgjrfL0cfSKO8MokeiO2in3yAaiYOlGgp4Z6e2Fbj8/Em1xliB+nEIBhtY?= =?us-ascii?Q?YzDlUu4bK60vwAaHUxiU1EUk6mzVhn/QSuEZeYfCp7PZHqg+x7qOpdDXDDFC?= =?us-ascii?Q?m7XJPLH+P8NY4vSrJbTRsmVWUsF/ZVPtJ6iiIueVxwz4v2hXlNVDqxd7Dacl?= =?us-ascii?Q?q29Q5SrFKechHa6R8rjewkfTAkwCaK+d9nzFfoWIxCHpH1M6696CGAJOOGpm?= =?us-ascii?Q?0LX4MVGLybMU0Q9AjZCPk3BZrjPuCCSlHvsiTFaFK2GSdfC+oowC3HHdzSbW?= =?us-ascii?Q?4rYhskwKSNwsJ5e7WdNdKTDzTo4WB4TVd3zuU7EEJGNm6jagyEz925HBBuGN?= =?us-ascii?Q?UP91IC/2f7LzGmDhO5M71OymDIbTRhSfDDBNAecxurW1wMlWnYCy90FZiavU?= =?us-ascii?Q?yhoJlwFfbjii7iULpz9XJwetO5S9Ho6Iwmm4VCdVEZqc4JZRLsm5LEW76gO5?= =?us-ascii?Q?gR3W/33EYcV6PNWqFf9uKnD43UsTdoKlrjXsY6kwFoCmIZ1newla4ZCTsb98?= =?us-ascii?Q?AgdhGFTIgrAvGtApU8rZalp3tVtsEPySyzPyWn3VnBoFVwPk/PaYMwcLgKj1?= =?us-ascii?Q?r1lNszmLQdlulpat3zHtdsywv/jByYp+5EqRpTV0D7nwI0RkAr6YzplTPyfl?= =?us-ascii?Q?a5ttYgila7zHWmpUOZzvoEvDL0TP4PpYdhiudtDznv9nusw/5qxgShIf5ZTj?= =?us-ascii?Q?R6zDbKxQ7LurFZNkdGTq52R1zOwJ9UQRlryUgwqiDAzl5dhXw6otJ89naMfs?= =?us-ascii?Q?batGi+/Jp6aF4vd+MsNmqfxne+jZDkkajYHCK/sUiOVuoYi3KNRdWf3JpvYZ?= =?us-ascii?Q?b7Cbrl3JCPNsGtiiB++R0Ke1bGxHvQ5ws2LdAiBL?= X-OriginatorOrg: labware.com X-MS-Exchange-CrossTenant-Network-Message-Id: bdd00130-7e3f-43f6-1f55-08dd3ebfb771 X-MS-Exchange-CrossTenant-AuthSource: SA0PR17MB4314.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2025 10:45:29.6780 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b5db0322-1aa0-4c0a-859c-ad0f96966f4c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5/YMbRcoEK7k1x1JAcuzNlQ9Sq14ntSzX6nmsGVkXS9VMaoW7RhAsqpfSyUEOzngMvbrnUc/6zv5wMYhEKm2KQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR17MB6954 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: zhbzm8VBVza1vR3-Y16VUr1XZ5j80WSj0KxC9bs9fOI_1737974731 X-Mimecast-Originator: labware.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=WINDOWS-1252 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org Hi, this RFC is an attempt to systematically address Andrew's comment on a patch I submitted earlier [1]. In particular, this part: > I don't really like the approach taken by this function. Each time the > function is called we get a new gdb.Compunit object created and chained > onto the objfile. This is in fact true for other objects - gdb.Symtab, gdb.Symbol, gdb.Type. Moreover each of these objects have their own copy of (largely same) housekeeping code. The gdb.Block used to be the same but not long ago it was changed so gdb.Blocks are now interned (memoized). From the user point of view, I found it bit counter-intuitive. My idea was to refactor this housekeeping code into a common class. This RFC is result of several iterations. Tested on x86_64-linux. First four commits expand existing code to intern (memoize) gdb.Symtab, gdb.Symbol and gdb.Type. The rest then introduces template classes that implement necessary housekeeping and converts gdb.Symtab, gdb.Symbol and gdb.Type to use it. It could go further (one can convert gdb.Block too and gdb.Value and gdb.Value.type and dynamic_type could be further simplified too) but I decided to stop here. The main reason is that it turned not to be as simple as I thought - there seem to be few differences here and there (see [2]). This complicated the housekeeping classes (gdbpy_registry and associated "storage"). My C++ is is pretty basic so perhaps there's better and simpler way of doing it. Another reason is that I was hoping for some code reduction in terms of size but looking at the result, there's hardly any. On the other hand, the lifecycle management is more unified across different Python objects. All in all, I'm not sure this is the best approach and worth it. By this RFC, I'd like to solicit feedback from experienced GDB developers on how to move on. Basically I see following options: 1) Do not change anything in this area (I'm perfectly happy with that). 2) Intern (memoize) Python objects (where it makes sense) but keep the current approach. Basically first four commits of this RFC. 3) Continue working on this. Thanks, Jan [1]: https://inbox.sourceware.org/gdb-patches/87o70ar34z.fsf@redhat.com/ [2]: https://inbox.sourceware.org/gdb/6c73f834d3f7b545188e1999125e7ae63ae83= eab.camel@vrany.io/T/#u --- Jan Vrany (9): gdb/python: preserve identity for gdb.Symtab objects gdb/python: preserve identity for gdb.Symbol objects gdb/python: do not hold on gdb.Symtab object from gdb.Symtab_and_line gdb/python: preserve identity for gdb.Type objects gdb/python: introduce gdbpy_registry gdb/python: convert gdb.Symbol to use gdbpy_registry gdb/python: convert gdb.Type to use gdbpy_registry gdb/python: convert gdb.Symtab to use gdbpy_registry gdb/python: convert gdb.Symtab_and_line to use gdbpy_registry gdb/python/py-symbol.c | 75 +++------- gdb/python/py-symtab.c | 182 ++++++---------------- gdb/python/py-type.c | 95 +++++------- gdb/python/python-internal.h | 200 +++++++++++++++++++++++++ gdb/testsuite/gdb.python/py-arch.exp | 5 + gdb/testsuite/gdb.python/py-symtab.exp | 28 ++++ gdb/testsuite/gdb.python/py-type.exp | 15 ++ 7 files changed, 347 insertions(+), 253 deletions(-) --=20 2.45.2