commit | a17b52c2c14f888af93029a434df25cf906411b0 | [log] [tgz] |
---|---|---|
author | Teagan Strickland <sstrickl@google.com> | Wed May 22 13:20:49 2019 +0000 |
committer | commit-bot@chromium.org <commit-bot@chromium.org> | Wed May 22 13:20:49 2019 +0000 |
tree | 1f07ba00629bd485dd5c821fec38606fea596458 | |
parent | 7d1b54bd47e73df5aaf9eecc3c77f77e19f4f6a9 [diff] |
Revert "[vm, compiler] Unoptimized megamorphic calls." This reverts commit fde6a5917e952149c585ee112b017d632d0de4eb. Reason for revert: This commit looks to be causing new test failures on dart2js. While there are some odd results on some builders that look like infra failures, some builders (for example, dart2js-minified-strong-linux-x64-d8) show the new failing tests clearly. Original change's description: > [vm, compiler] Unoptimized megamorphic calls. > > When an instance call in unoptimized code creates more than FLAG_max_polymorphic_checks cases, switch the call to use a MegamorphicCache instead of ICData. The prevents unbounded collection of type feedback, and gives improvements on microbenchmarks in the 3-8% range for unoptimized code. > > It also leads to a loss of target frequency information for the optimizer, leading to different ordering for range checks in polymorphic inlining. This leads to changes on megamorphic microbenchmarks from -31% to +60%, weighted toward the negative end. > > In practice the frequency information seems unimportant, as dart2js has 4.01% geomean improvement. > > This is a step toward direct monomorphic calls in unoptimized code, which will also make use of the patching and type feedback extraction added here. > > Bug: https://github.com/dart-lang/sdk/issues/26780 > Bug: https://github.com/dart-lang/sdk/issues/36409 > Bug: https://github.com/dart-lang/sdk/issues/36731 > Change-Id: I29f53f23b6794c5f5f0db8b8184788cee16fd9c5 > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99270 > Reviewed-by: Alexander Markov <alexmarkov@google.com> TBR=rmacnak@google.com,alexmarkov@google.com,ajcbik@google.com Change-Id: Icad46b93cdf8541a00563f49da6b4ac0a4df1ba1 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: https://github.com/dart-lang/sdk/issues/26780, https://github.com/dart-lang/sdk/issues/36409, https://github.com/dart-lang/sdk/issues/36731 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103440 Reviewed-by: Teagan Strickland <sstrickl@google.com> Commit-Queue: Teagan Strickland <sstrickl@google.com>
Dart is:
Optimized for UI: Develop with a programming language specialized around the needs of user interface creation
Productive: Make changes iteratively: use hot reload to see the result instantly in your running app
Fast on all platforms: Compile to ARM & x64 machine code for mobile, desktop, and backend. Or compile to JavaScript for the web
Dart has flexible compiler technology lets you run Dart code in different ways, depending on your target platform and goals:
Dart Native: For programs targeting devices (mobile, desktop, server, and more), Dart Native includes both a Dart VM with JIT (just-in-time) compilation and an AOT (ahead-of-time) compiler for producing machine code.
Dart Web: For programs targeting the web, Dart Web includes both a development time compiler (dartdevc) and a production time compiler (dart2js).
Dart is free and open source.
Visit the dart.dev to learn more about the language, tools, getting started, and more.
Browse pub.dev 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.