mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-26 23:20:29 -08:00
Fix comment and tweak eval_sub
* src/eval.c (eval_sub): Check whether Fassq returns Qnil, not whether it returns a cons, as NILP is faster than CONSP nowadays. Remove incorrect comment “only original_fun and original_args have values that will be used below”; instead, move declarations around so that the set of variables with useful values is obvious.
This commit is contained in:
parent
7d84056df4
commit
bc4ed68314
1 changed files with 10 additions and 17 deletions
27
src/eval.c
27
src/eval.c
|
|
@ -2153,14 +2153,6 @@ record_in_backtrace (Lisp_Object function, Lisp_Object *args, ptrdiff_t nargs)
|
|||
Lisp_Object
|
||||
eval_sub (Lisp_Object form)
|
||||
{
|
||||
Lisp_Object fun, val, original_fun, original_args;
|
||||
Lisp_Object funcar;
|
||||
ptrdiff_t count;
|
||||
|
||||
/* Declare here, as this array may be accessed by call_debugger near
|
||||
the end of this function. See Bug#21245. */
|
||||
Lisp_Object argvals[8];
|
||||
|
||||
if (SYMBOLP (form))
|
||||
{
|
||||
/* Look up its binding in the lexical environment.
|
||||
|
|
@ -2170,10 +2162,7 @@ eval_sub (Lisp_Object form)
|
|||
= !NILP (Vinternal_interpreter_environment) /* Mere optimization! */
|
||||
? Fassq (form, Vinternal_interpreter_environment)
|
||||
: Qnil;
|
||||
if (CONSP (lex_binding))
|
||||
return XCDR (lex_binding);
|
||||
else
|
||||
return Fsymbol_value (form);
|
||||
return !NILP (lex_binding) ? XCDR (lex_binding) : Fsymbol_value (form);
|
||||
}
|
||||
|
||||
if (!CONSP (form))
|
||||
|
|
@ -2191,18 +2180,22 @@ eval_sub (Lisp_Object form)
|
|||
error ("Lisp nesting exceeds `max-lisp-eval-depth'");
|
||||
}
|
||||
|
||||
original_fun = XCAR (form);
|
||||
original_args = XCDR (form);
|
||||
Lisp_Object original_fun = XCAR (form);
|
||||
Lisp_Object original_args = XCDR (form);
|
||||
CHECK_LIST (original_args);
|
||||
|
||||
/* This also protects them from gc. */
|
||||
count = record_in_backtrace (original_fun, &original_args, UNEVALLED);
|
||||
ptrdiff_t count
|
||||
= record_in_backtrace (original_fun, &original_args, UNEVALLED);
|
||||
|
||||
if (debug_on_next_call)
|
||||
do_debug_on_call (Qt, count);
|
||||
|
||||
/* At this point, only original_fun and original_args
|
||||
have values that will be used below. */
|
||||
Lisp_Object fun, val, funcar;
|
||||
/* Declare here, as this array may be accessed by call_debugger near
|
||||
the end of this function. See Bug#21245. */
|
||||
Lisp_Object argvals[8];
|
||||
|
||||
retry:
|
||||
|
||||
/* Optimize for no indirection. */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue