MPS issue job004095

TitleNo need for two classes of MRG segment
Statusopen
Prioritynice
Assigned userGareth Rees
OrganizationRavenbrook
DescriptionThe MRG pool class uses two classes of segment: MRGLinkSegClass is a subclass of plain SegClass and contains LinkStructs, while MRGRefSegClass is a subclass of GCSegClass and contains RefStructs. The original reason for this division is that the RefStruct contains references to automatically managed pools and so needs barriers, while the LinkStruct does not, and so splitting the memory avoids the need for barrier operations when consulting the LinkStruct (for example by the message operations). See design.mps.poolmrg.guardian.parts.separate.justify [1].

This makes the pool implementation complex and the code hard to follow.

However, after the switch to the software barrier for (job004072) this reason no longer applies: it would now be possible to combine the two kinds of structure and to use the software barrier for the reference but not for the link.
AnalysisPerhaps there are other advantages of the separation, for example putting all the Refs together might make scanning more efficient?

In any case, since nothing is broken, this should be left for fixing along with job003953.
How foundinspection
Evidence[1] https://www.ravenbrook.com/project/mps...poolmrg.guardian.parts.separate.justify
Created byGareth Rees
Created on2018-07-13 21:32:52
Last modified byGareth Rees
Last modified on2020-09-02 14:09:03
History2018-07-13 GDR Created.