dart-sdk/pkg
Alexander Markov d78abd0a69 [vm/aot/tfa] Cache negative results of dispatch target lookup
When looking for a dispatch target, also cache not found selectors
to avoid repeated lookups.

Improves time of AOT compilation step 2 (TFA) on a large
Flutter application 189s -> 171s (-9.5%).

TEST=ci

Issue: https://github.com/dart-lang/sdk/issues/42442
Change-Id: I21686e1f40a09ef62abf010bfa3670615c108942
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/214342
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2021-09-24 16:27:45 +00:00
..
_fe_analyzer_shared [cfe] Handle potentially constant types in instantiations 2021-09-23 09:04:12 +00:00
_js_interop_checks Remove getProperty js_util optimization 2021-09-24 01:41:48 +00:00
analysis_server analysis_server: Fix OrganizeImports correction 2021-09-24 15:57:17 +00:00
analysis_server_client
analyzer Move function reference const tests to evaluation_test.dart 2021-09-24 05:39:59 +00:00
analyzer_cli
analyzer_plugin
analyzer_utilities
async_helper
build_integration
compiler [kernel] Add Field.fieldReference 2021-09-24 12:01:08 +00:00
dart2js_info
dart2js_runtime_metrics
dart2js_tools
dart2native
dart_internal
dartdev [ CLI ] Hide exe and aot-snapshot subcommands from dart compile on IA32 2021-09-24 01:21:08 +00:00
dds [dds] Add support for services/service extensions to DAP 2021-09-24 11:53:15 +00:00
dev_compiler
diagnostic
expect
front_end Add documentation on Future and Stream showing async programming. 2021-09-24 13:07:40 +00:00
frontend_server
js
js_ast
js_runtime
kernel [kernel] Add Field.fieldReference 2021-09-24 12:01:08 +00:00
language_versioning_2.7_test
meta
modular_test
native_stack_traces
nnbd_migration Migration: don't add !s to expressions of type Null. 2021-09-24 13:25:24 +00:00
scrape
smith
sourcemap_testing
status_file
telemetry telemetry: allow the latest pkg:usage 2021-09-23 21:49:28 +00:00
test_runner
testing
vm [vm/aot/tfa] Cache negative results of dispatch target lookup 2021-09-24 16:27:45 +00:00
vm_service
vm_snapshot_analysis
.gitignore Ignore .dart_tool and .packages in pkg dir 2021-09-24 15:22:08 +00:00
BUILD.gn
pkg.status
README.md

Package validation

The packages in pkg/ are automatically validated on the LUCI CI bots. The validation is largely done by the tools/package_deps package; it can be tested locally via:

dart tools/package_deps/bin/package_deps.dart

Packages which are published

There are several packages developed in pkg/ which are published to pub. Validation of these packages is particularly important because the pub tools are not used for these packages during development; we get our dependency versions from the DEPS file. Its very easy for the dependencies specified in a package's pubspec file to get out of date wrt the packages and versions actually used.

In order to better ensure we're publishing correct packages, we validate some properties of the pubspec files on our CI system. These validations include:

  • that the dependencies listed in the pubspec are used in the package
  • that all the packages used by the source are listed in the pubspec
  • that we don't use relative path deps to pkg/ or third_party/ packages

Packages which are not published

For packages in pkg/ which we do not intend to be published, we put the following comment in the pubspec.yaml file:

# This package is not intended for consumption on pub.dev. DO NOT publish.
publish_to: none

These pubspecs are still validated by the package validation tool. The contents are more informational as the pubspecs for these packages are not consumed by the pub tool or ecosystem.

We validate:

  • that the dependencies listed in the pubspec are used in the package
  • that all the packages used by the source are listed in the pubspec
  • that a reference to a pkg/ package is done via a relative path dependency