This patch removes the //flutter/sky/engine dependency from //flutter/lib/ui,
which lets us build the bulk of the dart:ui library without needing to build
//flutter/sky/engine.
There are now three ways to start Dart applications:
1) From a precompiled snapshot
2) From a snapshot
3) From source
When loading from source, we no longer use the complex data pipe /
dependency catcher mechanism. Instead, we just load the source
synchronously from the file system. This is appropriate because running
from source is used only during development and not during production.
The previous design was built assuming we would want to run from source
over the network, which meant we needed to be able to load source
asynchronously over a high latency channel.
* Use IGNORE_EINTR instead of HANDLE_EINTR when using the `close` syscall wrapper.
* Don't leak the file descriptor used to memory map Dart related artifacts.
Switch sdk_xcode_harness to use flutter build aot
This patch moves a bunch of complexity out of FlutterApplication.xcodeproj and
into `flutter build aot`, which will make it easier for developers to create
their own FlutterApplication.xcodeproj.
This patch:
- makes dart traces (coming from the VM and the timeline API)
available to mojo:tracing
- adds --vm-complete-timeline parameter, which makes the Dart VM enable all
categories of timeline traces from the beginning, allowing to do startup
tracing
This is based on the equivalent support in dart content handler.
Fixes https://github.com/flutter/flutter/issues/3162.
Previously the AOT snapshot was packaged as a dynamic library (similar to the
scheme used on iOS). This change eliminates the need for a native code
toolchain when building for AOT.
This include build system changes for selecting Dart's precompiler mode
plus a way to locate and load the precompiled snapshot library from an
Android application
Dart invokes Start/StopTracing callbacks within the _setVMTimelineFlags service
method whenever the embedder timeline stream toggles on or off. Flutter's
implementation of these callbacks was modifying the set of enabled streams,
which could override the intended behavior of _setVMTimelineFlags.
Start/StopTracing will now only control Flutter's embedder-specific log.
Also needed to change the Flutter engine's --trace-startup flag to set the
corresponding timeline stream flag on the Dart VM.