1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-07 08:40:21 +02:00

*** empty log message ***

This commit is contained in:
Han-Wen Nienhuys 2005-06-19 13:27:50 +00:00
parent bde70eddce
commit 05d44505b8
9 changed files with 42 additions and 8 deletions

View file

@ -1,3 +1,8 @@
2004-08-16 Han-Wen Nienhuys <hanwen@xs4all.nl>
* gh.texi (Defining new Scheme procedures in C): remove : - note:
causes spurious info reference.
2004-09-07 Kevin Ryde <user42@zip.com.au>
* posix.texi (System Identification): Remove software-type, it doesn't

View file

@ -1,3 +1,9 @@
2005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
* boot-9.scm (set-module-eval-closure!): remove
set-procedure-property! closure 'module. Setting this property
causes un-gc-able modules.
2005-04-23 Kevin Ryde <user42@zip.com.au>
* boot-9.scm (numerator, denominator): New functions as specified by

View file

@ -258,7 +258,7 @@
(define (environment-module env)
(let ((closure (and (pair? env) (car (last-pair env)))))
(and closure (procedure-property closure 'module))))
(and closure (eval-closure-module closure))))
;;; {Records}
@ -1063,10 +1063,12 @@
(let ((setter (record-modifier module-type 'eval-closure)))
(lambda (module closure)
(setter module closure)
;; Make it possible to lookup the module from the environment.
;; This implementation is correct since an eval closure can belong
;; to maximally one module.
(set-procedure-property! closure 'module module))))
;; do not set procedure properties on closures.
;; since procedure properties are weak-hashes, they cannot
;; have cyclical data, otherwise the data cannot be GC-ed.
)))
(begin-deprecated
(define (eval-in-module exp mod)

View file

@ -1,4 +1,11 @@
2005-06-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
2005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
* modules.c (s_scm_eval_closure_module): new function. Return the
module inside an eval-closure.
* gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
table. This means that procedure properties are GC'd if the
procedure dies.
* guile.c (main): use pointer iso. array. This fixes compile error
on GCC 4.

View file

@ -2827,7 +2827,7 @@ scm_init_storage ()
#endif
#endif
scm_stand_in_procs = scm_c_make_hash_table (257);
scm_stand_in_procs = scm_make_weak_key_hash_table (SCM_MAKINUM (257));
scm_permobjs = SCM_EOL;
scm_protects = scm_c_make_hash_table (31);
scm_gc_registered_roots = scm_c_make_hash_table (31);

View file

@ -340,6 +340,19 @@ SCM_DEFINE (scm_standard_eval_closure, "standard-eval-closure", 1, 0, 0,
}
#undef FUNC_NAME
SCM_DEFINE (scm_eval_closure_module, "eval-closure-module", 1, 0, 0,
(SCM closure),
"Return the module for @var{closure}.")
#define FUNC_NAME s_scm_eval_closure_module
{
SCM_ASSERT_TYPE(SCM_EVAL_CLOSURE_P (closure), closure, SCM_ARG1, FUNC_NAME, "eval-closure");
return SCM_PACK (SCM_CELL_WORD_1(closure));
}
#undef FUNC_NAME
SCM_DEFINE (scm_standard_interface_eval_closure,
"standard-interface-eval-closure", 1, 0, 0,
(SCM module),

View file

@ -118,6 +118,7 @@ extern SCM scm_current_module_lookup_closure (void);
extern SCM scm_current_module_transformer (void);
extern SCM scm_eval_closure_lookup (SCM eclo, SCM sym, SCM definep);
extern SCM scm_standard_eval_closure (SCM module);
extern SCM scm_eval_closure_module (SCM closure);
extern SCM scm_standard_interface_eval_closure (SCM module);
extern SCM scm_get_pre_modules_obarray (void);
extern SCM scm_lookup_closure_module (SCM proc);

View file

@ -25,7 +25,6 @@ exec ${GUILE-guile} -l $0 -c "(apply $main (cdr (command-line)))" "$@"
;;; Author: Michael Livshin
;;; Code:
(define-module (scripts snarf-check-and-output-texi)
:use-module (ice-9 streams)
:use-module (ice-9 match)

View file

@ -78,3 +78,4 @@
(gc)
(remove-hook! after-gc-hook thunk)
foo)))