[COMMIT] Re: Add a correct version of the (featurep 'xemacs) optimisation

Aidan Kehoe kehoea at parhasard.net
Mon Oct 15 06:57:48 EDT 2007


APPROVE COMMIT

NOTE: This patch has been committed.

 Ar an chéad lá de mí Deireadh Fómhair, scríobh Aidan Kehoe: 

 > 
 > Despite that this optimisation can’t really be added to distinguish between
 > SXEmacs and XEmacs, I still think it’s worthwhile. Here is X for the top
 > fifteen most frequent calls to (featurep 'X) in the packages tree:
 > 
 > 250 xemacs
 > 58 mule
 > 42 xpm
 > 32 menubar
 > 27 toolbar
 > 19 custom
 > 15 infodock
 > 12 sparcworks
 > 10 ediff-init
 > 10 itimer
 > 10 skk-cursor
 > 10 x
 > 8 ange-ftp
 > 8 font-lock
 > 
 > There are in total 860 such calls (that is, simple (featreup 'X) calls), so
 > eliminating (featurep 'xemacs) is disproportionately helpful. The other
 > features in my patch, not so much, but they do provide a framework should we
 > ever take the time to work out which features have always been available
 > ever since the last time our bytecode became incompatible.
 > 
 > 2007-10-01  Aidan Kehoe  <kehoea at parhasard.net>
 > 
 > 	* byte-optimize.el:
 > 	* byte-optimize.el (byte-optimize-ever-present-features): New.
 > 	* byte-optimize.el (byte-optimize-featurep): New.
 > 	Optimise calls to (featurep 'xemacs) to t, since our byte code
 > 	refuses to run on GNU Emacs. Also optimises away checks for cl,
 > 	cl-extra, cl-19 and backquote, a conservative list of those
 > 	features that have been available in every XEmacs build since the
 > 	last time our opcodes changed. 
 > 
 > XEmacs Trunk source patch:
 > Diff command:   cvs -q diff -u
 > Files affected: lisp/byte-optimize.el
 > ===================================================================
 > RCS
 > 
 > Index: lisp/byte-optimize.el
 > ===================================================================
 > RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/byte-optimize.el,v
 > retrieving revision 1.12
 > diff -u -r1.12 byte-optimize.el
 > --- lisp/byte-optimize.el	2007/09/15 19:11:55	1.12
 > +++ lisp/byte-optimize.el	2007/10/01 15:21:25
 > @@ -1169,6 +1169,21 @@
 >  	(eval form)
 >        form)))
 >  
 > +(defvar byte-optimize-ever-present-features 
 > +  '(xemacs cl cl-extra cl-19 backquote))
 > +
 > +(put 'featurep 'byte-optimizer 'byte-optimize-featurep)
 > +(defun byte-optimize-featurep (form)
 > +  (let ((to-check (cdr-safe form)))
 > +    (if (memq (car-safe
 > +	       (cdr-safe
 > +		(car-safe
 > +		 (cdr-safe 
 > +		  form))))
 > +	      byte-optimize-ever-present-features)
 > +	t
 > +      form)))
 > +
 >  
 >  ;;; enumerating those functions which need not be called if the returned
 >  ;;; value is not used.  That is, something like

-- 
On the quay of the little Black Sea port, where the rescued pair came once
more into contact with civilization, Dobrinton was bitten by a dog which was
assumed to be mad, though it may only have been indiscriminating. (Saki)



More information about the XEmacs-Patches mailing list