diff options
| author | Paul Eggert | 2012-05-09 10:51:30 -0700 |
|---|---|---|
| committer | Paul Eggert | 2012-05-09 10:51:30 -0700 |
| commit | b263a6b03bd58b811ac4f99aae7f37a0279528a9 (patch) | |
| tree | 12faf8194bee0393c21dad562075e68911af873f /src/eval.c | |
| parent | 3478ec4554757213e8d2344826110cc0f4ae4f3c (diff) | |
| download | emacs-b263a6b03bd58b811ac4f99aae7f37a0279528a9.tar.gz emacs-b263a6b03bd58b811ac4f99aae7f37a0279528a9.zip | |
Untag more efficiently if USE_LSB_TAG.
This is based on a proposal by YAMAMOTO Mitsuharu in
<http://lists.gnu.org/archive/html/emacs-devel/2008-01/msg01876.html>.
For an admittedly artificial (nth 8000 longlist) benchmark on
Fedora 15 x86-64, this yields a 25% CPU speedup. Also, it shrinks
Emacs's overall text size by 1%.
* lisp.h (XUNTAG): New macro.
(XCONS, XVECTOR, XSTRING, XSYMBOL, XFLOAT, XMISC, XPROCESS, XWINDOW)
(XTERMINAL, XSUBR, XBUFFER, XCHAR_TABLE, XSUB_CHAR_TABLE, XBOOL_VECTOR)
(XSETTYPED_PSEUDOVECTOR, XHASH_TABLE, TYPED_PSEUDOVECTORP): Use it.
* eval.c (Fautoload):
* font.h (XFONT_SPEC, XFONT_ENTITY, XFONT_OBJECT):
* frame.h (XFRAME): Use XUNTAG.
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/eval.c b/src/eval.c index cb0518f34ec..3d0e82c2d9f 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -2048,7 +2048,7 @@ this does nothing and returns nil. */) | |||
| 2048 | We used to use 0 here, but that leads to accidental sharing in | 2048 | We used to use 0 here, but that leads to accidental sharing in |
| 2049 | purecopy's hash-consing, so we use a (hopefully) unique integer | 2049 | purecopy's hash-consing, so we use a (hopefully) unique integer |
| 2050 | instead. */ | 2050 | instead. */ |
| 2051 | docstring = make_number (XPNTR (function)); | 2051 | docstring = make_number (XUNTAG (function, Lisp_Symbol)); |
| 2052 | return Ffset (function, | 2052 | return Ffset (function, |
| 2053 | Fpurecopy (list5 (Qautoload, file, docstring, | 2053 | Fpurecopy (list5 (Qautoload, file, docstring, |
| 2054 | interactive, type))); | 2054 | interactive, type))); |