diff options
author | Keisuke Nishida <kxn30@po.cwru.edu> | 2000-09-10 22:22:36 +0000 |
---|---|---|
committer | Keisuke Nishida <kxn30@po.cwru.edu> | 2000-09-10 22:22:36 +0000 |
commit | fb43bf74e2a2131ec80bf9e71de2fddab7696ff7 (patch) | |
tree | 2fbcba188edcf7d6d219300b1f2690d982a0825c /libguile/modules.h | |
parent | 4c7cb8ba9447b5d51c88032b2b90eae618e2460e (diff) | |
download | guile-fb43bf74e2a2131ec80bf9e71de2fddab7696ff7.tar.gz |
* modules.c: Use applicable smobs for eval closures instead of
compiled closures. Include "libguile/smob.h".
(f_eval_closure): Removed.
(scm_eval_closure_tag): New variable.
(scm_eval_closure_lookup): Renamed from eval_closure.
This function now takes a smob instead of a compiled closure.
(scm_standard_eval_closure): Create a smob instead of a compiled
closure.
(scm_init_modules): Initialize the eval closure type as a smob.
* modules.h (SCM_EVAL_CLOSURE_P): New macro.
(scm_eval_closure_tag, scm_eval_closure_lookup): Declare.
* symbols.c: Include "libguile/smob.h".
(scm_sym2vcell): Call scm_eval_closure_lookup directly if THUNK
is an eval closure.
Diffstat (limited to 'libguile/modules.h')
-rw-r--r-- | libguile/modules.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libguile/modules.h b/libguile/modules.h index 9e7f8eb11..cfe4de442 100644 --- a/libguile/modules.h +++ b/libguile/modules.h @@ -73,10 +73,13 @@ #define SCM_MODULE_EVAL_CLOSURE(module) \ SCM_PACK (SCM_STRUCT_DATA (module)[scm_module_index_eval_closure]) +#define SCM_EVAL_CLOSURE_P(OBJ) SCM_SMOB_PREDICATE (scm_eval_closure_tag, OBJ) + extern SCM scm_module_system_booted_p; extern SCM scm_module_tag; +extern SCM scm_eval_closure_tag; extern SCM scm_the_root_module (void); extern SCM scm_selected_module (void); @@ -90,6 +93,7 @@ extern SCM scm_load_scheme_module (SCM name); extern SCM scm_env_top_level (SCM env); extern SCM scm_top_level_env (SCM thunk); extern SCM scm_system_module_env_p (SCM env); +extern SCM scm_eval_closure_lookup (SCM eclo, SCM sym, SCM definep); extern SCM scm_standard_eval_closure (SCM module); extern void scm_init_modules (void); extern void scm_post_boot_init_modules (void); |