emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Redundant type checking in window.c and w32menu.c


From: Dmitry Antipov
Subject: Redundant type checking in window.c and w32menu.c
Date: Tue, 19 Jun 2007 18:44:26 +0400
User-agent: Thunderbird 1.5.0.7 (X11/20061008)

If we pass CHECK_CONS(), we don't need CONSP()s in Fcar() and Fcdr() and may 
use XCAR()
and XCDR() instead.

Dmitry

P.S. Is code size the only reason to call Fcar(), Fcdr() and their safe 
versions directly
from C code ? Replacing these dumb proxies with an appropriate macros 
eliminates a lot of
function calls at the cost of ~28K increment in code size (for a stripped 
binary on x86).
Note if someone needs smaller emacs executable (what a strange requirement, but 
why not ?),
just replacing -O2 with -Os saves ~235K.

P.P.S. Maintainers, please update my e-mail to address@hidden in src/ChangeLog -
address@hidden is no longer used.
Index: window.c
===================================================================
RCS file: /sources/emacs/emacs/src/window.c,v
retrieving revision 1.577
diff -u -r1.577 window.c
--- window.c    1 Jun 2007 10:57:37 -0000       1.577
+++ window.c    19 Jun 2007 14:05:32 -0000
@@ -942,8 +942,8 @@
   w = XWINDOW (window);
   f = XFRAME (w->frame);
   CHECK_CONS (coordinates);
-  lx = Fcar (coordinates);
-  ly = Fcdr (coordinates);
+  lx = XCAR (coordinates);
+  ly = XCDR (coordinates);
   CHECK_NUMBER_OR_FLOAT (lx);
   CHECK_NUMBER_OR_FLOAT (ly);
   x = FRAME_PIXEL_X_FROM_CANON_X (f, lx) + FRAME_INTERNAL_BORDER_WIDTH (f);
Index: w32menu.c
===================================================================
RCS file: /sources/emacs/emacs/src/w32menu.c,v
retrieving revision 1.90
diff -u -r1.90 w32menu.c
--- w32menu.c   17 Jun 2007 22:10:06 -0000      1.90
+++ w32menu.c   19 Jun 2007 14:05:32 -0000
@@ -605,7 +605,7 @@
       else
        {
          CHECK_CONS (item);
-         item1 = Fcar (item);
+         item1 = XCAR (item);
          CHECK_STRING (item1);
          push_menu_item (item1, Qt, Fcdr (item), Qt, Qnil, Qnil, Qnil, Qnil);
        }

reply via email to

[Prev in Thread] Current Thread [Next in Thread]