[TYPES] a paper available on "Record Unboxing", a new type-based optimization
Atsushi Ohori
ohori at riec.tohoku.ac.jp
Wed Jul 4 04:09:16 EDT 2007
Dear Colleagues,
Some of the types-list readers may be interested in the following
paper, which shows a new type-based optimization method that "unboxes"
tuples/records by flattening component tuples and changing top-level
tuples to multiple value passing. The required type based analysis is
simple but the resulting method shown to be quite effective.
This is implemented in the SML# (an extension of the Standard
ML) compiler version 0.30, which is available from:
http://www.pllab.riec.tohoku.ac.jp/smlsharp/
Any comments are welcome.
Best regards,
Atsushi
--------------------------------------------------------------------
Record Unboxing
Huu-Duc Nguyen and Atsushi Ohori
RIEC, Tohoku University
http://www.pllab.riec.tohoku.ac.jp/~ohori/research/RecordUnboxing.pdf
In the conventional implementation of functional languages, tuples
(records) are uniformly implemented as heap allocated objects even
when they are used only for multiple parameter passing. This paper
develops a type-based ``record unboxing'' optimization method that
reduces the overhead due to those unnecessary heap allocation and
associated memory accesses. We first develops a type-based algorithm
that infers where each record expression is ``rigid'' or not, i.e. it
requires heap allocation or not based on the observation that change
of a representation of a record type that does not interact with the
external environment does not affect the behavior of the program. We
then develop a record unboxing algorithm that transforms a functional
language with records to a multiple value calculus in which a function
can take/return multiple values by transforming all non rigid records
into multiple values. The combination of the two yields a simple and
yet surprisingly effective optimization method. We have implemented
the proposed method in a compiler for full Standard ML language, and
have evaluated it with a typical benchmark programs. The results show
significant speed ups for non trivial benchmarks, including 21% speed
up of mlyacc and 27% speed up for lexgen.
More information about the Types-list
mailing list