Find a file
Martin Kustermann f205292227 [VM] Bare instructions - Part 4: Add --use-bare-instructions flag to AOT compiler & runtime
This is the final CL which adds a new --use-bare-instructions flag to
the VM.

If this flag is set during AOT compilation, we will:

  * Build one global object pool (abbr: GOP) which all code objects
    share. This gop will be stored in the object store.  The PP register
    is populated in the enter dart stub and it is restored when
    returning from native calls.

  * Gets rid of the CODE_REG/PP slots from the dart frames. Instead the
    compiled code uses the global object pool, which is always in PP.

  * Starts emitting pc-relative calls for calls between two dart
    functions or when invoking a stub.
    Limitation: We only emit pc-relative calls between two code objects
    in the same isolate (this is because the image writer is writing
    instruction objects for vm-isolate/main-isolate seperately)

  * We do compile-time relocation of those static calls after the
    precompiler has finished its work, but before writing the snapshot.
    This patches all the instruction objects with pc-relative calls to
    have the right .text distance.

  * We emit a sorted list of code objects in ObjectStore::reverse_code_table,
    which will be used by the AOT runtime to go back from PC to Code
    objects (where all metadata, e.g. stack maps, catch entry moves, pc
    descriptors are available).

Issue https://github.com/dart-lang/sdk/issues/33274

Change-Id: I6c5dd2b1571e3a889b27e804a24c2986c71e03b6
Reviewed-on: https://dart-review.googlesource.com/c/85769
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-12-14 16:03:04 +00:00
.github Add no-response bot configuration. 2018-10-05 22:21:06 +00:00
build Revert "Rollback to C++11." 2018-12-05 17:01:03 +00:00
client Remove old annotated_steps buildbot scripts and dispatcher 2017-05-23 16:17:02 +02:00
docs Add specification of set literals. 2018-12-14 13:15:38 +00:00
pkg Change completion tests to work in /home/test/. 2018-12-14 15:42:24 +00:00
runtime [VM] Bare instructions - Part 4: Add --use-bare-instructions flag to AOT compiler & runtime 2018-12-14 16:03:04 +00:00
samples Revert "[gardening] mark sample_extension_test as error" 2018-12-10 19:37:33 +00:00
samples-dev fix some typos 2018-10-10 19:15:30 +00:00
sdk Move instantiation classes to separate file 2018-12-07 17:43:31 +00:00
tests [VM] Bare instructions - Part 4: Add --use-bare-instructions flag to AOT compiler & runtime 2018-12-14 16:03:04 +00:00
third_party Roll tcmalloc to e9ab4c53041ac62feefbbb076d326e9a77dd1567. 2018-12-13 02:20:03 +00:00
tools tools/generate_compile_commands.py conform to style guide 2018-12-13 18:43:01 +00:00
utils [dartdevc] fix conditional imports in kernel backend 2018-12-04 18:39:46 +00:00
.clang-format VM: Re-format to use at most one newline between functions 2017-07-13 08:08:37 -07:00
.gitattributes Remove the Dart 1 tests. 2018-10-11 23:45:18 +00:00
.gitconfig [infra] Add documentation to .gitconfig 2018-06-11 18:24:16 +00:00
.gitignore tool to generate compile_commands.json for analysis servers 2018-12-06 14:36:51 +00:00
.gn Starting work on full GN build 2016-09-23 07:47:36 -07:00
.mailmap fix my name in .mailmap 2018-09-11 01:45:52 +00:00
.packages Remove pkg:tuple from DEPS 2018-12-13 22:51:21 +00:00
.vpython [infra] Add .vpython spec to fix gsutil on the bots (#31065) 2018-10-11 15:11:35 +00:00
AUTHORS Add Cristian Almstrand to AUTHORS 2015-07-16 09:51:56 -07:00
BUILD.gn [VM] Remove 'corelib' and 'dart-io' sources generation into C++ arrays 2018-10-02 23:27:05 +00:00
CHANGELOG.md Record deferred accesses in kernel world impacts and use it for splitting only 2018-12-06 23:20:38 +00:00
codereview.settings Update codereview.settings to Gerrit (dart-review.googlesource.com) 2017-09-04 12:52:09 +00:00
CONTRIBUTING.md Add CONTRIBUTING.md 2018-08-15 18:02:17 +00:00
dartdoc_options.yaml Add a 'Core' category for doc generation. 2018-06-07 14:47:41 +00:00
DEPS Remove pkg:tuple from DEPS 2018-12-13 22:51:21 +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 Remove the Dart 1 tests. 2018-10-11 23:45:18 +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 [vm/compiler] Add VM Compiler Team WATCHLIST 2018-11-23 10:24:02 +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.