"Luís Oliveira" luismbo@gmail.com writes:
On 04/02/07, Marco Gidde marco.gidde@tiscali.de wrote:
While this code isn't as short and elegant as the original code, at least it works ;-)
Indeed it does. It passes the trivial-garbage tests without crashing. Thanks!
Anyway, I didn't feel like changing and testing the finalization code in both CFFI and trivial-garbage (what was I thinking?) so I just wiped out CFFI's finalization code. People can use trivial-garbage if they're interested in portable finalizers: http://cliki.net/trivial-garbage
While I would like to see the finalizer code in CFFI because I never felt like using them in another context, it is certainly better to keep the code consistent in only one place.
And for that matter: when ECL is compiled with the boehm garbage collector (is it even possible without?) the following code should work a bit better than the simple ERROR :-):
(defun finalize (object function) #-boehm-gc (error "ECLli does not support finalizers.") #+boehm-gc (let ((old-finalizer (si:get-finalizer object))) (si:set-finalizer object (if old-finalizer (lambda (obj) (funcall function) (funcall old-finalizer obj)) (lambda (obj) (funcall function))))))
(defun cancel-finalization (object) #-boehm-gc (error "ECLli does not support finalizers.") #+boehm-gc (si:set-finalizer object nil))
Just noticed that there is no ECL specific code in trivial-garbage. Any ideas where this code should be placed now?
Regards,
Marco