1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00

Slightly simplify gsubr invocation in the evaluator.

* libguile/eval.i.c (CEVAL): Remove the `cclon' label; replace jumps to
  `cclon' with `RETURN (scm_i_gsubr_apply (...))'.
This commit is contained in:
Ludovic Courtès 2009-03-08 12:19:42 +01:00
parent 3e414c302f
commit d18f4d805e

View file

@ -1345,15 +1345,11 @@ dispatch:
if (!SCM_SMOB_APPLICABLE_P (proc)) if (!SCM_SMOB_APPLICABLE_P (proc))
goto badfun; goto badfun;
RETURN (SCM_SMOB_APPLY_2 (proc, arg1, arg2)); RETURN (SCM_SMOB_APPLY_2 (proc, arg1, arg2));
cclon:
case scm_tc7_gsubr: case scm_tc7_gsubr:
#ifdef DEVAL #ifdef DEVAL
RETURN (scm_i_gsubr_apply (proc, debug.info->a.args)); RETURN (scm_i_gsubr_apply (proc, debug.info->a.args));
#else #else
RETURN (scm_i_gsubr_apply (proc, RETURN (scm_i_gsubr_apply (proc, scm_list_2 (arg1, arg2)));
scm_cons2 (arg1, arg2,
scm_ceval_args (x, env,
proc))));
#endif #endif
case scm_tcs_struct: case scm_tcs_struct:
if (SCM_OBJ_CLASS_FLAGS (proc) & SCM_CLASSF_PURE_GENERIC) if (SCM_OBJ_CLASS_FLAGS (proc) & SCM_CLASSF_PURE_GENERIC)
@ -1483,7 +1479,7 @@ dispatch:
RETURN (SCM_SMOB_APPLY_3 (proc, arg1, arg2, RETURN (SCM_SMOB_APPLY_3 (proc, arg1, arg2,
SCM_CDDR (debug.info->a.args))); SCM_CDDR (debug.info->a.args)));
case scm_tc7_gsubr: case scm_tc7_gsubr:
goto cclon; RETURN (scm_i_gsubr_apply (proc, debug.info->a.args));
case scm_tc7_pws: case scm_tc7_pws:
proc = SCM_PROCEDURE (proc); proc = SCM_PROCEDURE (proc);
debug.info->a.proc = proc; debug.info->a.proc = proc;
@ -1546,7 +1542,10 @@ dispatch:
RETURN (SCM_SMOB_APPLY_3 (proc, arg1, arg2, RETURN (SCM_SMOB_APPLY_3 (proc, arg1, arg2,
scm_ceval_args (x, env, proc))); scm_ceval_args (x, env, proc)));
case scm_tc7_gsubr: case scm_tc7_gsubr:
goto cclon; RETURN (scm_i_gsubr_apply (proc,
scm_cons2 (arg1, arg2,
scm_ceval_args (x, env,
proc))));
case scm_tc7_pws: case scm_tc7_pws:
proc = SCM_PROCEDURE (proc); proc = SCM_PROCEDURE (proc);
if (!SCM_CLOSUREP (proc)) if (!SCM_CLOSUREP (proc))