From b782ed0137e93f3bcfcffdbfe2785e6425ef9e32 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Mon, 28 May 2012 12:25:43 +0200 Subject: [PATCH] refactor to resolve_variable * libguile/vm.c (resolve_variable): Slight refactor. --- libguile/vm.c | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/libguile/vm.c b/libguile/vm.c index f80d6071b..cbef0d979 100644 --- a/libguile/vm.c +++ b/libguile/vm.c @@ -600,30 +600,27 @@ static SCM boot_continuation; */ static SCM -resolve_variable (SCM what, SCM program_module) +resolve_variable (SCM what, SCM module) { if (SCM_LIKELY (scm_is_symbol (what))) { - if (scm_is_true (program_module)) - return scm_module_lookup (program_module, what); + if (scm_is_true (module)) + return scm_module_lookup (module, what); else return scm_module_lookup (scm_the_root_module (), what); } else { - SCM mod; - /* compilation of @ or @@ - `what' is a three-element list: (MODNAME SYM INTERFACE?) - INTERFACE? is #t if we compiled @ or #f if we compiled @@ - */ - mod = scm_resolve_module (SCM_CAR (what)); - if (scm_is_true (SCM_CADDR (what))) - mod = scm_module_public_interface (mod); - if (scm_is_false (mod)) - scm_misc_error (NULL, "no such module: ~S", - scm_list_1 (SCM_CAR (what))); - /* might longjmp */ - return scm_module_lookup (mod, SCM_CADR (what)); + SCM modname, sym, public; + + modname = SCM_CAR (what); + sym = SCM_CADR (what); + public = SCM_CADDR (what); + + if (scm_is_true (public)) + return scm_public_lookup (modname, sym); + else + return scm_private_lookup (modname, sym); } }