libera/#sicl - IRC Chatlog
Search
7:50:42
beach
pjb: The nursery GC would have no problem shortening a rack. With the global heap, I think it is possible only if at least two words are freed up.
7:55:51
beach
Similarly, the nursery collector has no space following the rack. Before a nursery collection, we must assume that the first word after the rack is allocated, and after a nursery collection, everything is compacted, so no free space then either.
7:56:49
beach
The global collector might have free space after the rack, and that can sometimes be determined without a GC.
7:59:09
beach
But, let me emphasize this again: I am not interested in optimizations that may have little or no impact on overall performance, but that require more specialized code to maintain. In this case, the frequency of calls to ADJUST-ARRAY and CHANGE-CLASS would determine whether it would be worthwhile to consider such an optimization.
7:59:57
beach
Of course, if SICL is taken over by people with more energy and time than I have, they can do what they please, since this is free software.
8:08:23
beach
The way to alter the structure of a rack in SICL (with CHANGE-CLASS or ADJUST-ARRAY) is done in two steps. First a copy is made of the original rack, if necessary. Then CAS is used to install the rack, provided the old rack is what it was when the operation started.
8:09:45
beach
First a copy is made of the original rack, if necessary. Then, a new rack is created an initialized, if necessary (i.e. if the copy is not made or it won't work). Finally CAS is used.
8:10:30
beach
With optimizations like the one suggested, objects would have to be locked for thread safety.