This is the mail archive of the
kawa@sourceware.org
mailing list for the Kawa project.
Re: call-with-values inliner
- From: Per Bothner <per at bothner dot com>
- To: kawa at sourceware dot org
- Date: Thu, 18 Dec 2014 00:19:27 -0800
- Subject: Re: call-with-values inliner
- Authentication-results: sourceware.org; auth=none
- References: <72993855-A547-48DB-ADE2-5C31DD8CDEBD at theptrgroup dot com> <5486A0CF dot 9010307 at bothner dot com> <23D686A7-1AE4-4860-B82C-8A6C094842A5 at theptrgroup dot com> <548BF248 dot 2040605 at bothner dot com>
I checked in some nice improvements on multiple values:
* If either the producer or consumer of call-with-values is fixed-arity
lambda expression, it is inlined.
* We have a new type representation of a type of multiple values
and a fixed number of value types.
* Decent-type checking of both call-with-values and values.
To do:
* A Scheme syntax for multiple-values types. Probably values[T1 ... Tn]
* Being able to round-trip multiple-values types in compiled code.
(I.e. if a function returns multiple values of known types, we should be
able to annotate or infer that, have it be saved in the .class file, and
be made use of if the function is called.)
* I haven't looked at let-values and define-values. They could probably
be improved.
* Possibly a more efficient representation of multiple values. Especially
it would be nice to not allocate a Values object in a context where the
producer is inlined.
--
--Per Bothner
per@bothner.com http://per.bothner.com/