From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Shigeru Fukaya Newsgroups: gmane.emacs.bugs Subject: bug#17584: 24.3.91; bug of `=' operator optimization Date: Mon, 26 May 2014 21:48:00 +0900 Message-ID: <31CF78E0B9F609shigeru.fukaya@gmail.com> References: <2FCF77C6224B57shigeru.fukaya@gmail.com> <30CF77C6B5AF54shigeru.fukaya@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1401108571 31406 80.91.229.3 (26 May 2014 12:49:31 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 26 May 2014 12:49:31 +0000 (UTC) To: 17584@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon May 26 14:49:24 2014 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1WouLD-0008A6-Fw for geb-bug-gnu-emacs@m.gmane.org; Mon, 26 May 2014 14:49:23 +0200 Original-Received: from localhost ([::1]:56601 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WouLD-0006mf-2o for geb-bug-gnu-emacs@m.gmane.org; Mon, 26 May 2014 08:49:23 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:57695) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WouL2-0006mU-4w for bug-gnu-emacs@gnu.org; Mon, 26 May 2014 08:49:21 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WouKt-00065H-1N for bug-gnu-emacs@gnu.org; Mon, 26 May 2014 08:49:12 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:33254) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WouKs-00065D-Tp for bug-gnu-emacs@gnu.org; Mon, 26 May 2014 08:49:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1WouKs-0001e9-EY for bug-gnu-emacs@gnu.org; Mon, 26 May 2014 08:49:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Shigeru Fukaya Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 26 May 2014 12:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17584 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.14011085296307 (code B ref -1); Mon, 26 May 2014 12:49:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 26 May 2014 12:48:49 +0000 Original-Received: from localhost ([127.0.0.1]:60364 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WouKa-0001da-6H for submit@debbugs.gnu.org; Mon, 26 May 2014 08:48:49 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:55850) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WouKS-0001dD-L6 for submit@debbugs.gnu.org; Mon, 26 May 2014 08:48:41 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WouKE-00060D-2V for submit@debbugs.gnu.org; Mon, 26 May 2014 08:48:31 -0400 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:42862) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WouKD-000608-Uz for submit@debbugs.gnu.org; Mon, 26 May 2014 08:48:21 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:57552) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WouK4-0006kV-SQ for bug-gnu-emacs@gnu.org; Mon, 26 May 2014 08:48:21 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WouJv-0005y0-Ps for bug-gnu-emacs@gnu.org; Mon, 26 May 2014 08:48:12 -0400 Original-Received: from mail-pa0-x22e.google.com ([2607:f8b0:400e:c03::22e]:34038) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WouJv-0005xu-FV for bug-gnu-emacs@gnu.org; Mon, 26 May 2014 08:48:03 -0400 Original-Received: by mail-pa0-f46.google.com with SMTP id kq14so7598013pab.33 for ; Mon, 26 May 2014 05:48:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:mime-version:content-type :content-transfer-encoding:in-reply-to:references:message-id; bh=zMvGtk5NVGHWaXMZH91+aKBI27w2quXQnxwyXwuHUz8=; b=s1Fi32edtjiOQojkAG01aNsAVyYd/OuT8qEryvpJjR6jXu3w0YXRDKsaulBpjiqnoe x49nRTWeNM96lSxPjZvjvcaYd4v8YFa/RBoncIuzKXNC6e5t6CB9K/7FCtIjBC1VW6LQ IMVboI9Sii7Qqg0fDv0cUyMiL7psXTXcMDrm/E6xSUE7KqtgsK6q6n0tCPfnG94jqQ8I x7e6DVS6rhrFov04IN4Fdv9ctNeT/asVzIOkGqhxIXm9WgCtWF6pLObQ4ImBjFjAxCZr BvcAznugH1DNq0o2lPGHRruKmltNd/bblwYnYdQJJzzHm9iGPKIQHHx/1Bx6E+zntC9u MN/A== X-Received: by 10.68.171.193 with SMTP id aw1mr27236244pbc.117.1401108481878; Mon, 26 May 2014 05:48:01 -0700 (PDT) Original-Received: from gmail.com (115x125x38x6.ap115.ftth.ucom.ne.jp. [115.125.38.6]) by mx.google.com with ESMTPSA id bu1sm18196927pbb.54.2014.05.26.05.47.58 for (version=TLSv1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 26 May 2014 05:47:59 -0700 (PDT) X-Mailer: HidemaruMail 6.24 (WinNT,602) In-Reply-To: <30CF77C6B5AF54shigeru.fukaya@gmail.com> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 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.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:89497 Archived-At: The following is a code with a little more optimized than byte-optimize-predicate. It can be used by `<', `<=', `>', `>='. -- Shigeru (defun byte-optimize-comparison-predicate (form) ;; (cmp-op arg1 [[arg2]...]) (let (constants others (rest (cdr form))) (while rest (if (macroexp-const-p (car rest)) (push (car rest) constants) (push (car rest) others)) (setq rest (cdr rest))) (if constants (cond ;; only constants ((null others) (eval form)) ;; constants satisfy predicate ((apply (car form) (nreverse constants)) form) ;; always nil (t `(progn ,@(nreverse others) nil))) ;; no constant form))) (byte-optimize-comparison-predicate '(= 0 a b)) ==> (= 0 a b) (byte-optimize-comparison-predicate '(= 1 1.0 1)) ==> t (byte-optimize-comparison-predicate '(= 1 a (f) 2)) ==> (progn a (f) nil) (byte-optimize-comparison-predicate '(<= 1 a (f) 1.0)) ==> (<= 1 a (f) 1.0) (byte-optimize-comparison-predicate '(< 1 a (f) 1.0)) ==> (progn a (f) nil) >>(byte-optimize-form '(lambda (a b) (= a b 0))) >>==> (lambda (a b) (= a b 0)) >>(byte-optimize-form '(lambda (a b) (= 0 a b))) >>==> (lambda (a b) (= a 0)) >> >>- (put '= 'byte-optimizer 'byte-optimize-binary-predicate) >>+ (put '= 'byte-optimizer 'byte-optimize-predicate) > >byte-optimize-predicate is no good, sorry. > >-- Shigeru