-
Notifications
You must be signed in to change notification settings - Fork 29.7k
ThemeData: optimize by removing polymorphism and caching; fix merging #12249
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ThemeData: optimize by removing polymorphism and caching; fix merging #12249
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
to avoid broken links, i recommend inlining the advice you want to reference here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you can add the @immutable back to Theme
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is going to be trivial to defeat by just having two themes in the app, which will be pretty common, no?
Did you check if the memoization is actually helpful vs just the aggressive merging?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is going to be trivial to defeat by just having two themes in the app, which will be pretty common, no?
This optimizes for the case when the number of calls to Theme.of is >> the number of Theme and Localizations widgets. The number of times a theme changes during the build phase of a single frame should be proportional to the number of Theme/Localizations widgets in the tree. As we build a frame, we do a depth-first traversal (needs citation). Theme/Localizations applies to a whole sub-tree of widgets. Therefore, while building the sub-tree under a Theme/Localizations (whichever is the nearest ancestor) we should see a 100% cache hit rate. Only when the build phase moves on to the part of the tree with a different Theme/Localizations, do we need to re-merge the theme.
Did you check if the memoization is actually helpful vs just the aggressive merging?
I checked the following options:
- No wrapper, no memoization. Result: even worse than the current regression.
- Keep the wrapper, add memoization: Result: almost no improvement (within the noise).
- No wrapper, add memoization, use
==instead ofidentical. Result: only gets us halfway back to the original numbers. - No wrapper, add memoization (this PR): Result: back to the original numbers.
My experiments were not at all scientific. I just ran the benchmark 3 times and eyeballed the numbers.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We guarantee that we won't do a node that's a descendant before a node that's an ancestor, but that's as far as we go in terms of guaranteeing an order. We don't generally do depth first except for when the next dirty node happens to be a direct child and there's no layout builders.
I was assuming the optimisation was intended to last across multiple frames, but I guess even if it doesn't it's still a good optimisation in this case. My concern is that this is basically a hidden performance cliff, which we've so far worked really really hard to avoid.
I don't have a better suggestion though...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How about an MRU cache of the last N pairs of objects or some such? At least the cliff would be less serious...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added a cache.
7641a15 to
a5c8779
Compare
|
New changes: a5c8779 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assert that other is _IdentityThemeDataCacheKey and document that this object doesn't support being compared to other types (which normally would be a violation of == semantics)
a5c8779 to
0f39d60
Compare
0f39d60 to
2056914
Compare
|
Settled on a FIFO cache, which has a 100μs (1.8%) advantage over the RLU cache. |
| // the computations are referentially transparent. It only short-circuits | ||
| // the computation if the new inputs are identical() to the previous ones. | ||
| // It does not use the == operator, which performs a costly deep comparison. | ||
| // This memoization saves us ~4% on the stock_build_iteration benchmark. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this comment is out of date now
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removed (although, we're still saving something comparing to just not caching; still the number isn't interesting without qualifying exactly what it is we're comparing with)
|
|
||
| @override | ||
| Color get splashColor => delegate.splashColor; | ||
| int get hashCode => identityHashCode(baseTheme) ^ identityHashCode(localTextGeometry); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe add a comment here that this hash code function must be fast
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
| platform: platform, | ||
| ); | ||
| bool operator ==(Object other) { | ||
| final _IdentityThemeDataCacheKey otherKey = other; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
and a comment that we are explicitly ignoring the possibility that the types might not match in the interests of speed
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
| // The number 5 was chosen without any real science or research behind it. It | ||
| // just seemed like a number that's not too big (we should be able to fit 5 | ||
| // copies of ThemeData in memory comfortably) and not too small (most apps | ||
| // shouldn't have more than 5 themes). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
5 theme/localization pairs.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
|
FYI, this broke tests inside Google - is it safe to revert and roll forward with a fix? |
|
I'm willing to look into what broke so we don't have to rollback. My gut feeling is we should just fix those tests, they are likely making wrong assumptions about |
Changes since last roll: ``` 6e6de94 Roll dart to d9489622befb638c040975163cf9b8eba2ff057b. (flutter#12255) 5c86111 [glfw/windows] Stops keeping track of input models (flutter#12234) 9c84659 Editable text fix (flutter#12249) cce4b5b Roll src/third_party/dart e6887536aa..c74e68e501 (14 commits) 55c346a Roll fuchsia/sdk/core/linux-amd64 from vuG5q... to 6a4X4... (flutter#12252) 6beba53 Started taking advantage of Skia's new copyTableData to avoid (flutter#10154) 3c6383f Revert "Smooth out iOS irregular input events delivery (flutter#11817)" (flutter#12251) d6f0b64 pin and auto-install chrome version (flutter#12228) 2698a0e Roll fuchsia/sdk/core/mac-amd64 from Ne2UA... to JVZ_i... (flutter#12250) dfa9498 Enable platform view keyboard input on Android Q (flutter#12085) bf91a8d Roll fuchsia/sdk/core/linux-amd64 from u7Q31... to vuG5q... (flutter#12238) 58ecf52 Roll src/third_party/skia 7c47d41067d4..be194479d27f (4 commits) (flutter#12237) c71580b Roll dart to e6887536aadc7fbd1990448989601cee0224958d. (flutter#12235) cf1d156 Roll fuchsia/sdk/core/mac-amd64 from _nS67... to Ne2UA... (flutter#12236) bbb1f12 Adjust iOS frame start times to match the platform info (flutter#11802) 1de28d0 Roll src/third_party/skia 50f377e275c3..7c47d41067d4 (3 commits) (flutter#12231) da84d59 Revert "Manage iOS contexts separately (flutter#12078)" (flutter#12233) 4ac0663 Manage iOS contexts separately (flutter#12078) 28d7900 Roll src/third_party/skia 120e7d6766e4..50f377e275c3 (7 commits) (flutter#12224) 5b94c8a Revert "Roll src/third_party/dart be66176534..ec7ec4ecf7 (37 commits)" (flutter#12223) 988efe3 Do not generate kernel platform files on topaz tree (flutter#12222) 6c46a17 Don't disable toString in release mode for dart:ui classes (flutter#12204) 80b8ed8 Roll fuchsia/sdk/core/linux-amd64 from 7gDBN... to u7Q31... (flutter#12221) 7a8caaa Roll src/third_party/skia d96ef09317d6..120e7d6766e4 (2 commits) (flutter#12220) c8428ff Roll fuchsia/sdk/core/mac-amd64 from vDk46... to _nS67... (flutter#12219) 2bdfb61 Namespace patched SDK names to not conflict with Topaz (flutter#12218) ff1fcfb Roll src/third_party/dart ca7baa4013..4d5e15abde (29 commits) 2b78c59 Roll src/third_party/skia 14318c140949..d96ef09317d6 (2 commits) (flutter#12216) d74ed76 Roll src/third_party/skia b23a4f9d9442..14318c140949 (2 commits) (flutter#12215) c58c593 Roll src/third_party/skia 26ac0467cb4c..b23a4f9d9442 (2 commits) (flutter#12214) 5e85403 Roll src/third_party/dart 7bbfd532de..ca7baa4013 (3 commits) e2cc04c Roll fuchsia/sdk/core/linux-amd64 from R1yqu... to 7gDBN... (flutter#12212) 6fbfb45 Roll fuchsia/sdk/core/mac-amd64 from spUG2... to vDk46... (flutter#12210) 96443e2 Roll buildroot and Fuchsia toolchain and unblock the Fuchsia/Linux autoroller manually. (flutter#12209) 34cf4f7 Roll src/third_party/skia 4fe30e15c06c..26ac0467cb4c (2 commits) (flutter#12207) 92d42c0 Only build the x64 variant of Fuchsia on the try-jobs. (flutter#12206) e174b4b Don't load Roboto by default (flutter#12205) efb32a6 Roll src/third_party/dart 300c3333d1..7bbfd532de (5 commits) 5566be1 Roll src/third_party/skia 66d8006c2bb1..4fe30e15c06c (11 commits) (flutter#12202) e9c9984 add a convenience CLI tool for building and testing web engine (flutter#12197) bfa43e1 [flutter_runner] Generate symbols for the Dart VM profiler (flutter#12048) 954f198 Add custom test plugin that supports screenshot tests (flutter#12079) d8379f9 Move the Fuchsia tryjob into a its own step and disable LTO. (flutter#12190) c12ac24 Roll src/third_party/dart 62f78a7abb..300c3333d1 (6 commits) cab3a39 Roll src/third_party/skia b88894c8811b..66d8006c2bb1 (5 commits) (flutter#12178) 2592d6e [flutter_runner] Port the accessibility bridge from Topaz (flutter#12054) b569e8c Smooth out iOS irregular input events delivery (flutter#11817) dea813d Roll src/third_party/dart ccb6ba948b..62f78a7abb (3 commits) 2438798 Make ImageShader implement Shader for web ui (flutter#12161) c31583a Roll src/third_party/dart 2e8d912848..ccb6ba948b (30 commits) 4542886 Roll src/third_party/skia 9e5c47936b17..b88894c8811b (3 commits) (flutter#12151) 548998f Roll src/third_party/skia 1bf30ce852e0..9e5c47936b17 (2 commits) (flutter#12129) f1490a2 Roll src/third_party/skia 8cae1e95a23b..1bf30ce852e0 (2 commits) (flutter#12106) 19b2d43 Roll fuchsia/clang/mac-amd64 from H1Qjc... to HfPKR... (flutter#12088) d816755 Don't launch the observatory by default on each embedder unit-test invocation. (flutter#12087) 39c8067 Roll src/third_party/skia c2d84bfa7421..8cae1e95a23b (4 commits) (flutter#12086) b19e75a Roll src/third_party/dart fb14babf59..2e8d912848 (65 commits) 03e773a Guard availability of user notification related methods to iOS 10.0 (flutter#12084) 9c00c26 Add capability to add AppDelegate as UNUserNotificationCenterDelegate (flutter#9864) c2e8289 Add GradientRadial paintStyle implementation (flutter#12081) c3eea0a Don't quote generic font families (flutter#12080) c2b3d88 Roll src/third_party/skia 28d40b2e7ade..c2d84bfa7421 (3 commits) (flutter#12082) a4de006 Remove ENABLE_BITCODE from Scenarios test app (flutter#11839) 6e017f0 Roll src/third_party/skia 4f2674da4bbc..28d40b2e7ade (4 commits) (flutter#12077) e911b05 Roll src/third_party/skia 627d15588f4d..4f2674da4bbc (1 commits) (flutter#12075) 359e663 Roll src/third_party/skia 6c3bd09ead0f..627d15588f4d (3 commits) (flutter#12074) 38d545e Improve Unicode handling on Windows (flutter#11899) 89efb4c Roll fuchsia/clang/linux-amd64 from VoYNW... to 2IT_b... (flutter#12072) dc8e30d Roll fuchsia/clang/mac-amd64 from XAazI... to H1Qjc... (flutter#12071) 8cdb3af Annotate nullability on FlutterEngine to make swift writing more ergonomic (flutter#11808) aa9aaa2 Roll src/third_party/skia f433336585ed..6c3bd09ead0f (1 commits) (flutter#12070) 075a61f Roll src/third_party/skia 69a426f5a427..f433336585ed (1 commits) (flutter#12068) a610505 option for --no-lto for fuchsia (flutter#12010) be39820 Roll src/third_party/skia 380561393385..69a426f5a427 (2 commits) (flutter#12067) 6bafbf9 Roll src/third_party/skia c30f1a936d84..380561393385 (3 commits) (flutter#12059) e2ba93d Roll src/third_party/dart ec7ec4ecf7..fb14babf59 (19 commits) 723a288 Roll fuchsia/clang/linux-amd64 from -mnHl... to VoYNW... (flutter#12058) 35875e0 Revert "Manage resource and onscreen contexts using separate IOSGLContext objects (flutter#11798)" (flutter#12055) a353f93 Manage resource and onscreen contexts using separate IOSGLContext objects (flutter#11798) c9ea4db [flutter_runner] Refactor our build rules to make them more inline with topaz. (flutter#12034) 50bdbd7 Document dependencies and remove support-v13 (flutter#11912) 0c6a538 Roll src/third_party/dart be66176534..ec7ec4ecf7 (37 commits) 37f81cd Roll src/third_party/skia 080d210e7acc..c30f1a936d84 (21 commits) (flutter#12031) ```
Changes since last roll: ``` 6e6de94 Roll dart to d9489622befb638c040975163cf9b8eba2ff057b. (#12255) 5c86111 [glfw/windows] Stops keeping track of input models (#12234) 9c84659 Editable text fix (#12249) cce4b5b Roll src/third_party/dart e6887536aa..c74e68e501 (14 commits) 55c346a Roll fuchsia/sdk/core/linux-amd64 from vuG5q... to 6a4X4... (#12252) 6beba53 Started taking advantage of Skia's new copyTableData to avoid (#10154) 3c6383f Revert "Smooth out iOS irregular input events delivery (#11817)" (#12251) d6f0b64 pin and auto-install chrome version (#12228) 2698a0e Roll fuchsia/sdk/core/mac-amd64 from Ne2UA... to JVZ_i... (#12250) dfa9498 Enable platform view keyboard input on Android Q (#12085) bf91a8d Roll fuchsia/sdk/core/linux-amd64 from u7Q31... to vuG5q... (#12238) 58ecf52 Roll src/third_party/skia 7c47d41067d4..be194479d27f (4 commits) (#12237) c71580b Roll dart to e6887536aadc7fbd1990448989601cee0224958d. (#12235) cf1d156 Roll fuchsia/sdk/core/mac-amd64 from _nS67... to Ne2UA... (#12236) bbb1f12 Adjust iOS frame start times to match the platform info (#11802) 1de28d0 Roll src/third_party/skia 50f377e275c3..7c47d41067d4 (3 commits) (#12231) da84d59 Revert "Manage iOS contexts separately (#12078)" (#12233) 4ac0663 Manage iOS contexts separately (#12078) 28d7900 Roll src/third_party/skia 120e7d6766e4..50f377e275c3 (7 commits) (#12224) 5b94c8a Revert "Roll src/third_party/dart be66176534..ec7ec4ecf7 (37 commits)" (#12223) 988efe3 Do not generate kernel platform files on topaz tree (#12222) 6c46a17 Don't disable toString in release mode for dart:ui classes (#12204) 80b8ed8 Roll fuchsia/sdk/core/linux-amd64 from 7gDBN... to u7Q31... (#12221) 7a8caaa Roll src/third_party/skia d96ef09317d6..120e7d6766e4 (2 commits) (#12220) c8428ff Roll fuchsia/sdk/core/mac-amd64 from vDk46... to _nS67... (#12219) 2bdfb61 Namespace patched SDK names to not conflict with Topaz (#12218) ff1fcfb Roll src/third_party/dart ca7baa4013..4d5e15abde (29 commits) 2b78c59 Roll src/third_party/skia 14318c140949..d96ef09317d6 (2 commits) (#12216) d74ed76 Roll src/third_party/skia b23a4f9d9442..14318c140949 (2 commits) (#12215) c58c593 Roll src/third_party/skia 26ac0467cb4c..b23a4f9d9442 (2 commits) (#12214) 5e85403 Roll src/third_party/dart 7bbfd532de..ca7baa4013 (3 commits) e2cc04c Roll fuchsia/sdk/core/linux-amd64 from R1yqu... to 7gDBN... (#12212) 6fbfb45 Roll fuchsia/sdk/core/mac-amd64 from spUG2... to vDk46... (#12210) 96443e2 Roll buildroot and Fuchsia toolchain and unblock the Fuchsia/Linux autoroller manually. (#12209) 34cf4f7 Roll src/third_party/skia 4fe30e15c06c..26ac0467cb4c (2 commits) (#12207) 92d42c0 Only build the x64 variant of Fuchsia on the try-jobs. (#12206) e174b4b Don't load Roboto by default (#12205) efb32a6 Roll src/third_party/dart 300c3333d1..7bbfd532de (5 commits) 5566be1 Roll src/third_party/skia 66d8006c2bb1..4fe30e15c06c (11 commits) (#12202) e9c9984 add a convenience CLI tool for building and testing web engine (#12197) bfa43e1 [flutter_runner] Generate symbols for the Dart VM profiler (#12048) 954f198 Add custom test plugin that supports screenshot tests (#12079) d8379f9 Move the Fuchsia tryjob into a its own step and disable LTO. (#12190) c12ac24 Roll src/third_party/dart 62f78a7abb..300c3333d1 (6 commits) cab3a39 Roll src/third_party/skia b88894c8811b..66d8006c2bb1 (5 commits) (#12178) 2592d6e [flutter_runner] Port the accessibility bridge from Topaz (#12054) b569e8c Smooth out iOS irregular input events delivery (#11817) dea813d Roll src/third_party/dart ccb6ba948b..62f78a7abb (3 commits) 2438798 Make ImageShader implement Shader for web ui (#12161) c31583a Roll src/third_party/dart 2e8d912848..ccb6ba948b (30 commits) 4542886 Roll src/third_party/skia 9e5c47936b17..b88894c8811b (3 commits) (#12151) 548998f Roll src/third_party/skia 1bf30ce852e0..9e5c47936b17 (2 commits) (#12129) f1490a2 Roll src/third_party/skia 8cae1e95a23b..1bf30ce852e0 (2 commits) (#12106) 19b2d43 Roll fuchsia/clang/mac-amd64 from H1Qjc... to HfPKR... (#12088) d816755 Don't launch the observatory by default on each embedder unit-test invocation. (#12087) 39c8067 Roll src/third_party/skia c2d84bfa7421..8cae1e95a23b (4 commits) (#12086) b19e75a Roll src/third_party/dart fb14babf59..2e8d912848 (65 commits) 03e773a Guard availability of user notification related methods to iOS 10.0 (#12084) 9c00c26 Add capability to add AppDelegate as UNUserNotificationCenterDelegate (#9864) c2e8289 Add GradientRadial paintStyle implementation (#12081) c3eea0a Don't quote generic font families (#12080) c2b3d88 Roll src/third_party/skia 28d40b2e7ade..c2d84bfa7421 (3 commits) (#12082) a4de006 Remove ENABLE_BITCODE from Scenarios test app (#11839) 6e017f0 Roll src/third_party/skia 4f2674da4bbc..28d40b2e7ade (4 commits) (#12077) e911b05 Roll src/third_party/skia 627d15588f4d..4f2674da4bbc (1 commits) (#12075) 359e663 Roll src/third_party/skia 6c3bd09ead0f..627d15588f4d (3 commits) (#12074) 38d545e Improve Unicode handling on Windows (#11899) 89efb4c Roll fuchsia/clang/linux-amd64 from VoYNW... to 2IT_b... (#12072) dc8e30d Roll fuchsia/clang/mac-amd64 from XAazI... to H1Qjc... (#12071) 8cdb3af Annotate nullability on FlutterEngine to make swift writing more ergonomic (#11808) aa9aaa2 Roll src/third_party/skia f433336585ed..6c3bd09ead0f (1 commits) (#12070) 075a61f Roll src/third_party/skia 69a426f5a427..f433336585ed (1 commits) (#12068) a610505 option for --no-lto for fuchsia (#12010) be39820 Roll src/third_party/skia 380561393385..69a426f5a427 (2 commits) (#12067) 6bafbf9 Roll src/third_party/skia c30f1a936d84..380561393385 (3 commits) (#12059) e2ba93d Roll src/third_party/dart ec7ec4ecf7..fb14babf59 (19 commits) 723a288 Roll fuchsia/clang/linux-amd64 from -mnHl... to VoYNW... (#12058) 35875e0 Revert "Manage resource and onscreen contexts using separate IOSGLContext objects (#11798)" (#12055) a353f93 Manage resource and onscreen contexts using separate IOSGLContext objects (#11798) c9ea4db [flutter_runner] Refactor our build rules to make them more inline with topaz. (#12034) 50bdbd7 Document dependencies and remove support-v13 (#11912) 0c6a538 Roll src/third_party/dart be66176534..ec7ec4ecf7 (37 commits) 37f81cd Roll src/third_party/skia 080d210e7acc..c30f1a936d84 (21 commits) (#12031) ```
1b63444 Revert "Started taking advantage of Skia's new copyTableData to avoid (#10154)" (#12263) 0897b50 Roll fuchsia/sdk/core/linux-amd64 from 6a4X4... to Xfeuz... (#12261) 186014c Roll src/third_party/skia be194479d27f..043dba039e0d (23 commits) (#12262) 4debdda Roll fuchsia/sdk/core/mac-amd64 from JVZ_i... to gVBCH... (#12260) 9e7bd05 Roll src/third_party/dart d9489622be..a554c8be6b (10 commits) 850d80c Revert "Add some AppLifecycleTests (#11890)" (#12264) 46ff053 Add some AppLifecycleTests (#11890) ca4c3f6 Add an initial macOS version of FlutterAppDelegate (#12230) 6e6de94 Roll dart to d9489622befb638c040975163cf9b8eba2ff057b. (#12255) 5c86111 [glfw/windows] Stops keeping track of input models (#12234) 9c84659 Editable text fix (#12249) cce4b5b Roll src/third_party/dart e6887536aa..c74e68e501 (14 commits) 55c346a Roll fuchsia/sdk/core/linux-amd64 from vuG5q... to 6a4X4... (#12252) 6beba53 Started taking advantage of Skia's new copyTableData to avoid (#10154) 3c6383f Revert "Smooth out iOS irregular input events delivery (#11817)" (#12251) d6f0b64 pin and auto-install chrome version (#12228) 2698a0e Roll fuchsia/sdk/core/mac-amd64 from Ne2UA... to JVZ_i... (#12250) dfa9498 Enable platform view keyboard input on Android Q (#12085) bf91a8d Roll fuchsia/sdk/core/linux-amd64 from u7Q31... to vuG5q... (#12238) 58ecf52 Roll src/third_party/skia 7c47d41067d4..be194479d27f (4 commits) (#12237) c71580b Roll dart to e6887536aadc7fbd1990448989601cee0224958d. (#12235) cf1d156 Roll fuchsia/sdk/core/mac-amd64 from _nS67... to Ne2UA... (#12236) bbb1f12 Adjust iOS frame start times to match the platform info (#11802) 1de28d0 Roll src/third_party/skia 50f377e275c3..7c47d41067d4 (3 commits) (#12231) da84d59 Revert "Manage iOS contexts separately (#12078)" (#12233) 4ac0663 Manage iOS contexts separately (#12078) 28d7900 Roll src/third_party/skia 120e7d6766e4..50f377e275c3 (7 commits) (#12224) 5b94c8a Revert "Roll src/third_party/dart be66176534..ec7ec4ecf7 (37 commits)" (#12223) 988efe3 Do not generate kernel platform files on topaz tree (#12222) 6c46a17 Don't disable toString in release mode for dart:ui classes (#12204) 80b8ed8 Roll fuchsia/sdk/core/linux-amd64 from 7gDBN... to u7Q31... (#12221) 7a8caaa Roll src/third_party/skia d96ef09317d6..120e7d6766e4 (2 commits) (#12220) c8428ff Roll fuchsia/sdk/core/mac-amd64 from vDk46... to _nS67... (#12219) 2bdfb61 Namespace patched SDK names to not conflict with Topaz (#12218) ff1fcfb Roll src/third_party/dart ca7baa4013..4d5e15abde (29 commits) 2b78c59 Roll src/third_party/skia 14318c140949..d96ef09317d6 (2 commits) (#12216) d74ed76 Roll src/third_party/skia b23a4f9d9442..14318c140949 (2 commits) (#12215) c58c593 Roll src/third_party/skia 26ac0467cb4c..b23a4f9d9442 (2 commits) (#12214) 5e85403 Roll src/third_party/dart 7bbfd532de..ca7baa4013 (3 commits) e2cc04c Roll fuchsia/sdk/core/linux-amd64 from R1yqu... to 7gDBN... (#12212) 6fbfb45 Roll fuchsia/sdk/core/mac-amd64 from spUG2... to vDk46... (#12210) 96443e2 Roll buildroot and Fuchsia toolchain and unblock the Fuchsia/Linux autoroller manually. (#12209) 34cf4f7 Roll src/third_party/skia 4fe30e15c06c..26ac0467cb4c (2 commits) (#12207) 92d42c0 Only build the x64 variant of Fuchsia on the try-jobs. (#12206) e174b4b Don't load Roboto by default (#12205) efb32a6 Roll src/third_party/dart 300c3333d1..7bbfd532de (5 commits) 5566be1 Roll src/third_party/skia 66d8006c2bb1..4fe30e15c06c (11 commits) (#12202) e9c9984 add a convenience CLI tool for building and testing web engine (#12197) bfa43e1 [flutter_runner] Generate symbols for the Dart VM profiler (#12048) 954f198 Add custom test plugin that supports screenshot tests (#12079) d8379f9 Move the Fuchsia tryjob into a its own step and disable LTO. (#12190) c12ac24 Roll src/third_party/dart 62f78a7abb..300c3333d1 (6 commits) cab3a39 Roll src/third_party/skia b88894c8811b..66d8006c2bb1 (5 commits) (#12178) 2592d6e [flutter_runner] Port the accessibility bridge from Topaz (#12054) b569e8c Smooth out iOS irregular input events delivery (#11817) dea813d Roll src/third_party/dart ccb6ba948b..62f78a7abb (3 commits) 2438798 Make ImageShader implement Shader for web ui (#12161) c31583a Roll src/third_party/dart 2e8d912848..ccb6ba948b (30 commits) 4542886 Roll src/third_party/skia 9e5c47936b17..b88894c8811b (3 commits) (#12151) 548998f Roll src/third_party/skia 1bf30ce852e0..9e5c47936b17 (2 commits) (#12129) f1490a2 Roll src/third_party/skia 8cae1e95a23b..1bf30ce852e0 (2 commits) (#12106) 19b2d43 Roll fuchsia/clang/mac-amd64 from H1Qjc... to HfPKR... (#12088) d816755 Don't launch the observatory by default on each embedder unit-test invocation. (#12087) 39c8067 Roll src/third_party/skia c2d84bfa7421..8cae1e95a23b (4 commits) (#12086) b19e75a Roll src/third_party/dart fb14babf59..2e8d912848 (65 commits) 03e773a Guard availability of user notification related methods to iOS 10.0 (#12084) 9c00c26 Add capability to add AppDelegate as UNUserNotificationCenterDelegate (#9864) c2e8289 Add GradientRadial paintStyle implementation (#12081) c3eea0a Don't quote generic font families (#12080) c2b3d88 Roll src/third_party/skia 28d40b2e7ade..c2d84bfa7421 (3 commits) (#12082) a4de006 Remove ENABLE_BITCODE from Scenarios test app (#11839) 6e017f0 Roll src/third_party/skia 4f2674da4bbc..28d40b2e7ade (4 commits) (#12077) e911b05 Roll src/third_party/skia 627d15588f4d..4f2674da4bbc (1 commits) (#12075) 359e663 Roll src/third_party/skia 6c3bd09ead0f..627d15588f4d (3 commits) (#12074) 38d545e Improve Unicode handling on Windows (#11899) 89efb4c Roll fuchsia/clang/linux-amd64 from VoYNW... to 2IT_b... (#12072) dc8e30d Roll fuchsia/clang/mac-amd64 from XAazI... to H1Qjc... (#12071) 8cdb3af Annotate nullability on FlutterEngine to make swift writing more ergonomic (#11808) aa9aaa2 Roll src/third_party/skia f433336585ed..6c3bd09ead0f (1 commits) (#12070) 075a61f Roll src/third_party/skia 69a426f5a427..f433336585ed (1 commits) (#12068) a610505 option for --no-lto for fuchsia (#12010) be39820 Roll src/third_party/skia 380561393385..69a426f5a427 (2 commits) (#12067) 6bafbf9 Roll src/third_party/skia c30f1a936d84..380561393385 (3 commits) (#12059) e2ba93d Roll src/third_party/dart ec7ec4ecf7..fb14babf59 (19 commits) 723a288 Roll fuchsia/clang/linux-amd64 from -mnHl... to VoYNW... (#12058) 35875e0 Revert "Manage resource and onscreen contexts using separate IOSGLContext objects (#11798)" (#12055) a353f93 Manage resource and onscreen contexts using separate IOSGLContext objects (#11798) c9ea4db [flutter_runner] Refactor our build rules to make them more inline with topaz. (#12034) 50bdbd7 Document dependencies and remove support-v13 (#11912) 0c6a538 Roll src/third_party/dart be66176534..ec7ec4ecf7 (37 commits) 37f81cd Roll src/third_party/skia 080d210e7acc..c30f1a936d84 (21 commits) (#12031)
Changes since last roll: ``` 6e6de94 Roll dart to d9489622befb638c040975163cf9b8eba2ff057b. (flutter#12255) 5c86111 [glfw/windows] Stops keeping track of input models (flutter#12234) 9c84659 Editable text fix (flutter#12249) cce4b5b Roll src/third_party/dart e6887536aa..c74e68e501 (14 commits) 55c346a Roll fuchsia/sdk/core/linux-amd64 from vuG5q... to 6a4X4... (flutter#12252) 6beba53 Started taking advantage of Skia's new copyTableData to avoid (flutter#10154) 3c6383f Revert "Smooth out iOS irregular input events delivery (flutter#11817)" (flutter#12251) d6f0b64 pin and auto-install chrome version (flutter#12228) 2698a0e Roll fuchsia/sdk/core/mac-amd64 from Ne2UA... to JVZ_i... (flutter#12250) dfa9498 Enable platform view keyboard input on Android Q (flutter#12085) bf91a8d Roll fuchsia/sdk/core/linux-amd64 from u7Q31... to vuG5q... (flutter#12238) 58ecf52 Roll src/third_party/skia 7c47d41067d4..be194479d27f (4 commits) (flutter#12237) c71580b Roll dart to e6887536aadc7fbd1990448989601cee0224958d. (flutter#12235) cf1d156 Roll fuchsia/sdk/core/mac-amd64 from _nS67... to Ne2UA... (flutter#12236) bbb1f12 Adjust iOS frame start times to match the platform info (flutter#11802) 1de28d0 Roll src/third_party/skia 50f377e275c3..7c47d41067d4 (3 commits) (flutter#12231) da84d59 Revert "Manage iOS contexts separately (flutter#12078)" (flutter#12233) 4ac0663 Manage iOS contexts separately (flutter#12078) 28d7900 Roll src/third_party/skia 120e7d6766e4..50f377e275c3 (7 commits) (flutter#12224) 5b94c8a Revert "Roll src/third_party/dart be66176534..ec7ec4ecf7 (37 commits)" (flutter#12223) 988efe3 Do not generate kernel platform files on topaz tree (flutter#12222) 6c46a17 Don't disable toString in release mode for dart:ui classes (flutter#12204) 80b8ed8 Roll fuchsia/sdk/core/linux-amd64 from 7gDBN... to u7Q31... (flutter#12221) 7a8caaa Roll src/third_party/skia d96ef09317d6..120e7d6766e4 (2 commits) (flutter#12220) c8428ff Roll fuchsia/sdk/core/mac-amd64 from vDk46... to _nS67... (flutter#12219) 2bdfb61 Namespace patched SDK names to not conflict with Topaz (flutter#12218) ff1fcfb Roll src/third_party/dart ca7baa4013..4d5e15abde (29 commits) 2b78c59 Roll src/third_party/skia 14318c140949..d96ef09317d6 (2 commits) (flutter#12216) d74ed76 Roll src/third_party/skia b23a4f9d9442..14318c140949 (2 commits) (flutter#12215) c58c593 Roll src/third_party/skia 26ac0467cb4c..b23a4f9d9442 (2 commits) (flutter#12214) 5e85403 Roll src/third_party/dart 7bbfd532de..ca7baa4013 (3 commits) e2cc04c Roll fuchsia/sdk/core/linux-amd64 from R1yqu... to 7gDBN... (flutter#12212) 6fbfb45 Roll fuchsia/sdk/core/mac-amd64 from spUG2... to vDk46... (flutter#12210) 96443e2 Roll buildroot and Fuchsia toolchain and unblock the Fuchsia/Linux autoroller manually. (flutter#12209) 34cf4f7 Roll src/third_party/skia 4fe30e15c06c..26ac0467cb4c (2 commits) (flutter#12207) 92d42c0 Only build the x64 variant of Fuchsia on the try-jobs. (flutter#12206) e174b4b Don't load Roboto by default (flutter#12205) efb32a6 Roll src/third_party/dart 300c3333d1..7bbfd532de (5 commits) 5566be1 Roll src/third_party/skia 66d8006c2bb1..4fe30e15c06c (11 commits) (flutter#12202) e9c9984 add a convenience CLI tool for building and testing web engine (flutter#12197) bfa43e1 [flutter_runner] Generate symbols for the Dart VM profiler (flutter#12048) 954f198 Add custom test plugin that supports screenshot tests (flutter#12079) d8379f9 Move the Fuchsia tryjob into a its own step and disable LTO. (flutter#12190) c12ac24 Roll src/third_party/dart 62f78a7abb..300c3333d1 (6 commits) cab3a39 Roll src/third_party/skia b88894c8811b..66d8006c2bb1 (5 commits) (flutter#12178) 2592d6e [flutter_runner] Port the accessibility bridge from Topaz (flutter#12054) b569e8c Smooth out iOS irregular input events delivery (flutter#11817) dea813d Roll src/third_party/dart ccb6ba948b..62f78a7abb (3 commits) 2438798 Make ImageShader implement Shader for web ui (flutter#12161) c31583a Roll src/third_party/dart 2e8d912848..ccb6ba948b (30 commits) 4542886 Roll src/third_party/skia 9e5c47936b17..b88894c8811b (3 commits) (flutter#12151) 548998f Roll src/third_party/skia 1bf30ce852e0..9e5c47936b17 (2 commits) (flutter#12129) f1490a2 Roll src/third_party/skia 8cae1e95a23b..1bf30ce852e0 (2 commits) (flutter#12106) 19b2d43 Roll fuchsia/clang/mac-amd64 from H1Qjc... to HfPKR... (flutter#12088) d816755 Don't launch the observatory by default on each embedder unit-test invocation. (flutter#12087) 39c8067 Roll src/third_party/skia c2d84bfa7421..8cae1e95a23b (4 commits) (flutter#12086) b19e75a Roll src/third_party/dart fb14babf59..2e8d912848 (65 commits) 03e773a Guard availability of user notification related methods to iOS 10.0 (flutter#12084) 9c00c26 Add capability to add AppDelegate as UNUserNotificationCenterDelegate (flutter#9864) c2e8289 Add GradientRadial paintStyle implementation (flutter#12081) c3eea0a Don't quote generic font families (flutter#12080) c2b3d88 Roll src/third_party/skia 28d40b2e7ade..c2d84bfa7421 (3 commits) (flutter#12082) a4de006 Remove ENABLE_BITCODE from Scenarios test app (flutter#11839) 6e017f0 Roll src/third_party/skia 4f2674da4bbc..28d40b2e7ade (4 commits) (flutter#12077) e911b05 Roll src/third_party/skia 627d15588f4d..4f2674da4bbc (1 commits) (flutter#12075) 359e663 Roll src/third_party/skia 6c3bd09ead0f..627d15588f4d (3 commits) (flutter#12074) 38d545e Improve Unicode handling on Windows (flutter#11899) 89efb4c Roll fuchsia/clang/linux-amd64 from VoYNW... to 2IT_b... (flutter#12072) dc8e30d Roll fuchsia/clang/mac-amd64 from XAazI... to H1Qjc... (flutter#12071) 8cdb3af Annotate nullability on FlutterEngine to make swift writing more ergonomic (flutter#11808) aa9aaa2 Roll src/third_party/skia f433336585ed..6c3bd09ead0f (1 commits) (flutter#12070) 075a61f Roll src/third_party/skia 69a426f5a427..f433336585ed (1 commits) (flutter#12068) a610505 option for --no-lto for fuchsia (flutter#12010) be39820 Roll src/third_party/skia 380561393385..69a426f5a427 (2 commits) (flutter#12067) 6bafbf9 Roll src/third_party/skia c30f1a936d84..380561393385 (3 commits) (flutter#12059) e2ba93d Roll src/third_party/dart ec7ec4ecf7..fb14babf59 (19 commits) 723a288 Roll fuchsia/clang/linux-amd64 from -mnHl... to VoYNW... (flutter#12058) 35875e0 Revert "Manage resource and onscreen contexts using separate IOSGLContext objects (flutter#11798)" (flutter#12055) a353f93 Manage resource and onscreen contexts using separate IOSGLContext objects (flutter#11798) c9ea4db [flutter_runner] Refactor our build rules to make them more inline with topaz. (flutter#12034) 50bdbd7 Document dependencies and remove support-v13 (flutter#11912) 0c6a538 Roll src/third_party/dart be66176534..ec7ec4ecf7 (37 commits) 37f81cd Roll src/third_party/skia 080d210e7acc..c30f1a936d84 (21 commits) (flutter#12031) ```
1b63444 Revert "Started taking advantage of Skia's new copyTableData to avoid (flutter#10154)" (flutter#12263) 0897b50 Roll fuchsia/sdk/core/linux-amd64 from 6a4X4... to Xfeuz... (flutter#12261) 186014c Roll src/third_party/skia be194479d27f..043dba039e0d (23 commits) (flutter#12262) 4debdda Roll fuchsia/sdk/core/mac-amd64 from JVZ_i... to gVBCH... (flutter#12260) 9e7bd05 Roll src/third_party/dart d9489622be..a554c8be6b (10 commits) 850d80c Revert "Add some AppLifecycleTests (flutter#11890)" (flutter#12264) 46ff053 Add some AppLifecycleTests (flutter#11890) ca4c3f6 Add an initial macOS version of FlutterAppDelegate (flutter#12230) 6e6de94 Roll dart to d9489622befb638c040975163cf9b8eba2ff057b. (flutter#12255) 5c86111 [glfw/windows] Stops keeping track of input models (flutter#12234) 9c84659 Editable text fix (flutter#12249) cce4b5b Roll src/third_party/dart e6887536aa..c74e68e501 (14 commits) 55c346a Roll fuchsia/sdk/core/linux-amd64 from vuG5q... to 6a4X4... (flutter#12252) 6beba53 Started taking advantage of Skia's new copyTableData to avoid (flutter#10154) 3c6383f Revert "Smooth out iOS irregular input events delivery (flutter#11817)" (flutter#12251) d6f0b64 pin and auto-install chrome version (flutter#12228) 2698a0e Roll fuchsia/sdk/core/mac-amd64 from Ne2UA... to JVZ_i... (flutter#12250) dfa9498 Enable platform view keyboard input on Android Q (flutter#12085) bf91a8d Roll fuchsia/sdk/core/linux-amd64 from u7Q31... to vuG5q... (flutter#12238) 58ecf52 Roll src/third_party/skia 7c47d41067d4..be194479d27f (4 commits) (flutter#12237) c71580b Roll dart to e6887536aadc7fbd1990448989601cee0224958d. (flutter#12235) cf1d156 Roll fuchsia/sdk/core/mac-amd64 from _nS67... to Ne2UA... (flutter#12236) bbb1f12 Adjust iOS frame start times to match the platform info (flutter#11802) 1de28d0 Roll src/third_party/skia 50f377e275c3..7c47d41067d4 (3 commits) (flutter#12231) da84d59 Revert "Manage iOS contexts separately (flutter#12078)" (flutter#12233) 4ac0663 Manage iOS contexts separately (flutter#12078) 28d7900 Roll src/third_party/skia 120e7d6766e4..50f377e275c3 (7 commits) (flutter#12224) 5b94c8a Revert "Roll src/third_party/dart be66176534..ec7ec4ecf7 (37 commits)" (flutter#12223) 988efe3 Do not generate kernel platform files on topaz tree (flutter#12222) 6c46a17 Don't disable toString in release mode for dart:ui classes (flutter#12204) 80b8ed8 Roll fuchsia/sdk/core/linux-amd64 from 7gDBN... to u7Q31... (flutter#12221) 7a8caaa Roll src/third_party/skia d96ef09317d6..120e7d6766e4 (2 commits) (flutter#12220) c8428ff Roll fuchsia/sdk/core/mac-amd64 from vDk46... to _nS67... (flutter#12219) 2bdfb61 Namespace patched SDK names to not conflict with Topaz (flutter#12218) ff1fcfb Roll src/third_party/dart ca7baa4013..4d5e15abde (29 commits) 2b78c59 Roll src/third_party/skia 14318c140949..d96ef09317d6 (2 commits) (flutter#12216) d74ed76 Roll src/third_party/skia b23a4f9d9442..14318c140949 (2 commits) (flutter#12215) c58c593 Roll src/third_party/skia 26ac0467cb4c..b23a4f9d9442 (2 commits) (flutter#12214) 5e85403 Roll src/third_party/dart 7bbfd532de..ca7baa4013 (3 commits) e2cc04c Roll fuchsia/sdk/core/linux-amd64 from R1yqu... to 7gDBN... (flutter#12212) 6fbfb45 Roll fuchsia/sdk/core/mac-amd64 from spUG2... to vDk46... (flutter#12210) 96443e2 Roll buildroot and Fuchsia toolchain and unblock the Fuchsia/Linux autoroller manually. (flutter#12209) 34cf4f7 Roll src/third_party/skia 4fe30e15c06c..26ac0467cb4c (2 commits) (flutter#12207) 92d42c0 Only build the x64 variant of Fuchsia on the try-jobs. (flutter#12206) e174b4b Don't load Roboto by default (flutter#12205) efb32a6 Roll src/third_party/dart 300c3333d1..7bbfd532de (5 commits) 5566be1 Roll src/third_party/skia 66d8006c2bb1..4fe30e15c06c (11 commits) (flutter#12202) e9c9984 add a convenience CLI tool for building and testing web engine (flutter#12197) bfa43e1 [flutter_runner] Generate symbols for the Dart VM profiler (flutter#12048) 954f198 Add custom test plugin that supports screenshot tests (flutter#12079) d8379f9 Move the Fuchsia tryjob into a its own step and disable LTO. (flutter#12190) c12ac24 Roll src/third_party/dart 62f78a7abb..300c3333d1 (6 commits) cab3a39 Roll src/third_party/skia b88894c8811b..66d8006c2bb1 (5 commits) (flutter#12178) 2592d6e [flutter_runner] Port the accessibility bridge from Topaz (flutter#12054) b569e8c Smooth out iOS irregular input events delivery (flutter#11817) dea813d Roll src/third_party/dart ccb6ba948b..62f78a7abb (3 commits) 2438798 Make ImageShader implement Shader for web ui (flutter#12161) c31583a Roll src/third_party/dart 2e8d912848..ccb6ba948b (30 commits) 4542886 Roll src/third_party/skia 9e5c47936b17..b88894c8811b (3 commits) (flutter#12151) 548998f Roll src/third_party/skia 1bf30ce852e0..9e5c47936b17 (2 commits) (flutter#12129) f1490a2 Roll src/third_party/skia 8cae1e95a23b..1bf30ce852e0 (2 commits) (flutter#12106) 19b2d43 Roll fuchsia/clang/mac-amd64 from H1Qjc... to HfPKR... (flutter#12088) d816755 Don't launch the observatory by default on each embedder unit-test invocation. (flutter#12087) 39c8067 Roll src/third_party/skia c2d84bfa7421..8cae1e95a23b (4 commits) (flutter#12086) b19e75a Roll src/third_party/dart fb14babf59..2e8d912848 (65 commits) 03e773a Guard availability of user notification related methods to iOS 10.0 (flutter#12084) 9c00c26 Add capability to add AppDelegate as UNUserNotificationCenterDelegate (flutter#9864) c2e8289 Add GradientRadial paintStyle implementation (flutter#12081) c3eea0a Don't quote generic font families (flutter#12080) c2b3d88 Roll src/third_party/skia 28d40b2e7ade..c2d84bfa7421 (3 commits) (flutter#12082) a4de006 Remove ENABLE_BITCODE from Scenarios test app (flutter#11839) 6e017f0 Roll src/third_party/skia 4f2674da4bbc..28d40b2e7ade (4 commits) (flutter#12077) e911b05 Roll src/third_party/skia 627d15588f4d..4f2674da4bbc (1 commits) (flutter#12075) 359e663 Roll src/third_party/skia 6c3bd09ead0f..627d15588f4d (3 commits) (flutter#12074) 38d545e Improve Unicode handling on Windows (flutter#11899) 89efb4c Roll fuchsia/clang/linux-amd64 from VoYNW... to 2IT_b... (flutter#12072) dc8e30d Roll fuchsia/clang/mac-amd64 from XAazI... to H1Qjc... (flutter#12071) 8cdb3af Annotate nullability on FlutterEngine to make swift writing more ergonomic (flutter#11808) aa9aaa2 Roll src/third_party/skia f433336585ed..6c3bd09ead0f (1 commits) (flutter#12070) 075a61f Roll src/third_party/skia 69a426f5a427..f433336585ed (1 commits) (flutter#12068) a610505 option for --no-lto for fuchsia (flutter#12010) be39820 Roll src/third_party/skia 380561393385..69a426f5a427 (2 commits) (flutter#12067) 6bafbf9 Roll src/third_party/skia c30f1a936d84..380561393385 (3 commits) (flutter#12059) e2ba93d Roll src/third_party/dart ec7ec4ecf7..fb14babf59 (19 commits) 723a288 Roll fuchsia/clang/linux-amd64 from -mnHl... to VoYNW... (flutter#12058) 35875e0 Revert "Manage resource and onscreen contexts using separate IOSGLContext objects (flutter#11798)" (flutter#12055) a353f93 Manage resource and onscreen contexts using separate IOSGLContext objects (flutter#11798) c9ea4db [flutter_runner] Refactor our build rules to make them more inline with topaz. (flutter#12034) 50bdbd7 Document dependencies and remove support-v13 (flutter#11912) 0c6a538 Roll src/third_party/dart be66176534..ec7ec4ecf7 (37 commits) 37f81cd Roll src/third_party/skia 080d210e7acc..c30f1a936d84 (21 commits) (flutter#12031)
Fixes #12247
This fixes the regression by trading the lazy evaluated
_LocalizedThemeDatawrapper, which introduces a level of indirection and makes theThemeDatatype polymorphic (its methods cannot be inlined or statically dispatched), for an eagerly evaluatedThemeDatacopy, which is memoized and is monomorphic./cc @Hixie