summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2020-08-15 10:48:37 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2020-08-15 11:19:51 -0700
commite97def2bbce7777d3afc916a5aa4d951fab5f3f4 (patch)
tree7fe9ccffbea437d39e56da8c5023d9f106d8c7be /src
parentf1b06fd5fc66377f85b420d3d40c666da9dca2a5 (diff)
Fdelete speed tweak for strings
* src/fns.c (Fdelete): Hoist FIXNUMP out of a loop, and turn it into CHARACTERP.
Diffstat (limited to 'src')
-rw-r--r--src/fns.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/fns.c b/src/fns.c
index ded6f344aad..c89bd8144e7 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -1766,6 +1766,9 @@ changing the value of a sequence `foo'. */)
}
else if (STRINGP (seq))
{
+ if (!CHARACTERP (elt))
+ return seq;
+
ptrdiff_t i, ibyte, nchars, nbytes, cbytes;
int c;
@@ -1784,7 +1787,7 @@ changing the value of a sequence `foo'. */)
cbytes = 1;
}
- if (!FIXNUMP (elt) || c != XFIXNUM (elt))
+ if (c != XFIXNUM (elt))
{
++nchars;
nbytes += cbytes;
@@ -1814,7 +1817,7 @@ changing the value of a sequence `foo'. */)
cbytes = 1;
}
- if (!FIXNUMP (elt) || c != XFIXNUM (elt))
+ if (c != XFIXNUM (elt))
{
unsigned char *from = SDATA (seq) + ibyte;
unsigned char *to = SDATA (tem) + nbytes;