134 Commits

Author SHA1 Message Date
Kaushik Iska
a632b781e0
Message loop task heaps are shared (#9335) 2019-06-19 14:03:14 -07:00
Chinmay Garde
96a1a843cb
Replace lock_guard with scoped_lock and use class template argument deduction. (#9338) 2019-06-17 10:08:45 -07:00
Chinmay Garde
e8f8a9253a Roll buildroot to 75660ad5 and complete the C++ 17 transition. (#9319) 2019-06-14 12:52:03 -07:00
Kaushik Iska
6f5347c5d6
MessageLoopTaskQueue schedules Wakes (#9316)
* Refactor to move Task Queue to its own class

- This is to help with sharing task queue among
  multiple message loops going forward.

- currently there is 1:1 mapping between task queue
  and message loop, we are still maintaining the semantics
  for this change.

* Add mutex include

* Most of the waking up changes minus test failures

* Refactor MessageLoopImpl to be Wakeable

- Makes testing easier by letting us putting a TestWakeable

- Also move the waking up logic to the task queue

* add tests

* Fix formatting and license
2019-06-13 17:44:44 -07:00
Kaushik Iska
fe7e444d6f
Refactor: move Task Queue to its own class (#9301)
* Refactor to move Task Queue to its own class

- This is to help with sharing task queue among
  multiple message loops going forward.

- currently there is 1:1 mapping between task queue
  and message loop, we are still maintaining the semantics
  for this change.

* Add mutex include

* Add unit tests for task queue

* fix formatting

* license
2019-06-13 10:14:13 -07:00
Zachary Anderson
0a2e28d797
Revert tracing changes (#9296)
* Revert "[fuchsia] Fix alignment of Fuchsia/non-Fuchsia tracing (#9289)"

This reverts commit f80ac5f571479053b134e60bca77603269b2ce2a.

* Revert "Align fuchsia and non-fuchsia tracing (#9199)"

This reverts commit 78265484623037c6544dfd5380367bca29fa27b0.
2019-06-12 10:25:49 -07:00
Kaushik Iska
87c26ae1a1
Refactor Delayed Tasks to their own file (#9290)
* Refactor Delayed Tasks to their own class

* fix some comments

* Update BUILD.gn
2019-06-11 18:33:04 -07:00
Dan Field
f80ac5f571
[fuchsia] Fix alignment of Fuchsia/non-Fuchsia tracing (#9289) 2019-06-11 18:02:15 -07:00
Dan Field
7826548462
Align fuchsia and non-fuchsia tracing (#9199) 2019-06-05 15:14:27 -07:00
Kaushik Iska
44b1cedff6
Allow the task queues to be swapped in MessageLoops (#9189) 2019-06-04 21:19:44 -07:00
liyuqian
7f4f52f952
Add missing ifndef guard for count_down_latch.h (#9143)
I discovered this while experimenting with the timing API.
2019-05-30 14:17:08 -07:00
Chinmay Garde
37b367e4d2
Allow specifying both Dart and non-Dart fixtures in engine unit-tests. (#9113)
* Allow specifying both Dart and non-Dart fixtures in engine unittests.

This fixes numerous issues in the way in which fixtures were managed
in the engine unit-tests.

* Instead of only being able to specify Dart fixtures, unit-tests may specify
  non-Dart fixtures as well. These are simply copied over to the fixtures
  directory known to the unit-test at runtime.
* An issue where numerous Dart files could be given to the kernel snapshotter
  has been addressed. It was anticipated that such a (legal) invocation to the
  kernel snapshotter would produce a snapshot with the contents of all the Dart
  files added to the root library. This is incorrect and the behavior in this
  case is undefined.
* Dart files referenced by the main Dart file are correctly tracked via a
  depfile.
* The snapshotter arguments have been cleaned up to get rid of unused
  arguments (`—strong`) and  the use of the VM product mode argument has been
  corrected to no longer depend on the Flutter product mode.
2019-05-28 19:11:47 -07:00
Chris Bracken
0f1ff3bdb3
Correct typos, adopt US spellings (#9081)
Corects a bnuch of typeos throughout teh engien codebsae. Also makes
a couple minor Commonwealth -> US spelling adjustments for consistency
with the rest of Flutter's codebase.

Made use of `misspell` tool:
https://github.com/client9/misspell
2019-05-25 13:14:46 -07:00
Adam Barth
197feb5119
[fuchsia] Update zx_clock_get callers (#8998)
Fuchsia is changing zx_clock_get to return a zx_status_t. This change
prepares us for that change.
2019-05-17 16:37:28 -07:00
Matthew Dempsky
3cdfa807fa Replace ararysize macro with fml::size function (#8975)
This is forward compatible with std::size and similar to how Chromium
removed use of the arraysize macro.
2019-05-15 12:43:47 -07:00
Chinmay Garde
5ac2d02645
Avoid disabling sources assignment filters are these have been removed. (#8954) 2019-05-13 18:38:28 -07:00
stuartmorgan
644db5a49c
Standardize TimePoint implementaion on std::chrono (#8913)
In practice, the implementations of std::chrono seem to match our
implementations, so this makes the code simpler and easier to maintain,
as well as potentially improving over time without changes on our part.
2019-05-09 10:33:36 -04:00
stuartmorgan
812616a677
Fix TimePoint on Windows (#8910)
Addresses overflow issues with timer multiplication by using std::chrono
instead of QueryPerformanceCounter. The Windows implementation of
std::chrono uses QPC, so this should have no impact on performance or
clock resolution.

Fixes #32121
2019-05-08 23:20:32 -04:00
Chinmay Garde
f6e6d39860
Wire up Fuchsia SDK related updated for shell dependencies. #8869
This does not actually import the runners into the engine. It only sets up the targets so they need no modifications are necessary when the migration is done. The engine has been verified to build in both buildroots.
2019-05-06 18:01:59 -07:00
Matthew Dempsky
a0bb23aad1 Fix header include guards for fml/thread_local.h (#8721)
While working on #8659, I had planned on renaming this file to
thread_local_unique_ptr.h, but decided against that at the last minute
before sending for review. However, when reverting the file rename, I
forgot to also revert the header guard change.
2019-04-29 11:07:04 -07:00
Dan Field
57bf1c0968
Fix crash when cursor ends up at invalid position (#8747) 2019-04-26 15:43:44 -07:00
liyuqian
1c9457cedc
Revert "Only allow mappings for ICU initialization. (#8656)" (#8682)
This reverts commit bd8c5b135e4d41842d0d5d42ff4943a18b8f4f0c.

Reverts flutter/engine#8656

Reason:  https://github.com/flutter/engine/pull/8656 seems to break the framework windows tests and the engine roll (see https://cirrus-ci.com/task/4704667236827136 and https://github.com/flutter/flutter/pull/31330). The failure has been consistent for 7 consecutive engine-to-framework auto-rolls.

TBR: @chinmaygarde
2019-04-22 10:28:54 -07:00
Matthew Dempsky
b0cbce4175 Replace ThreadLocal with ThreadLocalUniquePtr<T> (#8659)
Fixes https://github.com/flutter/flutter/issues/31292.
2019-04-19 17:33:46 -07:00
Chinmay Garde
bd8c5b135e
Only allow mappings for ICU initialization. (#8656)
If the mapping callback is not set or it the callback returns invalid data, ICU initialization will be embedder responsibility.

This affects all embedders and the following have been audited:
* Android: Via a symbol mapping.
* iOS: Via a file mapping.
* Embedder: Via a file mapping.
* Fuchsia: Via a VMO mapping
* Test shells and Flutter tester: Via file mapping with ICU data needing to be next to the executable.
2019-04-19 15:01:40 -07:00
Chinmay Garde
6257dfeb53
Add factory methods to FileMapping that make it easy to create common mappings. (#8652)
The GetMapping calls removed in this patch had the same code and had to be repeated across different test harnesses as well as in dart_snapshot.cc. Just make this a factory method so the code is less verbose.
2019-04-19 12:48:53 -07:00
Chinmay Garde
1e5f59d4f6
Reland "Remove DartSnapshotBuffer and dry up snapshot resolution logic". (#8645)
This reverts commit 0fcfa0df2aa19947ad73882ab4fb24fc9124e47b.
Windows depends on referencing the snapshot symbols directly instead of
via dlsym. Something in the way these symbolsa are generated in
bin_to_assembly.py is causing them to be inaccessible at runtime.
2019-04-18 18:54:43 -07:00
Chinmay Garde
0fcfa0df2a
Revert "Remove DartSnapshotBuffer and dry up snapshot resolution logic. (#8640)" (#8644)
This reverts commit 905ddb6ca9f9dcb6b1a7cea67d502da094867623.
2019-04-18 16:46:03 -07:00
Chinmay Garde
905ddb6ca9
Remove DartSnapshotBuffer and dry up snapshot resolution logic. (#8640)
Fixes https://github.com/flutter/flutter/issues/26782.
2019-04-18 16:01:19 -07:00
Chinmay Garde
e356dbca2c
Merge flutter/synchronization contents into fml. (#8525)
When flutter/synchronization was first authored, we did not own fml (it was called fxl then). Now we do, so use a single spot for such utilities. The pipeline was meant to be a general purpose utility that was only ever used by the animator (it even has animator specific tracing), so move that to shell instead (where the animator resides).
2019-04-09 19:18:51 -07:00
Chinmay Garde
ca1d163d45
Support message loops whose tasks are executed concurrently. (#8419)
The number of workers depends on what the platform deem appropriate for the system at runtime.
2019-04-09 17:03:41 -07:00
David Worsham
ff1bcdc009
Add Views V2 support for Fuchsia (#8115) 2019-04-07 01:18:59 -07:00
Chinmay Garde
cb8eb801a4
Allow embedders to specify their own task runner interfaces. (#8273)
Currently, all Flutter threads are managed by the engine itself. This works for
all threads except the platform thread. On this thread, the engine cannot see
the underlying event multiplexing mechanism. Using the new task runner
interfaces, the engine can relinquish the task of setting up the event
multiplexing mechanism and instead have the embedder provide one for it during
setup.

This scheme is only wired up for the platform thread. But, the eventual goal
is to expose this message loop interoperability for all threads.
2019-03-27 16:16:59 -07:00
Zachary Anderson
ce9ea58694
[fuchsia] Disable FML_TRACE_COUNTER events to unblock roll (#8325) 2019-03-27 10:36:34 -07:00
Zachary Anderson
42d062f95e
[fuchsia] Add missing trace macros (#8297) 2019-03-25 16:03:41 -07:00
Chinmay Garde
ad5b722a72
Simplify the fallback waiter and add traces for vsync scheduling overhead. (#8185) 2019-03-18 15:49:16 -07:00
Chinmay Garde
4b01d795fe
Add frame and target time metadata to vsync events and connect platform vsync events using flows. (#8172)
This will allow us to easily visualize the time the platform informed the engine of a vsync event, its arguments, and when the engine began its UI thread workload using this information.
2019-03-14 16:48:01 -07:00
Chinmay Garde
246f0e3f4a
Add an allocator specific check to ensure that strings passed to the timeline are not heap allocated. (#8168)
Verified that the tests fail on issues like https://github.com/flutter/engine/pull/8166. Unfortunately, there is no x-platform way to perform this check but this should gate incorrect traces being added to the engine.
2019-03-14 14:15:46 -07:00
Jason Simmons
403337ebb8
Do not pass short-lived buffers as labels to Dart_TimelineEvent (#8166)
Dart no longer makes a copy of the label string when recording events.

See https://github.com/flutter/engine/pull/8152
2019-03-14 12:49:42 -07:00
Chinmay Garde
906d684a77
Reland ""Add support for trace counters with variable arguments and instrument the raster cache." (#8145)
This reverts commit bc901324faf5a24f9220cc7ecbcf5b97b96ae09f and fixes the
discovered on Windows builds.
2019-03-13 13:53:22 -07:00
liyuqian
fc2e6b61c8
Typo "fast an inline" to "fast and inline" (#8142) 2019-03-12 15:27:33 -07:00
Chinmay Garde
bc901324fa
Revert "Add support for trace counters with variable arguments and instrument the raster cache. (#8094)" (#8122)
This reverts commit 2a0d3542851ae59c2d2f490d1111eeb57b0da388.
2019-03-11 15:09:24 -07:00
Chinmay Garde
2a0d354285
Add support for trace counters with variable arguments and instrument the raster cache. (#8094) 2019-03-11 14:44:43 -07:00
Chinmay Garde
7f16789b2e
Remove redundant thread checker in FML. (#8053)
There is already fml/memory/thread_checker.h
2019-03-05 20:07:10 -08:00
Chinmay Garde
8529dbc865
Remove unused FML file export.h (#7926)
We should not be exporting anything from FML anyway.
2019-02-22 12:44:09 -08:00
Alexander Aprelev
2acd79480a
Add fml::FileExists implementation for Windows (#7845) 2019-02-15 12:42:41 -08:00
Jason Simmons
050dcaad60
Embed ICU data inside libflutter.so on Android (#7588)
Prior to this the Android embedder code would extract the icudtl.dat asset out
of the APK and write it to local disk during the first startup of the app.

This change will make that work unnecessary and eliminate the risk of ICU
failures due to errors in the extraction process.
2019-01-30 11:56:17 -08:00
Chris Bracken
826f342641
[Fuchsia] Depend on libtrace when that is what's really meant (#7214)
libtrace-provider has libtrace listed as a dependency when really it
does not have any such dependency. This lets trace clients use
libtrace-provider as a dependency when what they really mean is libtrace.

This errant dependency in trace-provider is being fixed, which
means we need to fix these clients.
2018-12-13 13:13:38 -08:00
Alexander Aprelev
cebde437a1
Guard the service protocol's global handlers list with a reader/writer lock. (#6900)
* Revert "Revert "Guard the service protocol's global handlers list with a reader/writer lock (#6888) #6895" (#6899)"

This reverts commit b6e93759faa92a96650e326b0e82578a6803c46d and applies fix for tests on Windows.

* Reland guard the service protocol's global handlers list with a reader/writer lock.

* Remove blank line
2018-11-18 14:36:15 -08:00
Todd Volkert
b6e93759fa
Revert "Guard the service protocol's global handlers list with a reader/writer lock (#6888) #6895" (#6899) 2018-11-18 09:28:26 -08:00
Jason Simmons
fd0911cc0f Guard the service protocol's global handlers list with a reader/writer lock (#6888) (#6895)
The service protocol holds the lock while waiting for completion of service
RPC tasks.  These tasks (specifically hot restart/RunInView) may need to
modify a handler's description data.

Task execution and ServiceProtocol::SetHandlerDescription will obtain a shared
lock to make this possible.  AddHandler and RemoveHandler will obtain an
exclusive lock in order to guard against a handler being deleted while a
service task is running.
2018-11-17 22:04:37 -08:00