From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Daniel Colascione Newsgroups: gmane.emacs.devel Subject: Re: [Emacs-diffs] emacs-24 r116836: Fix keyword argument parsing. Please bootstrap. Date: Sun, 23 Mar 2014 19:39:59 -0700 Message-ID: <532F9AFF.1020108@dancol.org> References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="EvTXQhi4bNPBOBWGw5wx02KCtOBmmCt3X" X-Trace: ger.gmane.org 1395628800 29530 80.91.229.3 (24 Mar 2014 02:40:00 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 24 Mar 2014 02:40:00 +0000 (UTC) Cc: emacs-devel@gnu.org To: Stefan Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Mar 24 03:40:10 2014 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1WRuo6-0000lR-8l for ged-emacs-devel@m.gmane.org; Mon, 24 Mar 2014 03:40:10 +0100 Original-Received: from localhost ([::1]:34206 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WRuo5-000114-Q2 for ged-emacs-devel@m.gmane.org; Sun, 23 Mar 2014 22:40:09 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:50921) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WRuo2-0000v2-FD for emacs-devel@gnu.org; Sun, 23 Mar 2014 22:40:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WRuo1-0005Iz-Bj for emacs-devel@gnu.org; Sun, 23 Mar 2014 22:40:06 -0400 Original-Received: from dancol.org ([2600:3c01::f03c:91ff:fedf:adf3]:48015) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WRuo1-0005Fn-1J for emacs-devel@gnu.org; Sun, 23 Mar 2014 22:40:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=dancol.org; s=x; h=Content-Type:In-Reply-To:References:Subject:CC:To:MIME-Version:From:Date:Message-ID; bh=JELZ3F7q5Z6k4pzPQ8h60sJ5X1Wo7ZcWpmQrt7K2PTA=; b=crmCqw74QvwBhCrnWJMxhtWhc/qo90HfhgCOUBit46fLFBMBgJ2avuVXrcy0IKXnWuTVIBYmcH5RXoGKpNVuWPm4GmpPYykXBo5HzzcQWhbJYTFtTkdAkR5zrf1Kb0Kcd7ApD7vG90aLKNYg6xaDDq03JzGTBdy3Ft3q2Hg2xTQmQdF3m+cJOxGIEUQZb8HTb0eLr47xfE27qPibAmiIWW6GyXPWYnmmL7UPnZppU7kdw2/jEqjm9eEAxXb3a+2lZl80+u2ZEuqBPtjgFw875SwUmQW4nHHmIPVlw+gsmV4wspPrUgXt2+xESVDwV7a+fX7bubSWJaWzpz3a7VhcNA==; Original-Received: from [2601:8:b200:551::2b1] by dancol.org with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.82) (envelope-from ) id 1WRunz-0005hE-Qn; Sun, 23 Mar 2014 19:40:03 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 In-Reply-To: X-Enigmail-Version: 1.6 X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2600:3c01::f03c:91ff:fedf:adf3 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 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-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:170896 Archived-At: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --EvTXQhi4bNPBOBWGw5wx02KCtOBmmCt3X Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On 03/23/2014 06:43 PM, Stefan wrote: >> + * emacs-lisp/cl-macs.el (cl--do-arglist): Use a little `cl-loop' >> + list to look for keyword arguments instead of `memq', fixing >> + (Bug#3647) --- unfortunately, only for freshly-compiled code. >> + Please make bootstrap. >=20 > Have you checked the performance and code-size impact of this change? > Maybe it's OK to try it on trunk, but it seems much too risky > performancewise for 24.4. There is no hurry to fix this: the bug has > been with us forever (IIRC it was even documented in CL's texinfo). The new code ranges from about a half to a third of the speed of the old code, measured by byte-compiled, lexically-bound functions that just return lists of their arguments. Code size increases as well: with the old code, the 7-old keyword noop function requires 99 bytecode instructions, while the new code generates 371 instructions. IMHO, that's fine, since keyword argument parsing isn't particularly fast to begin with and shouldn't be on any hot path. If we really care about performance here, we can add a subr that works like assq (`assq-plist' ?), but that skips every other list element. This approach should will yield correct semantics and shouldn't be any slower (or larger) than the existing code. If you want to do it that way, I'll back out my change from the emacs-24 branch and write something better for trunk. --EvTXQhi4bNPBOBWGw5wx02KCtOBmmCt3X Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.14 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQIcBAEBAgAGBQJTL5sBAAoJEMAaIROpHW7I0e8P/3k6ZTSl4jWvk98eFtz7Uvvr r4wUhhqsUft/xwI0U6QUtSE4oRlRxjIjeWXqV1gw6fTA1EJTnuHOOzTDHfMkCqnj BDuVsMG/IwNkjL9LLaKSJy/kY3yVvJkZEd9+TAEAH9I6ZsQlnWiyZdezhBFS3x9v PBpfe4JQYDm1fl3MsoRvp9zHqfoqeXlfzvgkPs6gsWorvT2Jpp2Sq/q7U9RIE9o6 658uKe1720tYUg1n1XktpVvn0PeUz8xl1dm1ZerXX5MtsbqKsE77gjbUMd7w0URW 9SstLyiifcMO5DLmRlumtEPO2xEH1uqQaALh11vTmhgEaajbNn2sVbDySmcjmDIA kc5gvWt3FTVoV1fWuk2U4vIOb3mpTyvlzQ2IZjAELhKZOifSrclZMb/BUcmUUPNJ zqxhSaU+8WbN7GqVQ3zr8DYCmjmsIprpwY18ipvNku+exQhpGgQ+83nGso1Xsd9t sKz3OJg9vRLsd+Yn75KUUZpVlZeTdcksdMWMll8jFpF2Cx8qbMxSq24ag/BAcYbH i3jKEE/H7X6mGQEmUsfOks8JoO53tWw15HJiAptsZEZcM64t2OlZnI7yW0MFWF2s /FmCw0vnVXMSoT79pUIywdHhPSkH2tyz4dU7KrIdbkqSQCDPnH72WLzhmwt7JZe3 5myd5nd+Op4vAaPHh3Iy =vRW2 -----END PGP SIGNATURE----- --EvTXQhi4bNPBOBWGw5wx02KCtOBmmCt3X--