From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: Crashes in "C-h h" Date: Fri, 05 Jul 2019 11:38:03 +0300 Message-ID: <83sgrkanbo.fsf@gnu.org> References: <83y31hes6r.fsf@gnu.org> <83r279epwe.fsf@gnu.org> <09f72051-d740-9115-c6fd-c4344c749568@cs.ucla.edu> <83muhvd9nm.fsf@gnu.org> <9b78b85d-a3c8-761f-e500-d51d4a985fa8@cs.ucla.edu> <83k1cybk8c.fsf@gnu.org> <83ef36ar0p.fsf@gnu.org> <5e9b9214-4ccd-68a4-2016-7ac3ea8a06d9@cs.ucla.edu> <83wogwapf7.fsf@gnu.org> Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="165244"; mail-complaints-to="usenet@blaine.gmane.org" Cc: eggert@cs.ucla.edu, emacs-devel@gnu.org To: Pip Cet Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Jul 05 10:48:37 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1hjJtU-000gnk-Gh for ged-emacs-devel@m.gmane.org; Fri, 05 Jul 2019 10:48:36 +0200 Original-Received: from localhost ([::1]:50634 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hjJtT-00065W-Ea for ged-emacs-devel@m.gmane.org; Fri, 05 Jul 2019 04:48:35 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:58188) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hjJjR-0003GP-9k for emacs-devel@gnu.org; Fri, 05 Jul 2019 04:38:14 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:44951) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hjJjQ-0002xS-5f; Fri, 05 Jul 2019 04:38:12 -0400 Original-Received: from [176.228.60.248] (port=2161 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1hjJjP-0007GC-Lk; Fri, 05 Jul 2019 04:38:11 -0400 In-reply-to: (message from Pip Cet on Fri, 5 Jul 2019 08:17:39 +0000) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:238370 Archived-At: > From: Pip Cet > Date: Fri, 5 Jul 2019 08:17:39 +0000 > Cc: eggert@cs.ucla.edu, emacs-devel@gnu.org > > > Parse error. What is "f", what is "g", where should I insert > > "again". Maybe ENOCOFFEE. > > int > noop (Lisp_Object x, ptrdiff_t n) > { > return 0; > } > > int > f (Lisp_Object x, ptrdiff_t n) > { > return FIXNUMP (x) && XFIXNUM (x) == n; > } > > int > g (Lisp_Object x, ptrdiff_t n) > { > return EQ (x, make_fixnum (n)); > } So you expected me to remember the function names by heart? ;-) > Using "g" is about 8 seconds slower than "noop". Using "f" is about 85 > seconds slower than "noop". Using "f" is about 76 seconds slower than > "g". It is not useful to compare to a function that does nothing. Useful comparisons would be with functions that do this: return x == y; or this: return XFIXNUM (a) == y; where x and y are int's and a is a fixnum. > we all agree that EQ (x, make_fixnum (n)) is the right thing to do if > you are certain n is in the fixnum range. That's not my conclusion. (And if N is not in the fixnum range, why would you call make_fixnum for it?) My conclusion is that comparing with make_fixnum, i.e. EQ (x, make_fixnum (n)) is TRT when you are NOT certain that X is a fixnum, especially when the comparison is done in a loop against many different values of X and only one value of N, in which case make_fixnum can be called outside of the loop. If you ARE certain that X is a fixnum, then XFIXNUM (x) == n is also OK. The comparison with if (FIXNUMP (x) && XFIXNUM (x) == n) is IMO not useful, because it should be clear up front that it will always lose due to the additional test.