Thanks for the excellent explanation. Increasing the buffer size does work.
A dumb mistake is also obvious in retrospect. I had written a fold-right (recursive) function, and even when the incoming "kons" converts NSStrings to scheme strings, a full chain of recursive calls (and objc:instances) will be built before any konsing occurs at all. Since I was just using the fold function in ns:array->list and ns:dictionary->alist, I changed it to a fold-left (iterative) and tacked a reverse onto the ns:array->list. Et voila, a large array of NSStrings converts immediately. You do still have to watch out for unconvertable objects, for example an ns:array containing 5607 ns:dictionaries requires that much finalizer space as a list. (That example is plucked straight from my iTunes Music Library.xml file; I found this problem while writing some plist code.) On 1/20/06, felix winkelmann <[EMAIL PROTECTED]> wrote: > On 1/18/06, Zbigniew <[EMAIL PROTECTED]> wrote: > The current solution is to increase the size of the pending-finalizers > buffer, done with the "-:fXXX" runtime option. You can also run your > code with "-:d" to see some information about finalization, or use > `(set-gc-report! ...)' to see much more information. > > A more elegant approach might be to make the pending-buffer > dynamically resizable - well, it's on my every-growing todo list... ;-) > > > cheers, > felix > _______________________________________________ Chicken-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/chicken-users
