commit | 3d77741666cccad0be7e63582dfe1b1df1037f38 | [log] [tgz] |
---|---|---|
author | Tess Strickland <sstrickl@google.com> | Thu Sep 10 07:12:14 2020 +0000 |
committer | commit-bot@chromium.org <commit-bot@chromium.org> | Thu Sep 10 07:12:14 2020 +0000 |
tree | dc37e8e899b91f5a8703e6378937c29c87e1de51 | |
parent | b0acaea1e5073ab0874de8c30a219fd052942201 [diff] |
[vm/compiler] Unify name checking in dynamic closure call dispatchers. Instead of possibly looping over the closure function parameter names array multiple times, just do it once. Check each entry against the provided argument names. If none match, check the required bit (if in null-safe mode). Also keep a count of matched names to check that all provided names matched after the iteration. Now that optional name checking is part of the fragment built by BuildClosureCallArgumentsValidCheck, that method builds checks for exactly the same things as its namesake in Function. Also refactor the variables used by the checker into read/write ones that need to be allocated in the parsed function and read-only ones that can just be temporaries since no Phi nodes are needed. Cq-Include-Trybots: luci.dart.try:vm-kernel-linux-release-x64-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-linux-debug-x64-try,vm-kernel-precomp-linux-release-simarm_x64-try,vm-kernel-linux-release-simarm-try,vm-kernel-linux-release-simarm64-try Bug: https://github.com/dart-lang/sdk/issues/40813 Change-Id: I3cb421dd538629d7f5499f3bbf0653d34b850dce Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/160725 Commit-Queue: Tess Strickland <sstrickl@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com> Reviewed-by: Daco Harkes <dacoharkes@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's 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.
See LICENSE and PATENT_GRANT.
Visit 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.