From: Craig L. <cla...@is...> - 2013-05-14 22:30:34
|
On Tue, 2013-05-14 at 18:09 +0300, Nikodemus Siivola wrote: > Then the correct answer is ALLOCATION/WITH-FIXED-ALLOCATION; > everything else is more or less negotiable. Ie. the compiler needs to > know how to emit allocation sequences. Now, that was an eye opener. Ultimately, what I'd like to do is define a set of functions and global variables that can be define either in Lisp for a GC implemented in Lisp or in C for a GC implemented in C (and brought into Lisp via the alien facility). The company I work for has a very special use case that I think can be made easier by rewriting the GC. I read the opinions about why the GC is in C instead of Lisp. I understand them, agree with a few, and disagree with others. I think that the changes I need to do to the GC will be easier to implement if I can do it in Lisp instead of C. After looking at ALLOCATION/WITH-FIXED-ALLOCATION, it appears that switching the GC from a C implementation to a Lisp implementation would be very non-trivial. Has anyone given any serious thought to what would need to be done to implement the GC in Lisp? Craig > On 13 May 2013 19:59, "Craig Lanning" <cla...@is...> wrote: > On Sat, 2013-05-11 at 12:53 +0300, Nikodemus Siivola wrote: > > On 9 May 2013 00:16, Craig Lanning <cla...@is...> > wrote: > > > I'm trying to identify all of the functions and variables > that allow > > > Lisp to interact with whichever GC is being used. Below > is the list > > > that I have so far (I'm using GenCGC). Have I missed > any? Do I have > > > some that I shouldn't? > > > > It's a fuzzy boundary; what do you want the list for? > > I'm trying to make of list of all the functions and variables > that > someone would need to implement if they wanted to create a new > garbage > collector. Sort of a GC API. > > Craig > > > You're missing at least WITH-PINNED-OBJECTS and its > machinery. > > > > You're also missing the lisp-side parts of the allocation > and > > pseudo-atomic machinery (see eg. WITH-FIXED-ALLOCATION in > > src/compiler/x86-64/macros.lisp)... but I don't know if that > really > > belongs on your list or not. > > > > >>>CONFIDENTIALITY NOTICE>>> This electronic mail message, > including any and/or all attachments, is for the sole use of > the intended recipient(s), and may contain confidential and/or > privileged information, pertaining to business conducted under > the direction and supervision of the sending organization. All > electronic mail messages, which may have been established as > expressed views and/or opinions (stated either within the > electronic mail message or any of its attachments), are left > to the sole responsibility of that of the sender, and are not > necessarily attributed to the sending organization. > Unauthorized interception, review, use, disclosure or > distribution of any such information contained within this > electronic mail message and/or its attachment(s), is(are) > strictly prohibited. If you are not the intended recipient, > please contact the sender by replying to this electronic mail > message, along with the destruction of all copies of the > original electronic mail message (along with any attachments). > >>>CONFIDENTIALITY NOTICE>>> This electronic mail message, including any and/or all attachments, is for the sole use of the intended recipient(s), and may contain confidential and/or privileged information, pertaining to business conducted under the direction and supervision of the sending organization. All electronic mail messages, which may have been established as expressed views and/or opinions (stated either within the electronic mail message or any of its attachments), are left to the sole responsibility of that of the sender, and are not necessarily attributed to the sending organization. Unauthorized interception, review, use, disclosure or distribution of any such information contained within this electronic mail message and/or its attachment(s), is(are) strictly prohibited. If you are not the intended recipient, please contact the sender by replying to this electronic mail message, along with the destruction of all copies of the original electronic mail message (along with any attachments). |