commit | 05bac41e39c0c7121b5760f14f3ac3395358872d | [log] [tgz] |
---|---|---|
author | Jens Johansen <jensj@google.com> | Tue Dec 01 14:12:16 2020 +0000 |
committer | commit-bot@chromium.org <commit-bot@chromium.org> | Tue Dec 01 14:12:16 2020 +0000 |
tree | d3d56c4fb2ff99b5fe1901ecc9a08d6a41bf11ef | |
parent | 97baa6efd187c0eaec6a1dfd53984300588a0101 [diff] |
Revert "[VM] Read and report constant constructor coverage from dill" This reverts commit 5370c56c8098ce563be50d27a55e64efff9bdfe5. Reason for revert: Failures on dartk-android-product-arm dartk-android-product-arm dartkp-linux-release-arm-qemu like this: sizeof(ScriptLayout) got 64, Script_InstanceSize expected 56 ../../runtime/vm/dart.cc: 160: error: CheckOffsets failed. Try updating offsets by running ./tools/run_offsets_extractor.sh sizeof(ScriptLayout) got 64, AOT_Script_InstanceSize expected 56 ../../runtime/vm/dart.cc: 160: error: CheckOffsets failed. Try updating offsets by running ./tools/run_offsets_extractor.sh Original change's description: > [VM] Read and report constant constructor coverage from dill > > This CL makes use of the now included constant constructor coverage > in the dill file. > > It works like this: > * When the CFE evaluates constants, every constant constructor > invocation evaluated saves the reference to the constructor in the > `Source` (from the Components uri to source table) for the callers > Library. > * This data is loaded into the VM in a "raw" format. > * When a request for coverage comes in, the VM - on top of the normal > coverage processing - goes through all scripts to find constant > constructor coverage for the requested script and offset. Note that > all scripts must be checked because library A can have evaluated a > constructor from library B - so even if only coverage for library B > was requested, library A has to be checked. > For all constructors found the start and end position is reported as > covered. Note that this does not mark any initializes and there are > (at least currently) no good way of marking which initializes were > evaluated (because it has to be stable across edits even when the > `advanced invalidation feature` is enabled). > * Note that the reason for the coverage to work on references - as > hinted above - is because we want it to be stable across hot reloads > even if/when advanced invalidation is enabled. This means, that > library A cannot record "positional coverage" for library B because > library B might get (for instance) new comments that will make any old > offsets invalid. By using references we always lookup in the current > world and use the correct offsets. > > https://github.com/dart-lang/sdk/issues/38934 > > TEST=Existing test suite, new tests for the new coverage added. > > Change-Id: I925963d1a9b9907efe621c72deb7348fa3be5ae8 > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/171949 > Commit-Queue: Jens Johansen <jensj@google.com> > Reviewed-by: Ben Konyi <bkonyi@google.com> > Reviewed-by: Vyacheslav Egorov <vegorov@google.com> TBR=vegorov@google.com,bkonyi@google.com,jensj@google.com Change-Id: I5187e6749d59ded250ec0933a94db0536485b70a No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174470 Reviewed-by: Jens Johansen <jensj@google.com> Commit-Queue: Jens Johansen <jensj@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.