[MLton] Re: [MLton-commit] r5678
Matthew Fluet
fluet at tti-c.org
Thu Sep 20 20:37:51 PDT 2007
On Thu, 20 Sep 2007, Vesa Karvonen wrote:
> [I noticed the comment in this commit log message a long time ago, but
> didn't get around to commenting on it until now.]
>
>> --- mlton/trunk/mlton/backend/packed-representation.fun 2007-06-26 06:15:05 UTC (rev 5677)
>> +++ mlton/trunk/mlton/backend/packed-representation.fun 2007-06-27 00:11:16 UTC (rev 5678)
>> @@ -968,7 +968,7 @@
>> (* TupleRep.make decides how to layout a sequence of types in an object,
>> * or in the case of a vector, in a vector element.
>> * Vectors are treated slightly specially because we don't require element
>> - * widths to be a multiple of the word size.
>> + * widths to be a multiple of the word32 size.
>> * At the front of the object, we place all the word64s, followed by
>> * all the word32s. Then, we pack in all the types that are smaller than a
>> * word32. This is done by packing in a sequence of words, greedily,
>
> I'd just like to note that on some CPUs the above scheme results in
> rather bad record layouts. More specifically, on some CPUs (IIRC,
> e.g. Hitachi SH-4) the register+immediate addressing mode is limited
> to small (e.g. 4-bit) immediate offsets (possibly) scaled by the
> operand size. On such a CPU, packing the widest fields to the front
> means that only the first few fields can be accessed with a single
> instruction. Narrow fields at the end will be beyond the reach of the
> small immediate offset. I think that a better scheme would be to
> attempt to coalesce narrow fields into wider (aligned) fields (e.g.
> 1+1+2 -> 4 bytes) and put the coalesced fields to the front as long as
> alignment restrictions are respected and the aligned size of the whole
> record does not increase. The point is to maximize the number of
> fields that can be accessed with a single instruction.
Fair enough; it would be fairly to modify the TupleRep.make function to
put the small objects first. Though, I don't believe that any currently
supported architecture suffers from the problem you describe.
More information about the MLton
mailing list