From: Sanel Z. <sa...@gm...> - 2014-01-03 12:20:58
|
On 01/01/14,Jonathan S. Shapiro wrote: > I haven't looked at the code, but I would be surprised if this turns > out to be a GC issue. Three things seem to be going on. Let me > explain what I'm thinking. Thanks for giving some details about GC internals. I always found TS GC the only 'hairy' part I didn't understand fully, especially because there aren't any builtin helpers, except (gc-verbose), to see what is going on. > IMPLEMENTATION OF DO > > I do not recall how DO is implemented in TinyScheme. If it is a macro > (as I suspect) that gets turned into a tail-recursive LAMBDA, or if > the internal implementation operates in that sort of way, that would > account for why CONS cells related to procedure calls are getting Yes, DO is macro. > In the long term, the right solution to all of this is to implement > relocating GC. That would be a fairly major change to the TinyScheme > library API, because it would require a different API from the > standpoint of C code. Will it require changing existing code that uses TinyScheme? Btw. when you are all here guys, I have some further questions regarding to GC and other things :) First, how hard is to add ability to dump image from loaded coded? I have a bit of Scheme code, loaded from couple of init-like files and it takes some time to start either REPL or binaries linked with TinyScheme. If you give me some pointers, I'll put it in my TS 'fork' and provide a patch for those who are interested about this feature. The second one is about GC. I'm loading TinyCLOS, not directly, but as part of some test suite and is dog slow; I assume it is because GC is called very often. Now I plan to use it extensively, but this slowness is unbearable for normal use. I tested it with s7 (https://ccrma.stanford.edu/software/snd/snd/s7.html) which is fork of TinyScheme and the load is instant. The same with other implementations... Any ideas what is going on? > Jonathan Best, Sanel |