[m-dev.] question about data representation decisions
novalazy at gmail.com
Sun Apr 1 11:40:03 AEST 2018
On Fri, 30 Mar 2018 17:31:02 +1100 (AEDT), "Zoltan Somogyi" <zoltan.somogyi at runbox.com> wrote:
> I propose that we switch to a different approach. Instead of
> recording in interface files the *information needed to reach
> the right decisions* about data type representations, we should
> record *the decisions themselves*. This would require adding
> a new kind of item that can occur only in compiler generated
> interface files, but we agreed several months ago that that is ok.
> I see two advantages of the approach I am proposing.
> First, it has a much simpler correctness argument about
> ensuring consistency: the compiler decides the representation
> of a du type when it compiles the module that defines that type,
> and every compiler invocation on any other module uses the
> record of that decision. If the defining module changes,
> the decision may change, but then so will the interface file
> containing that decision, which will require a recompile
> of all other modules dependent on it.
> Second, and more subtly, in the scenario above, we *won't*
> have to export the bar == float equivalence as a global equivalence;
> we would export it only as something that applies to the fields of foo
> that are bars. Occurrences of bars in other contexts would not be
It also affects whether arguments of type bar are passed via float
registers, if used.
More information about the developers