| commit | f0941f7c7d5c03fadf299c9f41962b98a8ed1db7 | [log] [tgz] |
|---|---|---|
| author | Samir Jindel <sjindel@google.com> | Fri Sep 01 14:59:34 2017 +0200 |
| committer | Samir Jindel <sjindel@google.com> | Fri Sep 01 14:59:40 2017 +0200 |
| tree | a4fb659e064362c5efb000f17c52e872f8c1692c | |
| parent | bf6ea50b95711aed1d9fe55cf1dc9967585ed6e7 [diff] |
Improve the performance of closure-converted code. Summary: Previously, we would create a wrapper function in the flowgraph around converted closures, which would forward all the closure's arguments and unpack the context argument before calling the real closure function. Now, we perform the unpacking at the top of the real function to avoid having any wrapper function. Previously, captured parameters would still be appear live to the GC even if they're updated, because after they are copied into the context, all updates to them are done there. Now, as in regular closures, we zero-out the parameter variable after copying it's value into the context, avoiding potential memory leaks. Test Plan: Ran the closure conversion test suite. Ran benchmarks on Golem -- all statistically significant regressions are gone. BUG= R=dmitryas@google.com, regis@google.com Review-Url: https://codereview.chromium.org/3008923002 .
Dart is an open-source, scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps.
Visit the dartlang.org to learn more about the language, tools, getting started, and more.
Browse pub.dartlang.org for more packages and libraries contributed by the community and the Dart team.
If you want to build Dart yourself, here is a guide to getting the source, preparing your machine to build the SDK, and building.
There are more documents on our wiki.
The easiest way to contribute to Dart is to file issues.
You can also contribute patches, as described in Contributing.