summaryrefslogtreecommitdiff
path: root/libguile/memoize.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2014-12-07 19:03:19 +0100
committerAndy Wingo <wingo@pobox.com>2014-12-07 19:03:19 +0100
commit5bfc0653d6361ab29ed2da68eeba14cce1ec8f6c (patch)
tree0b74366bb30393f58e1173e7dbc3a9548f1e8c25 /libguile/memoize.c
parente6a42e676528bf56c6535a7e0c79e936a6d2a818 (diff)
downloadguile-5bfc0653d6361ab29ed2da68eeba14cce1ec8f6c.tar.gz
Minor evaluator tweaks
* libguile/eval.c (eval): Remove unused variable. * libguile/memoize.c (unmemoize): Fix unmemoization. * module/ice-9/eval.scm: Attempt to speed up common box-ref cases.
Diffstat (limited to 'libguile/memoize.c')
-rw-r--r--libguile/memoize.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/libguile/memoize.c b/libguile/memoize.c
index cefb26938..88a168fd8 100644
--- a/libguile/memoize.c
+++ b/libguile/memoize.c
@@ -750,10 +750,15 @@ unmemoize (const SCM expr)
unmemoize (CAR (args)),
unmemoize (CDR (args)));
case SCM_M_RESOLVE:
- return (SCM_VARIABLEP (args) || scm_is_symbol (args)) ? args
- : scm_list_3 (scm_is_true (CDDR (args)) ? scm_sym_at : scm_sym_atat,
- scm_i_finite_list_copy (CAR (args)),
- CADR (args));
+ if (SCM_VARIABLEP (args))
+ return args;
+ else if (scm_is_symbol (CDR (args)))
+ return CDR (args);
+ else
+ return scm_list_3
+ (scm_is_true (CDDDR (args)) ? scm_sym_at : scm_sym_atat,
+ scm_i_finite_list_copy (CADR (args)),
+ CADDR (args));
case SCM_M_CALL_WITH_PROMPT:
return scm_list_4 (scm_from_latin1_symbol ("call-with-prompt"),
unmemoize (CAR (args)),