Find a file
Vyacheslav Egorov d290d8ecf4 [vm] Detect and expand calls through getters in AOT call specializer.
If we know that receiver is a subclass of a certain type and that this
type has accessor get:m then call o.m(...) is guaranteed to be an
invocation through a getter. Such invocations are executed most
efficiently when expanded into o.get:m().call(...).

Source based pipeline handles this case (at least for invocations on
`this`) directly in the parser, but Kernel based graph builder does not
have this sort of special case.

Instead of teaching Kernel flow graph builder to specially handle
invocations on `this` we teach AOT call specializer to specially handle
all invocations where receiver is known to be a subclass of certain
class. Such optimization is more generic and handles things that
previously were not handled by the optimization.

AOT compiler also has heuristics for injecting field dispatchers into
classes but these heuristics only handle fields of function type and
don't work for fields like `Function f` or `var f`.

Improves ParserCombinators benchmark by 4x.

This relands eea2c168f9 with a fix.

Change-Id: I13a41544c737b980efd431e31e4d15ad31da853e
Reviewed-on: https://dart-review.googlesource.com/30455
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2017-12-19 21:02:04 +00:00
build [GN] Fix gn_run_binary.py for different error 2017-12-19 20:30:58 +00:00
client Remove old annotated_steps buildbot scripts and dispatcher 2017-05-23 16:17:02 +02:00
docs Change wording on main functions. 2017-12-19 11:54:22 +00:00
pkg Add fasta parser function expression recovery 2017-12-19 20:57:43 +00:00
runtime [vm] Detect and expand calls through getters in AOT call specializer. 2017-12-19 21:02:04 +00:00
samples [vm/testing] Make --strong -c dartk configuration a Dart 2.0 configuration. 2017-12-12 12:19:10 +00:00
samples-dev Spelling fixes e to i. 2017-06-24 13:41:39 +02:00
sdk Directly create dart2js platform files using its patch files 2017-12-19 20:31:57 +00:00
tests Directly create dart2js platform files using its patch files 2017-12-19 20:31:57 +00:00
third_party [infra] Use Clang for ia32 and arm64. Use the dl'd sysroots by default. 2017-12-02 06:19:33 +00:00
tools Directly create dart2js platform files using its patch files 2017-12-19 20:31:57 +00:00
utils Directly create dart2js platform files using its patch files 2017-12-19 20:31:57 +00:00
.clang-format VM: Re-format to use at most one newline between functions 2017-07-13 08:08:37 -07:00
.gitattributes Migrate the lingering language_strong tests over to language_2. 2017-10-27 23:44:08 +00:00
.gitignore Git ignore vscode project files. 2017-03-23 15:26:06 -07:00
.gn Starting work on full GN build 2016-09-23 07:47:36 -07:00
.mailmap Add .mailmap file. 2015-05-18 19:33:16 +02:00
.packages Here's a start at exposing an API to address https://github.com/dart-lang/sdk/issues/31371. 2017-12-08 21:57:00 +00:00
AUTHORS Add Cristian Almstrand to AUTHORS 2015-07-16 09:51:56 -07:00
BUILD.gn Allow the host toolchain to be set via a simple variable. 2017-11-06 19:06:18 +00:00
CHANGELOG.md [dart:core] Adds @Provisional annotation 2017-12-19 19:00:22 +00:00
codereview.settings Update codereview.settings to Gerrit (dart-review.googlesource.com) 2017-09-04 12:52:09 +00:00
DEPS Bump DEPS to pull in linter 0.1.41. 2017-12-14 19:02:56 +00:00
LICENSE Remove the Dromaeo and TodoMVC samples. 2016-01-11 13:09:26 -08:00
PATENTS Move LICENSE, AUTHORS, PATENTS into the dart directory. 2014-02-10 06:48:47 +00:00
PRESUBMIT.py Normalize all status files and enable presubmit hook. 2017-12-07 08:38:30 +00:00
README.dart-sdk remove docgen from the sdk 2015-09-18 13:18:10 -07:00
README.md [gardening] Whitespace change to trigger bots. 2017-04-28 10:08:58 -07:00
WATCHLISTS Remove turnidge@ from WATCHLISTS =( 2017-11-02 16:53:10 +00:00

Dart

Dart is an open-source, scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps.

Using Dart

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.

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.

License & patents

See LICENSE and PATENTS.