MPS issue job003773

TitleObjects in LO pools are not all finalized
Statusclosed
Priorityessential
Assigned userGareth Rees
OrganizationRavenbrook
DescriptionYou can delete all references to objects in an LO pool, but they are not all finalized. Some are missed!

There's a test case in finaltest on the 2014-04-22/condemn branch, commented out with a reference to this job.
Analysis This creates 10220 objects, of which only 10200 are finalized. What happens to the other 20? It seems that they are still in the buffer, and LOWhiten just ignores buffered segments, so they are never condemned and never finalized. This is clearly deliberate: there is a comment, "buffered segs are not condemned". But this seems wrong to me: it means that an object allocated in an LO pool cannot be finalized (or weak references to it splatted) until the buffer is filled.
[following discussion between RB, DL, and NB:] Buffered segs should be condemned: it's a SMOP which might be easy to adapt from AMS. More broadly: LO and AMS should be able to share a lot of code: they are both non-moving mark-and-sweep pool classes, and LO can make use of the additional information that its objects contain no references. So LO and AMS are related in an analogous way to AMCZ and AMC.
How foundmanual_test
EvidenceNone
Test procedurefinaltest
Created byGareth Rees
Created on2014-04-22 18:20:05
Last modified byGareth Rees
Last modified on2014-10-20 17:33:44
History2014-04-22 GDR Created.

Fixes

Change Effect Date User Description
186409 closed 2014-06-03 14:52:47 Richard Brooksby Merge branch mps/branch/2014-04-23/awl into the master sources