Siva 10e8160c17 Roll src/third_party/dart 1bd36d694d..674fd0e060 (48 commits) #8152
674fd0e060 [vm runtime] Dynamically disable dual mapping of code on some platforms
0bd674c374 [VM-Runtime] set environment when creating detached process
578fdb0408 Call becomeMap/becomeSet() in AstCloner.
382cd59388 Update completion target tests for new map syntax
1db664764a Revert "Copy abi dills in create_sdk build rule"
a39833d957 Reland "Reland "[VM runtime] Dual mapping of executable pages.""
49a0502f49 Copy abi dills in create_sdk build rule
23eb57c2bf Revert "[vm/ffi] Support Windows 64 bit"
22c2c7ffd8 Sort declarations in build_mode.dart
e2b5559c77 [infra] Use gclient.py to apply patches to bypass update_depot_tools
f4b524cdf1 [vm] Extract reading of parameter covariance attributes
16e40cef2f Generate a diagnostic when a set or map literal is ambiguous
b89d08355b [infra] Only move coredump files on shards
7f812dea1a [vm/ffi] Support Windows 64 bit
469da726d6 [vm] Put covariance attributes into Field flags
09087490e2 update hasFix lookup table
bb7b5fcd37 add missing fix tests
48a5c3825a assist to convert to absolute imports
b3927f66df [gardening] Mark tests that crash as crashing
2d6ddf2aff Remove unnecessary override from PartialResolverVisitor
ba3b9b3b65 Sort static_type_analyzer_test.dart
1edc6d4b4d [infra] Fix approve_results not erroring properly if tryjobs lack results.
1a196d43a7 [VM/AOT] Execute catch-entry moves in parallel (our AOT doesn't generate non-cyclic moves)
6a2aa920cd Support pragma annotations through ir constants
d3d077090d [VM/FrontendServer] Add 3head patch to frontend server after breaking API changes
016e3172d1 Default parameters, more metadata, import dart:core.
853d38896e [VM/AOT] Fixes incorrect deserialization of catch entry moves
3cf7d6a9c7 [tests] Changing expected cast errors to type errors for collections tests
b87c44d6b3 Generate diagnostic for non-bool conditions in if elements
74395d940f Comment out test_import_short_absolute that fails on Windows.
7c1544898d [vm] Decouple flow graph building of implicit getters and setters from kernel reading
57f4da318c [vm, gc] The mutator's TLAB and the interpreter's lookup cache must be visited even if the mutator is unscheduled.
15842d4583 Build more import scopes, support for enums.
f2029f54cd Fix type inference of map/set literals when the context is a type parameter.
11b9481403 [vm/frontend] Fix frontend_server_test on Windows.
bfb30bffe0 Fix a bug in the ConstantVerifier so that conditional elements are lazily verified
ed1f956991 Fix the abi dills download script
8f03ae05ff [infra] Add --list-configurations option to test.dart.
9faca2fa68 [vm] Document lifetime requirements of arguments to Dart_TimelineEvent.
295ea59385 [vm] Give functions compiled through Dart_LoadCompilationTrace a non-zero usage counter.
def0b21225 [infra] Fix test.dart saying untested configurations don't exist.
abd1854176 Fix recording of map/literal context type.
a8b3461f2e New summaries work snapshot.
9e7627b6a1 Re-land "Eliminate uses of old AST node types from pkg/analyzer/lib/src/summary"
210361ae63 Move IgnoreInfo out of the task model code base
440b4cd84e Insert implicit casts when setting interface targets
567d552de8 [infra] Add versionchecker and debianpackage to test matrix
576c4c71d9 [CFE] Always clone subexpressions of unevaluated constants.
2019-03-13 09:23:57 -07:00
..

Frontend Server

Frontend server is simple wrapper around Dart Frontend. It is a Dart application that compiles Dart source into Dart Kernel binary (.dill-file). Documentation on Dart Kernel (semantic, binary format, etc) can be found here: https://github.com/dart-lang/sdk/wiki/Kernel-Documentation.

Frontend server runs in two modes:

  • immediate mode, where Dart source file name is provided as command line argument;
  • interactive mode, where communication is happening over stdin/stdout.

Interactive mode instructions

Compile/Recompile

compile <input.dart>

Compiles <input.dart> Dart source file with Dart Frontend. Replies with result response.

recompile <boundary-key>
<path/to/updated/file1.dart>
<path/to/updated/file2.dart>
...
<boundary-key>

Incrementally recompiles Dart program previously compiled in current session, taking into account changes in the listed files. Replies with result response.

Relative paths should be relative to current working directory for the shell that launched Frontend Server.

Accept/Reject

accept

Accepts results of incremental compilation, so that on next recompilation request Dart Frontend will not include these recompiled files.

reject

Rejects results of incremental compilation, so that on next recompilation request Dart Frontend will include compilation results from previously rejected recompilation in addition to what it will recompile based on newly changed files. Small technical detail is that Dart Frontend will not recompile files from previously rejected recompilation attempts (unless they were changed since then), it will just include appropriate kernel binaries it kept around from those previously rejected compilation requests.

One use of accept and reject instructions is in the context of Dart VM hot-reload. Dart VM can reject user-provided incremental change to what is currently running. It could happen for variety of Dart VM internal reasons. For example, if incremental update changes some class to enum, such update can not be hot-reloaded by VM at this point, will be rejected.

Quit

quit

Stops the server.

Response from the server

result <boundary-key>
<compiler output>
<boundary-key> [<output.dill>]

Response from the Dart Frontend compiler is bracketed by <boundary-key> tags. If the compiler was able to produce a Dart Kernel file, the name of this file <output.dill> is provided too. If the compiler encountered unrecoverable errors, there will be no output file name provided.