summaryrefslogtreecommitdiff
path: root/libguile/modules.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2010-04-20 12:34:05 +0200
committerAndy Wingo <wingo@pobox.com>2010-04-20 12:34:05 +0200
commit31ac29b621a7ab06076ffc8b756d2510ec95141b (patch)
tree70210efb602bf1fffe984a394e3d3722cd3cb14d /libguile/modules.c
parente31f22ebf0af5685636ec6a4416e3384bab740fd (diff)
downloadguile-31ac29b621a7ab06076ffc8b756d2510ec95141b.tar.gz
module-type defined programmatically
* module/ice-9/boot-9.scm (make-record-type): Add an explanatory comment. (%print-module): Remove a hacky comment about redefinitions being difficult, because now the module-printer is called by name from module-type's printer. (module-type): Define the module type, its constructor, predicate, and accessors programmatically, at expansion time. Should reduce any errors in transcription, between adding fields and adding accessors. * libguile/modules.c (scm_lookup_closure_module): Move an explanatory comment here from boot-9.scm.
Diffstat (limited to 'libguile/modules.c')
-rw-r--r--libguile/modules.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/libguile/modules.c b/libguile/modules.c
index fc6ff3b47..ccb68b709 100644
--- a/libguile/modules.c
+++ b/libguile/modules.c
@@ -242,8 +242,14 @@ scm_lookup_closure_module (SCM proc)
{
SCM mod;
- /* FIXME: The `module' property is no longer set. See
- `set-module-eval-closure!' in `boot-9.scm'. */
+ /* FIXME: The `module' property is no longer set on eval closures, as it
+ introduced a circular reference that precludes garbage collection of
+ modules with the current weak hash table semantics (see
+ http://lists.gnu.org/archive/html/guile-devel/2009-01/msg00102.html and
+ http://thread.gmane.org/gmane.comp.programming.garbage-collection.boehmgc/2465
+ for details). Since it doesn't appear to be used (only in this
+ function, which has 1 caller), we no longer extend
+ `set-module-eval-closure!' to set the `module' property. */
abort ();
mod = scm_procedure_property (proc, sym_module);