Title | No need for two classes of MRG segment |
Status | open |
Priority | nice |
Assigned user | Gareth Rees |
Organization | Ravenbrook |
Description | The 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. |
Analysis | Perhaps 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 found | inspection |
Evidence | [1] https://www.ravenbrook.com/project/mps...poolmrg.guardian.parts.separate.justify |
Created by | Gareth Rees |
Created on | 2018-07-13 21:32:52 |
Last modified by | Gareth Rees |
Last modified on | 2020-09-02 14:09:03 |
History | 2018-07-13 GDR Created. |