freenode/#clasp - IRC Chatlog
Search
3:37:55
Bike
http://wingolog.org/archives/2014/01/19/elf-in-guile wingo can be informative even when they're not around
4:24:38
Bike
maybe we could do some junk to dump out elf with compiled functions in it, for dispatchers.
8:15:53
beach
The global allocator has two parts, namely a list of 2-word headers (or CONS cells) and a traditional heap as used by malloc() and free().
9:07:23
beach
Doug Lea's allocator also has some features that can be eliminated when used together with a garbage collector. In particular, caching of chunks, hoping that the same chunk will be allocated again soon, is of no use.
10:05:52
beach
This is getting interesting. Doug Lea's allocator is designed to handle arbitrary sequences of calls to malloc() and free(). I wonder how the design might change when used with a garbage collector. In such a context, there will be a large number of calls to malloc() with no calls to free(), followed by a large number of calls to free() with no calls to malloc().
10:18:47
Shinmera
I assume it's not a copying one then, though? Since with copying you don't really need to free anything.
10:19:59
beach
The per-thread GC is a sliding collector. Recently, I have become convinced that the global GC should be managed as combination of a mark-and-sweep collector for the headers and as a malloc/free heap for the racks.
10:20:25
beach
For example, ignoring caching, when there is a call to free(), the preceding and/or following chunk might be free. In that case, the chunk about to be freed must be coalesced with its neighbor(s) and those neighbor(s) must be unlinked from their respective free lists. But when there are several calls to free(), then one might be able to coalesce several adjacent blocks and only unlink at the end of the entire operation.
10:31:17
Shinmera
I don't have any experience implementing or testing GCs for their viability so I can't really say anything about it.
10:33:14
beach
Most systems require much more complicated memory management, though. The two-word mandatory header of all SICL objects makes things a lot simpler.
13:00:30
drmeister
beach: A two-word manditory header of all SICL objects? I thought it was just one word - the stamp.
13:18:09
frgo
But how does one interface from SICL (or Lisp) to malloc() or free() without reaching out to C?
13:20:11
Bike
malloc and free are way more complicated, which is why they're library functions, and why beach can say things like "i want to use dlmalloc specifically"
13:30:03
frgo
(Showing of my lacking knowledge here) Ok so I use mmap to do what? Map a file into memory? or use an anonymous virtual region? Then what? I don't have read or write functions in Lisp to access that memory region - or do I?
13:30:46
Bike
you use an anonymous mapping to get memory from the OS. then you use some primitives to deal with the memory directly.