From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.bugs Subject: bug#65017: 29.1; Byte compiler interaction with cl-lib function objects, removes symbol-function Date: Fri, 4 Aug 2023 14:16:22 +0000 Message-ID: References: <8B08E514-B2D5-48F5-BA90-4F5A9492F8F9@gmail.com> <83leerwesd.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="11331"; mail-complaints-to="usenet@ciao.gmane.io" Cc: mattias.engdegard@gmail.com, 65017@debbugs.gnu.org, monnier@iro.umontreal.ca, eric.marsden@risk-engineering.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Aug 04 16:17:16 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qRvcC-0002j3-Cb for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 04 Aug 2023 16:17:16 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qRvc4-0004BR-0Q; Fri, 04 Aug 2023 10:17:08 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qRvby-0004B1-1y for bug-gnu-emacs@gnu.org; Fri, 04 Aug 2023 10:17:02 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qRvbx-0006HN-Pd for bug-gnu-emacs@gnu.org; Fri, 04 Aug 2023 10:17:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qRvbx-0000UE-Ld for bug-gnu-emacs@gnu.org; Fri, 04 Aug 2023 10:17:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Alan Mackenzie Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 04 Aug 2023 14:17:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 65017 X-GNU-PR-Package: emacs Original-Received: via spool by 65017-submit@debbugs.gnu.org id=B65017.16911585921816 (code B ref 65017); Fri, 04 Aug 2023 14:17:01 +0000 Original-Received: (at 65017) by debbugs.gnu.org; 4 Aug 2023 14:16:32 +0000 Original-Received: from localhost ([127.0.0.1]:54484 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qRvbU-0000TD-DS for submit@debbugs.gnu.org; Fri, 04 Aug 2023 10:16:32 -0400 Original-Received: from mx3.muc.de ([193.149.48.5]:55566) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qRvbR-0000Sv-NO for 65017@debbugs.gnu.org; Fri, 04 Aug 2023 10:16:30 -0400 Original-Received: (qmail 24398 invoked by uid 3782); 4 Aug 2023 16:16:23 +0200 Original-Received: from acm.muc.de (pd953a874.dip0.t-ipconnect.de [217.83.168.116]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Fri, 04 Aug 2023 16:16:23 +0200 Original-Received: (qmail 1158 invoked by uid 1000); 4 Aug 2023 14:16:22 -0000 Content-Disposition: inline In-Reply-To: <83leerwesd.fsf@gnu.org> X-Submission-Agent: TMDA/1.3.x (Ph3nix) X-Primary-Address: acm@muc.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:266679 Archived-At: Hello, Eli. On Fri, Aug 04, 2023 at 08:35:30 +0300, Eli Zaretskii wrote: > > Cc: acm@muc.de, 65017@debbugs.gnu.org, > > Eric Marsden > > Date: Thu, 3 Aug 2023 21:10:56 +0000 > > From: Alan Mackenzie > > > > I think the cause is in internal_equal in src/fns.c, where the following > > code appears: > > > > /* A symbol with position compares the contained symbol, and is > > `equal' to the corresponding ordinary symbol. */ > > if (SYMBOL_WITH_POS_P (o1)) > > o1 = SYMBOL_WITH_POS_SYM (o1); > > if (SYMBOL_WITH_POS_P (o2)) > > o2 = SYMBOL_WITH_POS_SYM (o2); > > > > This piece of code converts symbols with positions to ordinary symbols > > without first checking symbols-with-pos-enabled. I think this is the > > bug. > > > > I will work on a patch to fix it (which shouldn't take long). I have raised bug #65051 for this (which already contains a patch). > Thanks, but when you have a solution in hand, please also check its > effect on performance. AFAIR, this part was tuned for optimal > performance, back when symbols with positions were introduced; it > would be a pity to lose performance due to fixing this bug, if that > can be avoided. I don't think we need worry, here. In the generated code, in the normal non-compilation scenario, two tests are being replaced by one test. The current two tests are on variables which will already be in registers, but they perform fairly involved bit twiddling. The new test is a simple zero/non-zero test on a variable which, whilst not yet in a register, will certainly be in the processor's cache. Also, that variable will shortly be needed again, in the Lisp_Cons case. I'll try a few timings, though. I'll be surprised indeed if there're any measurable differences. -- Alan Mackenzie (Nuremberg, Germany).