diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2015-10-10 00:17:11 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2015-10-10 00:18:39 -0700 |
commit | bb7c182fdaf8553ffdc9162f322177ae2f7fa0c2 (patch) | |
tree | 444b1eef3d424cb5b07396a11bc66fe401d0a1dd /src/intervals.c | |
parent | 1196e3fca6f9df107c76438b7d00090d19b13570 (diff) | |
download | emacs-bb7c182fdaf8553ffdc9162f322177ae2f7fa0c2.tar.gz emacs-bb7c182fdaf8553ffdc9162f322177ae2f7fa0c2.tar.bz2 emacs-bb7c182fdaf8553ffdc9162f322177ae2f7fa0c2.zip |
CHECK_IMPURE and PURE_P speedup
* src/intervals.c (create_root_interval):
Do CHECK_IMPURE only for strings; not needed for buffers.
Prefer ! STRINGP to BUFFERP, for a tad more speed.
* src/puresize.h (CHECK_IMPURE, PURE_P):
Now inline functions instead of macros.
(PURE_P): Don’t use XPNTR; that is now the caller’s responsibility.
All callers changed.
(CHECK_IMPURE): New argument PTR, to save us the work of running XPNTR.
All callers changed.
Diffstat (limited to 'src/intervals.c')
-rw-r--r-- | src/intervals.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/intervals.c b/src/intervals.c index 78e0f50f6fe..1c8dd41e6a2 100644 --- a/src/intervals.c +++ b/src/intervals.c @@ -91,11 +91,9 @@ create_root_interval (Lisp_Object parent) { INTERVAL new; - CHECK_IMPURE (parent); - new = make_interval (); - if (BUFFERP (parent)) + if (! STRINGP (parent)) { new->total_length = (BUF_Z (XBUFFER (parent)) - BUF_BEG (XBUFFER (parent))); @@ -103,15 +101,16 @@ create_root_interval (Lisp_Object parent) set_buffer_intervals (XBUFFER (parent), new); new->position = BEG; } - else if (STRINGP (parent)) + else { + CHECK_IMPURE (parent, XSTRING (parent)); new->total_length = SCHARS (parent); eassert (TOTAL_LENGTH (new) >= 0); set_string_intervals (parent, new); new->position = 0; } eassert (LENGTH (new) > 0); - + set_interval_object (new, parent); return new; |