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.
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.