Alessio Stalla wrote:
I have found out the problem with Cells on abcl after a bit of debugging.
The function c-unlink-useds in link.lisp uses delete, which somehow destructively modifies something it should not -
Right you are. But it is not doing it should not -- that labels from gets passed the same structure being acted on by the delete, so the outer guy of course sees that.
I have always hated that code, but one attempt to clean it up did have a performance hit so it has to stay a little ugly.
I think the remove works but is the wrong fix (and will be a performance killer scaled up). I see that the outer block of code does its own cleanup of useds, so it is being done twice -- very efficiently, but twice. What I think needs doing is avoiding the inner delete by mutating the list differently. I will stare at it and see what I can come up with.
Thx for the detective work.
kt
the list of useds
gets one item shorter (not the list inside the cell but the list "useds" in c-unlink-unused, which apparently shares structure with the list inside the cell, but who knows). Replacing delete with remove does the trick. I don't know if this is caused by abcl's delete being buggy but I doubt it, since the implementation of delete in abcl is taken from cmucl, and that should be bug-free enough ;) however, I'll investigate this further.
(Thomas, I saw you at the ELS but in the end I didn't want to bother you with this - I wanted to keep the fun for me ;) thanks for your offer of help, anyway).
So now tests appear to pass. And, apart from using remove and adding a few read conditionals, no changes to cells are required for it to work on abcl. Abcl itself needs to be slightly modified (it needs to expose a couple of internal MOP functions). I'll talk to the devs about incorporating these changes on trunk and hopefully in the coming 0.15 release of abcl.
Bye, Alessio S.
cells-devel site list cells-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/cells-devel
No virus found in this incoming message. Checked by AVG - www.avg.com Version: 8.5.339 / Virus Database: 270.12.53/2154 - Release Date: 06/04/09 05:53:00