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#17514: 24.3.91; enhancement: byte-optimize looking-at-p Date: Sat, 17 May 2014 07:07:43 +0900 Message-ID: <2BCF715342F7C1shigeru.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 1400278178 32163 80.91.229.3 (16 May 2014 22:09:38 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 16 May 2014 22:09:38 +0000 (UTC) To: 17514@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat May 17 00:09:31 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 1WlQJh-0002II-Q7 for geb-bug-gnu-emacs@m.gmane.org; Sat, 17 May 2014 00:09:26 +0200 Original-Received: from localhost ([::1]:37983 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WlQJg-0001U9-Qv for geb-bug-gnu-emacs@m.gmane.org; Fri, 16 May 2014 18:09:24 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:59635) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WlQJU-0001Tt-EI for bug-gnu-emacs@gnu.org; Fri, 16 May 2014 18:09:21 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WlQJL-0004DV-DB for bug-gnu-emacs@gnu.org; Fri, 16 May 2014 18:09:12 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:52016) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WlQJL-0004DQ-Ad for bug-gnu-emacs@gnu.org; Fri, 16 May 2014 18:09:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1WlQJK-0000vG-Q1 for bug-gnu-emacs@gnu.org; Fri, 16 May 2014 18:09: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: Fri, 16 May 2014 22:09:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 17514 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.14002781013478 (code B ref -1); Fri, 16 May 2014 22:09:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 16 May 2014 22:08:21 +0000 Original-Received: from localhost ([127.0.0.1]:50893 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WlQIe-0000u0-SO for submit@debbugs.gnu.org; Fri, 16 May 2014 18:08:21 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:57869) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WlQIb-0000tn-Uu for submit@debbugs.gnu.org; Fri, 16 May 2014 18:08:18 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WlQIN-00048l-OU for submit@debbugs.gnu.org; Fri, 16 May 2014 18:08:12 -0400 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:46107) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WlQIN-00048h-LY for submit@debbugs.gnu.org; Fri, 16 May 2014 18:08:03 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:59574) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WlQIE-0001Qg-Ie for bug-gnu-emacs@gnu.org; Fri, 16 May 2014 18:08:03 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WlQI5-00046F-HV for bug-gnu-emacs@gnu.org; Fri, 16 May 2014 18:07:54 -0400 Original-Received: from mail-pb0-x230.google.com ([2607:f8b0:400e:c01::230]:58268) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WlQI5-00045x-9y for bug-gnu-emacs@gnu.org; Fri, 16 May 2014 18:07:45 -0400 Original-Received: by mail-pb0-f48.google.com with SMTP id rr13so3121955pbb.7 for ; Fri, 16 May 2014 15:07:44 -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:message-id; bh=02BF0ReL5K1USebaLvabHk1d4Hr52D3WBJo6H25UHAs=; b=bQt4HQQ89uViQX3K3w2o08t6Mo/maqXWLEEelOUkLo+63OxCEvCfvYbhZgJmC9w8H/ jfxBjwVLHxtcSAia/XRnSjox2n5gI2g3/selCsakmMKvIjNfE3gFnbICPXOGGI/tY9Sq +fe6vGcJ6Ent8nlTjl3XkMYbyF1CfsosgNNvrZSOJYzB+PPhiSnLcqWYDv5dPy5OT/gA i9w3JqxTMXKy3KY4s9danWjWRNDBvllYiSgRGgSS9II/vNA5NaEVMOUoo+hhGZJDFOAi EBJc+Da7CMVclrlM8x8jW2EpHesr8ksVIP4AhmQc+f65TWz7kHXBu4KOSUMHoeZeaV3d M+sA== X-Received: by 10.66.221.99 with SMTP id qd3mr24650549pac.46.1400278064290; Fri, 16 May 2014 15:07:44 -0700 (PDT) Original-Received: from gmail.com (115x125x38x6.ap115.ftth.ucom.ne.jp. [115.125.38.6]) by mx.google.com with ESMTPSA id xk3sm16353433pbb.65.2014.05.16.15.07.42 for (version=TLSv1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 16 May 2014 15:07:43 -0700 (PDT) X-Mailer: HidemaruMail 6.24 (WinNT,602) 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:89180 Archived-At: looking-at-p is now a core function. I think (looking-at-p "a") can be safely optimized to (eq (following-char) ?a). I found there are 8 such codes in the current trunk, and some more possibly changable to looking-at-p from lookin-at. I made an experimental byte-optimization code. (defun byte-optimize-looking-at-p (form) (or (if (and (= (length form) 2) (stringp (nth 1 form))) (if (equal (nth 1 form) "") ;; (looking-at-p "") t (let ((c (byte-optimize-regexp-to-char (nth 1 form)))) (if c (list 'eq (list 'following-char) c))))) ;; fallback to original defsubst expansion (byte-compile-inline-expand form))) (defun byte-optimize-regexp-to-char (regexp) (let* ((special '(?\[ ?* ?. ?\\ ?? ?+ ?^ ?$)) (len (length regexp)) (c (aref regexp (1- len)))) (cond ;; don't accept '\0'. ;; as (following-char) at eob returns 0. ((eq c ?\0) nil) ;; "a" -> ?a ((= len 1) (unless (memq c special) c)) ;; "\\." -> ?. (only special characters, so far) ((= len 2) (when (and (eq (aref regexp 0) ?\\) (memq c special)) c))))) (put 'looking-at-p 'byte-optimizer 'byte-optimize-looking-at-p) (put 'looking-at-p 'side-effect-free t) -- Shigeru