[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master b8e7be2: Tweak Vinternal_interpreter_environment lo
From: |
Paul Eggert |
Subject: |
[Emacs-diffs] master b8e7be2: Tweak Vinternal_interpreter_environment lookup |
Date: |
Mon, 22 Apr 2019 15:35:20 -0400 (EDT) |
branch: master
commit b8e7be28336ea02e899fbf4a67780e0528327d1a
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>
Tweak Vinternal_interpreter_environment lookup
* src/eval.c (Fsetq, eval_sub): Use assq_no_quit instead
of Fassq for a list that cannot contain cycles or be that long.
---
src/eval.c | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/src/eval.c b/src/eval.c
index 4693767..fde63f1 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -501,7 +501,7 @@ usage: (setq [SYM VAL]...) */)
for (EMACS_INT nargs = 0; CONSP (tail); nargs += 2)
{
- Lisp_Object sym = XCAR (tail), lex_binding;
+ Lisp_Object sym = XCAR (tail);
tail = XCDR (tail);
if (!CONSP (tail))
xsignal2 (Qwrong_number_of_arguments, Qsetq, make_fixnum (nargs + 1));
@@ -510,10 +510,12 @@ usage: (setq [SYM VAL]...) */)
val = eval_sub (arg);
/* Like for eval_sub, we do not check declared_special here since
it's been done when let-binding. */
- if (!NILP (Vinternal_interpreter_environment) /* Mere optimization! */
- && SYMBOLP (sym)
- && !NILP (lex_binding
- = Fassq (sym, Vinternal_interpreter_environment)))
+ Lisp_Object lex_binding
+ = ((!NILP (Vinternal_interpreter_environment) /* Mere optimization! */
+ && SYMBOLP (sym))
+ ? assq_no_quit (sym, Vinternal_interpreter_environment)
+ : Qnil);
+ if (!NILP (lex_binding))
XSETCDR (lex_binding, val); /* SYM is lexically bound. */
else
Fset (sym, val); /* SYM is dynamically bound. */
@@ -2159,9 +2161,9 @@ eval_sub (Lisp_Object form)
We do not pay attention to the declared_special flag here, since we
already did that when let-binding the variable. */
Lisp_Object lex_binding
- = !NILP (Vinternal_interpreter_environment) /* Mere optimization! */
- ? Fassq (form, Vinternal_interpreter_environment)
- : Qnil;
+ = (!NILP (Vinternal_interpreter_environment) /* Mere optimization! */
+ ? assq_no_quit (form, Vinternal_interpreter_environment)
+ : Qnil);
return !NILP (lex_binding) ? XCDR (lex_binding) : Fsymbol_value (form);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master b8e7be2: Tweak Vinternal_interpreter_environment lookup,
Paul Eggert <=