Commit Graph

124 Commits

Author SHA1 Message Date
Chris Bracken
42ed01522d
Split Snapshotter into AOT and Script classes (#17159)
There's very little code-sharing between the two, and what little there
is is concentrated in the GenSnapshotClass and the fingerprint
reading/writing utility methods.
2018-05-01 12:42:05 -07:00
Chris Bracken
cdbb2385f1
Extract kernel compile from buildAotSnapshot (#17062)
Moves the kernel compile step to the beginning of the AOT build in a
separate method. This is pre-factoring for iOS universal builds where
the kernel build happens once, but we then snapshot twice: once for
armv7 and once for arm64.

This also writes dependencies to build/kernel_compile.d rather than
build/aot/snapshot.d, since that is immediately overwritten by
gen_snapshot.
2018-04-29 10:47:34 -07:00
Chris Bracken
fe0de001d9
Eliminate unnecessary buildAotSnapshot parameter (#17056)
This isn't user-specifiable through a flag, so no need to pass it as a
parameter.
2018-04-27 15:51:07 -07:00
Chris Bracken
972a9e915a
Fix AOT snapshotting depfile path (#17050)
Fixes a bug introduced in 82f969ff05 where
the depfile used for AOT snapshotting, useful in particular for skipping
gen_snapshot when inputs/outputs haven't changed since the last build.
2018-04-27 13:03:26 -07:00
Chris Bracken
c38ac4480c
Eliminate unnecessary AOT build wrapper function (#17027)
Inlines the buildAotSnapshot function, which simply passes through its
arguments to Snapshotter.buildAotSnapshot.
2018-04-26 19:03:33 -07:00
Chris Bracken
ebcd08c6ef
Eliminate build aot --interpreter flag (#17025) (#17033)
This is required for iOS debug builds, but unused otherwise. In theory,
Android debug builds could be run in this mode, but this is historically
untested and adds unnecessary complexity to the code. If ad-hoc testing
is required, it can be patched in when necessary.

This re-lands 8c4f0c0d21 with a fix to
xcode_backend.sh to eliminate the use of --interpreter.
2018-04-26 17:25:23 -07:00
Chris Bracken
e3247a3629
Revert "Eliminate build aot --interpreter flag (#17025)" (#17032)
Requires a fix to xcode_backend.sh. Will followup momentarily with that
fix.

This reverts commit 8c4f0c0d21.
2018-04-26 16:30:16 -07:00
Chris Bracken
8c4f0c0d21
Eliminate build aot --interpreter flag (#17025)
This is required for iOS debug builds, but unused otherwise. In theory,
Android debug builds could be run in this mode, but this is historically
untested and adds unnecessary complexity to the code. If ad-hoc testing
is required, it can be patched in when necessary.
2018-04-26 16:07:10 -07:00
Chris Bracken
82f969ff05
Move AOT snapshotting to Snapshotter class (#17015)
This moves AOT snapshotting out of build_aot.dart and into the
Snapshotter class. It also adds unit tests for iOS debug, profile, and
release builds.
2018-04-26 14:37:39 -07:00
Chris Bracken
9765f0af00
Extract Xxd class for iOS AOT snapshotting (#17006)
This fixes and re-lands 4bb7496b62, which
was reverted in ceade39c83 due to test
failures caused by a bad rebase.
2018-04-26 08:32:51 -07:00
Todd Volkert
ceade39c83
Revert "Extract Xxd class for iOS AOT snapshotting (#16986)" (#17003)
This reverts commit 4bb7496b62.
2018-04-26 07:11:06 -07:00
Chris Bracken
4bb7496b62
Extract Xxd class for iOS AOT snapshotting (#16986)
Allows for better mockability when tests are added.
2018-04-25 22:16:59 -07:00
Chris Bracken
cd90a1ed73
Use File.rename instead of mv to move AOT outputs (#16985)
This allows for testing with MemoryFileSystem, when tests are added.
2018-04-25 20:50:53 -07:00
Chris Bracken
2689560b72
Add Xcode.cc, Xcode.clang methods for iOS builds (#16974)
Makes for easier mocking, particularly for testing AOT snapshot build.
2018-04-25 20:50:16 -07:00
Chris Bracken
7ffcd3d22d
Extract KernelCompiler class (#16937)
Wraps the compile function in a class injected via the global context,
which makes it easier to mock in unit tests -- specifically tests for
AOT snapshotting, which already require pretty significant amounts of
mock inputs.
2018-04-24 14:03:41 -07:00
Chris Bracken
b5af0a9114
Use GenSnapshot class for AOT snapshotting (#16891)
This replaces the existing manual invocation with the GenSnapshot class,
which allows for better configuration and testability.
2018-04-23 11:21:19 -07:00
Alexander Aprelev
e0cd42e4ad Roll engine to 76cb311d9c33720dcd19274228b39ecdbad8d9af (with rolled dart) (#16518)
* Handle error count reported by frontend.

Extend compilation result from single string to a structure(string filename and integer error count).

* Use ?.

* Include engine roll with dart sdk roll.

* parse(onError) -> tryParse

* Make '?? throw' more readable and avoid issue with analyzer

* Fix test so it mocks compiler output including errors count
2018-04-12 16:28:01 -07:00
Konstantin Scheglov
38970f5f75
Add a new Device backed by flutter_tester. (#16405) 2018-04-10 09:37:16 -07:00
Chris Bracken
4576f56624
Run iOS gen_snapshot as x86_64 arch (#16323)
We are about to begin building gen_snapshot as a multi-arch binary,
which when run as x86_64 will generate arm64 AOT output, and when run as
i386 will generate armv7 AOT output.

Currently, gen_snapshot is an x86_64 binary, so this change is
effectively preventative in nature, and is a no-op with the current
snapshotter.
2018-04-09 19:12:05 -07:00
Vyacheslav Egorov
71b2cfb2a0
Turn Dart 2 mode by default. (#15565) 2018-03-16 20:29:38 +01:00
Alexander Aprelev
ded538a1bb
Update dependencies with forced upgrade. (#15344)
* Update dependencies with forced upgrade.

Now that https://github.com/flutter/flutter/issues/15261 is fixed, do the update with upgrade.

* Update test package use following upgrade

* Replace addOption(allowMultiple) with addMultiOption
2018-03-09 10:38:54 -08:00
Alexander Markov
602e6d74b5
Pass entry points JSON files to front-end server, take 2 (#15227)
* Pass entry points JSON files to front-end server (#15180)

* Fix ios/debug build which uses 'flutter build aot': do not require entry points files and disable AOT transformations in this mode
2018-03-06 18:45:45 -08:00
Alexander Markov
01d8e0a143
Revert "Pass entry points JSON files to front-end server" (#15223)
* Revert "Pass entry points JSON files to front-end server (#15180)"

This reverts commit 0edea88745.

Reason: buildbot failures on Mac.
2018-03-06 16:08:37 -08:00
Alexander Markov
0edea88745
Pass entry points JSON files to front-end server (#15180) 2018-03-06 14:50:22 -08:00
Alexander Aprelev
673c5485ae
Generate and use dep-file for --preview-dart-2 (#15077)
* Use depfile in --preview-dart-2 mode.

* Generate and use frontend_server.d to guard against reusing outdated dill files when frontend_server changes.
2018-03-02 11:33:13 -08:00
Vyacheslav Egorov
1f6b9471a8
Fix snapshot fingerprinting in --preview-dart-2 mode. (#14843)
* Fix snapshot fingerprinting in --preview-dart-2 mode.

This is a follow up to PR #14775 - instead of treating dill file
as an input treat as intermediate file and don't fingerprint it.

Make sure to always use original main Dart file as an entry
point for fingerprint calculation.

This fixes an issue that AOT snapshot would not be recompiled in
the preview-dart-2 mode if entry point changes, e.g.

$ flutter build aot -t t/x.dart --preview-dart-2
$ flutter build aot -t t/y.dart --preview-dart-2

The second invocation would not build AOT snapshot.

(This issue is visible on the microbencmarks bot)
2018-02-23 21:40:19 +01:00
Alexander Aprelev
39ddeb52b0
Fix snapshot fingerprint check for --preview-dart-2. (#14775)
* Fix snapshot fingerprint check for --preview-dart-2.

* Remove printTraces
2018-02-20 10:02:00 -08:00
Alexander Aprelev
a11da23852
Put generated kernel files into <build> folder (#14693)
* Put generated kernel files into <build> directory

* USe default value for kernel file
2018-02-14 12:59:42 -08:00
Jacob Richman
2c05ecab9f
Flutter tools support for kernel transformer tracking Widget creation locations. (#13997) 2018-02-12 10:44:31 -08:00
asiva
83e0ca24fd Fuse --strong into --preview-dart-2 option. 2018-02-08 09:18:52 -08:00
Alexandre Ardhuin
c02b6a8bcf
some whitespace cleanup (#14443) 2018-02-02 23:27:29 +01:00
Jason Simmons
d5149d4457
Toolchain support for Android ARM64 targets (#14394) 2018-02-01 15:14:48 -08:00
Vyacheslav Egorov
d9fd4d6f49
Make sure to pass strong mode options down to gen_snapshot (#14118) 2018-01-16 15:38:29 +01:00
Alexander Aprelev
e2e3c5df05
Reland 9534082fc0 with fix for incremen… (#14040)
* Reland 9534082fc0 with fix for incremental compilation.

When in incremental mode, awaiting exitCode won't work because compiler is not expected to exit after compilation.
Instead listen for stdout stream closing and report error if outputFilename has not been received.

* Fix lints
2018-01-11 14:33:50 -08:00
Alexander Aprelev
5dc4ce85d9
Revert "Handle abnormal termination of frontend compiler. (#13982)" (#14037)
This reverts commit 9534082fc0.

Causes hot_mode_dev_cycle__preview_dart_2_benchmark test timeout.
2018-01-10 19:54:08 -08:00
Alexander Aprelev
9534082fc0
Handle abnormal termination of frontend compiler. (#13982)
* Check frontend_server exit code.

When frontend_server completes abnormally, flutter tools has to stop and let user know.

* Add tests
2018-01-10 17:51:08 -08:00
Siva
426d6b0672
support for --strong option (#13859)
* Plumb a --strong option through to the front end server and the engine
so that we can run flutter apps in preview-dart-2 and strong mode

* - Address analyzer lint issues
*- correctly set up strong mode option in the case of AOT builds
2018-01-04 10:39:02 -08:00
Alexander Markov
a69af9902c
Pass --aot option to front-end server when generating kernel for AOT build (#13342) 2017-12-04 16:57:44 -08:00
Alexander Aprelev
42ca92c756
Hide preview-dart-2 flag. Show only in verbose (#13270) 2017-11-30 10:36:46 -08:00
Chris Bracken
d6a35ee356
Update dart:vmservice_sky to vmservice_io (#13138)
In 77af1e5eec, dart:vmservice_sky was
renamed to dart:vmservice_io.
2017-11-21 16:23:33 -08:00
Martin Kustermann
545ec9efb7
Add support for NDK discovery and add --prefer-shared-library option (#12788)
* Add support for NDK discovery and add --prefer-shared-library option

We would like to be able to use native tools (e.g. simpleperf, gdb) with
precompiled flutter apps.  The native tools work much better with *.so
files instead of the custom formats the Dart VM uses by default.

The reason for using blobs / instruction snapshots is that we do not
want to force flutter users to install the Android NDK.

This CL adds a `--prefer-shared-library` flag to e.g. `flutter build
apk` which will use the NDK compiler (if available) to turn the
precompiled app assembly file to an `*.so` file.  If the NDK compiler is
not available it will default to the default behavior.

* Rebase, add test for NDK detection, augment flutter.gradle with @Input for flag

* Use InMemoryFileSystem for test

* Remove unused import

* Address some analyzer warnings
2017-11-21 15:44:03 +01:00
Alexandre Ardhuin
1fce14a31c enable lint prefer_single_quotes (#12665) 2017-10-22 18:11:36 +02:00
Alexander Aprelev
52fbcefed6 Link platform.dill only into app kernel file used for build aot. (#12571)
gen_snapshot loads all packages from single app kernel file.
2017-10-17 13:30:32 -07:00
Zachary Anderson
4c23397eda Remove dead --assert_initializer flag (#12441) 2017-10-06 14:54:14 -07:00
Alexander Markov
7153dea296 Add hidden options --extra-front-end-options and --extra-gen-snapshot-options to flutter tool (#12219)
This CL introduces 2 hidden options to 'flutter build aot' and 'flutter run' for passing arbitrary arguments to front-end server and to gen_snapshot tool when building and running flutter app in --profile or --release modes.

The ability to pass arbitrary options simplifies various experiments, as it removes the need to change defaults and rebuild flutter engine for every tested configuration.
2017-10-03 12:55:53 -07:00
Mikkel Nygaard Ravn
14016523ed Ensure snapshot rebuild logic takes main path into account (#11924) 2017-09-07 14:45:42 +02:00
Chris Bracken
ce08bf9a21 Log checksum validation errors at trace level (#11944)
Checksum validation is intended only as a performance improvement.
Checksum de-serialization errors (typically framework version mismatch) are
expected on framework updates and shouldn't be user-visible except for
informational purposes when --verbose is set.
2017-09-05 17:03:56 -07:00
Chris Bracken
c896fe2f6e Invalidate snapshot when entrypoint changes (#11913)
Adds the app entrypoint as a key in the checksum file.

This change eliminates the assumption that checksummed files change when
the main entrypoint changes. In the case where there are two
entrypoints, a.dart and b.dart and a.dart imports b.dart and b.dart
imports a.dart, building the app with entrypoint a.dart followed by a
build of the app with entrypoint b.dart would result in the same
files list and checksums, but should invalidate the build.
2017-09-05 11:19:09 -07:00
Alexander Aprelev
c5750cd7ea Introduce --preview-dart-2 option to run new frontend compiler in flutter tools. (#11741)
This adds --preview-dart-2 flag that enables use of Dart 2.0 Frontend in Flutter tools.
2017-08-31 13:35:55 -07:00
Chris Bracken
27d3e8a41f Extract snapshotting logic to Snapshotter class (#11820)
Extract a Snapshotter class that can be shared between FLX snapshotting,
AOT snapshotting, and assembly AOT snapshotting. Allows for better
testability of snapshotting logic.

* Extracts script snapshotting used in FLX build.
* Adds tests for snapshot checksumming, build invalidation/skipping.

Remaining work: disentangle + extract AOT snapshotting and Assembly AOT
snapshotting logic from build_aot.dart.
2017-08-29 10:55:14 -07:00