Find a file
Tess Strickland 9329995dd8 [vm] Add a separate invoke field dispatcher for dynamic closure calls.
Adds TODO comments in appropriate places for future work that will move
non-covariant type checks out of the closure body. Instead, the VM will
perform them in the invoke field dispatcher (or NoSuchMethodFromCallStub
if --no-lazy-dispatchers is used) when a dynamic call is detected.

This change has minimal negative effects on the code size. Here are the
code size change percentages for the Flutter Gallery in release mode:

* ARM7
  * Instructions: +0.0391%
  * ROData: -0.0040%
  * Total: +0.0239%
* ARM8:
  * Instructions: No change
  * ROData: +0.0015%
  * Total: +0.0004%

All other code size benchmarks are also <0.01% increase.

Bug: https://github.com/dart-lang/sdk/issues/40813
Change-Id: I4bf145803bb9e2d4ba5c22c12b6fd3bb5368441d
Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-nnbd-linux-release-x64-try,vm-dartkb-linux-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/151826
Commit-Queue: Tess Strickland <sstrickl@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2020-07-02 13:16:19 +00:00
.dart_tool update typed_data to the nnbd version 2020-07-01 20:53:31 +00:00
.github
benchmarks [benchmarks] Migrate Utf8Decode benchmark. 2020-07-01 16:53:11 +00:00
build [build] Support --clang when building dart sdk on Windows. 2020-06-25 03:36:41 +00:00
client
docs process docs: Add link to experimental flags yaml file 2020-05-30 02:28:22 +00:00
pkg [vm_snapshot_analysis] Add buildComparisonTreemap 2020-07-02 11:35:49 +00:00
runtime [vm] Add a separate invoke field dispatcher for dynamic closure calls. 2020-07-02 13:16:19 +00:00
samples [vm/ffi] Expose a subset of dart_(native_)api.h for dynamic linking. 2020-06-18 07:30:43 +00:00
samples-dev/swarm
sdk [dart:html] Revert commits using MDN compatibility info 2020-07-02 01:33:18 +00:00
tests [vm] Add a separate invoke field dispatcher for dynamic closure calls. 2020-07-02 13:16:19 +00:00
third_party
tools [dart:html] Revert commits using MDN compatibility info 2020-07-02 01:33:18 +00:00
utils Revert "[SDK] Adds an SDK hash to kernels and the VM." 2020-06-26 18:54:17 +00:00
.clang-format
.gitattributes Migrate language_2/string to null safety. 2020-06-17 21:14:43 +00:00
.gitconfig
.gitignore Add internal benchmarks to .gitignore. 2020-06-26 11:57:22 +00:00
.gn
.mailmap
.packages [vm/tools] Move snapshot analysis tool to its own package. 2020-06-23 13:14:41 +00:00
.style.yapf
.vpython
AUTHORS
BUILD.gn [Core Libraries] Eliminate the fork in the core libraries. 2020-06-16 23:37:36 +00:00
CHANGELOG.md [dart:html] Update console interface 2020-06-30 23:32:27 +00:00
codereview.settings
CONTRIBUTING.md
DEPS Update to latest package:yaml 2020-07-01 21:33:34 +00:00
LICENSE
PATENT_GRANT
PRESUBMIT.py [Core Libraries] Eliminate the fork in the core libraries. 2020-06-16 23:37:36 +00:00
README.dart-sdk
README.md
sdk_args.gni Revert "[SDK] Adds an SDK hash to kernels and the VM." 2020-06-26 18:54:17 +00:00
WATCHLISTS [dart2js] 20 dart2js tests ported to nnbd #1. 2020-06-26 15:21:42 +00:00

Dart

A client-optimized language for fast apps on any platform

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 platforms illustration

License & patents

Dart is free and open source.

See LICENSE and PATENT_GRANT.

Using Dart

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.

Building Dart

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.

Contributing to Dart

The easiest way to contribute to Dart is to file issues.

You can also contribute patches, as described in Contributing.