freenode/#clasp - IRC Chatlog
Search
13:46:13
beach
drmeister: How can you get the fast allocation by bumping a pointer if you don't have a compacting garbage collector. And how can you get a compacting garbage collector if you are using conservative stack scanning?
13:50:48
beach
Because you may have an integer that looks like a pointer, and if you compact, then you would incorrectly update that integer.
13:52:13
Shinmera
Yeah, so you need to pin things pointed to from the stack, which makes it hard to compact.
13:53:58
beach
Shinmera: Not only that. What if there is something there? What do you do to allocate then?
13:54:05
Bike
https://www.ravenbrook.com/project/mps/master/manual/html/topic/allocation.html#allocation-point-implementation well, here's mps's explanation.
14:00:11
beach
Bike: It might be worth for someone (at least drmeister) to find out, because if he expects cheap pointer bumping and conservative stack scanning at the same time, he should make sure they are simultaneously possible. And I would like to know how they do it in that case.
14:03:38
beach
Bike: I take it from the mention of "near lock free" on that page, that they do not have a per-thread nursery?
14:07:51
Bike
the lock is for when the buffer runs out of space and more has to be reserved. i think.
14:08:18
Bike
well, still not like thread local nurseries in that you can allocate something with an ap and then refer to it from another thread
16:05:45
Bike
the rc file load is specially hacked so that it doesn't rebind *package* or *readtable*. is that normal?
17:14:31
drmeister
Anything that looks like a pointer on the stack will pin whatever it looks like it points to so that those pinned things cannot move.
17:14:57
drmeister
My understanding is that sbcl uses the same approach. Conservative on the stack, precise on the heap.
17:17:40
drmeister
I'm in the airport about to board to Philadelphia - I'll be on for another 15 min or so.
17:23:44
Bike
really should figure out this peek-char thing. it seems to alter the internal state of the stream
17:32:47
Shinmera
unread-char (which peek-char is likely to use) says something that seems related: "Invoking peek-char or read-char commits all previous characters."
17:37:40
Bike
peek-char has this complicated mode where it skips over a bunch of characters before finding one to peek at, which i'm not so familiar with
17:52:40
Shinmera
I'm still kinda bothered by CL's definition of whitespace. Especially for lots of plaintext protocols you have to wing your own definition that's restricted to ASCII since that's what those protocols expect.
17:53:18
Shinmera
So far I've honestly never found a use for whitespace-p and peek-char T because of that
18:13:36
beach
I guess I should just ask someone who knows the SBCL garbage collector how it works. I can't figure out how to reconcile pinned objects in the middle of a nursery with compaction of the remaining objects and allocation by bumping a pointer.
19:50:34
Bike
::notify drmeister i figure you've already seen and worked out a fix for the Reader_O removal problem- but i'm looking at it and thinking we shouldn't be parsing the arguments strings at startup anyway