MPS issue job003492

TitleMFS refuses to handle objects smaller than platform alignment
Statusclosed
Priorityoptional
Assigned userGareth Rees
OrganizationRavenbrook
DescriptionIf you try to create an MFS pool with a unit size that's smaller than the platform alignment, you get this assertion failure:

   poolmfs.c:114: MPS ASSERTION FAILED: unitSize >= UNIT_MIN

This seems like it will lead to needless difficulties when upgrading from 32-bit to 64-bit. For example, it caused MMQA test function/100.c [1] to fail.
AnalysisThere's no good reason to assert here: MFS rounds up the unitSize to the next multiple of the platform alignment anyway.
How foundautomated_test
Evidence[1] http://www.ravenbrook.com/project/mps/master/test/function/100.c
Observed in1.111.0
Created byGareth Rees
Created on2013-05-25 16:08:19
Last modified byGareth Rees
Last modified on2014-04-04 17:07:35
History2013-05-25 GDR Created.

Fixes

Change Effect Date User Description
185231 closed 2014-04-04 17:05:08 Gareth Rees Tidy-up of attributes and pool classes:
* Bring design up to date.
* New function PoolHasAttr encapsulates attribute checking.
* Abstract classes are abstract and mustn't be checked.
* The dummy pool class in fotest needs a size.
* Abstract pool classes null out methods that they can't provide a generic implementation for, to force subclasses to provide one.
* New function PoolTrivFramePopPending provides a generic implementation of that method.
* Rename PoolNoFreeWalk to PoolTrivFreeWalk since it has NOOP rather than NOTREACHED.
* Check that AttrMOVINGGC implies AttrGC.
* Remove unimplemented attributes (BUF_RESERVE, BUF_ALLOC, INCR_RB, INCR_WB, PM)
* AMC now inherits from AMCZ instead of the other way round. This is simpler: AMC adds features to AMCZ rather than AMCZ taking features away (and not quite getting it right).
* Similarly, LO inherits from AbstractSegBufPoolClass + PoolClassMixInCollect so that it doesn't have to clear AttrSCAN and the scan methods.
* Fix bug in MFSCheck -- mustn't check unroundedUnitSize >= UNIT_MIN since small unit sizes are rounded up to UNIT_MIN.
* Don't see AttrFREE in MRG (since no free method is supplied).
* Check AttrSCAN systematically (in PoolScan and SegCheck) rather than opportunistically in TraceStart and TraceQuantum.
182257 open 2013-05-27 10:19:35 Gareth Rees MFS now rounds unitSize up to UNIT_MIN instead of asserting.