[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Calling a function when a something is garbage collected.
From: |
Camm Maguire |
Subject: |
Re: Calling a function when a something is garbage collected. |
Date: |
Fri, 02 Feb 2024 08:32:14 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) |
Greetings!
Grégory Vanuxem <g.vanuxem@gmail.com> writes:
> Hello,
>
>
> My question is in object, when the garbage collector releases memory
> from a variable for example does GCL allow to add a "hook" function to
> do some other things. Namely I also need to release memory in another
> place not known to the garbage collector. Here is a piece of code for
> other CL implementations:
>
> ; TODO: add Clozure CL 'terminate'
> (defun make_jlref (val type)
> (let* ((ret (make-instance 'jlref :val val :type type))
> (hash (write-to-string (sxhash ret) :base 16)))
> #+:lispworks (flag-special-free-action hash)
> #+:cmu (ext:finalize ret (lambda () (free_jlref hash)))
> #+:sbcl (sb-ext:finalize ret (lambda () (free_jlref hash)))
> #+:allegro (excl:schedule-finalization ret (lambda ()
> (free_jlref hash)))
> (setf (jlrefId ret) hash)
> ret))
>
I do not believe we have such a feature yet, though there are stubs in
the code and we could add one. I am confused though, what do you mean
'not known to the garbage collector'? Is this malloc/free memory
allocated in some inlined C code? Such memory *is* known to our garbage
collector (as is the output of write-to-string), though I suppose some
hook could automate the call to free. Why not just add a slot :hash to
'jlref and let the GC do its thing?
> And another question, where can I find documentation for calling C
> from GCL Common Lisp?
The original defentry, clines, and defcfun are documented in the gcl-si
info page, but in 2.7 we have a much more capable defdlfun which enable
runtime and persistent access to new external shared library functions.
I will write this up, but I believe it might have been discussed in the
mailing list before.
Take care,
>
> Regards,
> - Greg
>
>
>
>
--
Camm Maguire camm@maguirefamily.org
==========================================================================
"The earth is but one country, and mankind its citizens." -- Baha'u'llah