1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-12 14:50:19 +02:00

* eval.c (SCM_CEVAL): Avoid one level of indirection when applying

a non closure.
This commit is contained in:
Dirk Herrmann 2003-05-30 11:04:57 +00:00
parent e46083d5c5
commit e910e9d2eb
2 changed files with 12 additions and 7 deletions

View file

@ -1,3 +1,8 @@
2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
* eval.c (SCM_CEVAL): Avoid one level of indirection when applying
a non closure.
2003-05-30 Stefan Jahn <stefan@lkcc.org> 2003-05-30 Stefan Jahn <stefan@lkcc.org>
* posix.c (s_scm_putenv): Use the new HAVE_UNSETENV * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV

View file

@ -2383,13 +2383,13 @@ dispatch:
case (SCM_ISYMNUM (SCM_IM_APPLY)): case (SCM_ISYMNUM (SCM_IM_APPLY)):
proc = SCM_CDR (x); x = SCM_CDR (x);
proc = EVALCAR (proc, env); proc = EVALCAR (x, env);
PREP_APPLY (proc, SCM_EOL);
x = SCM_CDR (x);
arg1 = EVALCAR (x, env);
if (SCM_CLOSUREP (proc)) if (SCM_CLOSUREP (proc))
{ {
PREP_APPLY (proc, SCM_EOL);
arg1 = SCM_CDDR (x);
arg1 = EVALCAR (arg1, env);
apply_closure: apply_closure:
/* Go here to tail-call a closure. PROC is the closure /* Go here to tail-call a closure. PROC is the closure
and ARG1 is the list of arguments. Do not forget to and ARG1 is the list of arguments. Do not forget to
@ -2426,8 +2426,8 @@ dispatch:
} }
else else
{ {
proc = f_apply; ENTER_APPLY;
goto evapply; RETURN (SCM_APPLY (proc, arg1, SCM_EOL));
} }