summaryrefslogtreecommitdiff
path: root/src/intervals.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2015-10-10 00:17:11 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2015-10-10 00:18:39 -0700
commitbb7c182fdaf8553ffdc9162f322177ae2f7fa0c2 (patch)
tree444b1eef3d424cb5b07396a11bc66fe401d0a1dd /src/intervals.c
parent1196e3fca6f9df107c76438b7d00090d19b13570 (diff)
downloademacs-bb7c182fdaf8553ffdc9162f322177ae2f7fa0c2.tar.gz
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.c9
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;