mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 11:50:28 +02:00
* symbols.c (scm_sym2vcell): Bypass dispatch in the evaluator for
standard eval closures.
This commit is contained in:
parent
a75c639c6c
commit
bccb33a9f0
1 changed files with 11 additions and 4 deletions
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1995,1996,1997,1998, 2000 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -109,7 +109,14 @@ scm_sym2vcell (SCM sym,SCM thunk,SCM definep)
|
|||
{
|
||||
if (SCM_NIMP (thunk))
|
||||
{
|
||||
SCM var = scm_apply (thunk, sym, scm_cons(definep, scm_listofnull));
|
||||
SCM var;
|
||||
|
||||
if (SCM_TYP7 (thunk) == scm_tc7_cclo
|
||||
&& SCM_TYP7 (SCM_CCLO_SUBR (thunk)) == scm_tc7_subr_3)
|
||||
/* Bypass evaluator in the standard case. */
|
||||
var = SCM_SUBRF (SCM_CCLO_SUBR (thunk)) (thunk, sym, definep);
|
||||
else
|
||||
var = scm_apply (thunk, sym, scm_cons (definep, scm_listofnull));
|
||||
|
||||
if (SCM_FALSEP (var))
|
||||
return SCM_BOOL_F;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue