MPS issue job003802

TitleManual unclear about exact collection
Statusopen
Prioritynice
Assigned userGareth Rees
OrganizationRavenbrook
DescriptionChristian Schafmeister [2] would like to implement exact collection, but couldn't figure out what to do from the manual.

(A similar problem was reported by GRM [3]: "It's anti-social to require that the client has ambiguous roots.")
AnalysisThe manual contains the information he needs, but it's buried away in the "Allocation point protocol" section [2]:

"The description of the protocol assumes that you have declared your threads’ control stacks and registers to be ambiguous roots ... This is the simplest way to write a client, but other scenarios are possible. Please contact us if your use case is not covered here (for example, if you need an exact collector)."

Three opportunities for improvement here:

1. This section could easily describe another scenario. (Register your own ambiguous root using mps_root_create_table and use that instead.)

2. The notes on exact collection should be pulled up to top level. We don't support it at the moment because of the race between assignment of the exact reference and mps_commit.

3. We could automate the normal case by putting a root into the allocation point (that points to the last object allocated on the AP, if any).
How foundcustomer
Evidence[1] <http://www.ravenbrook.com/project/mps/...location.html#allocation-point-protocol>
[2] <https://info.ravenbrook.com/mail/2013/08/16/21-47-33/0/>
[3] https://info.ravenbrook.com/project/mp...2001-11-05/mmprevol/request/mps/160108/
Created byGareth Rees
Created on2014-05-16 12:10:05
Last modified byGareth Rees
Last modified on2014-10-01 20:14:53
History2014-05-16 GDR Created.