[pull] master from flutter:master#3
Merged
Conversation
GOODNIGHT, SWEET PRINCE. No semantic change, baby. Follow-up to #186556 (and its tracking issue #186554), where I deprecated one of the worst landmines in Impeller by absorbing OpenGL ES's Y-axis difference into the vertex stage and pinned `Texture::GetYCoordScale()` to 1.0. Every call site is now passing 1.0 and every `IPRemapCoords` call reduces to identity, so this PR removes the cruft. :) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [ ] All existing and new tests are passing. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
Removes the Material import from the sliver tree rendering test by replacing the MaterialApp wrapper with lower-layer test scaffolding that preserves the fallback text metrics. Also removes the test from the rendering cross-import allowlist. Part of #177412 Refs #177028 Tests: - `bin/cache/dart-sdk/bin/dart --enable-asserts dev/bots/check_tests_cross_imports.dart` - `bin/cache/dart-sdk/bin/dart analyze packages/flutter/test/rendering/sliver_tree_test.dart dev/bots/check_tests_cross_imports.dart` - `./bin/flutter analyze --no-pub packages/flutter/test/rendering/sliver_tree_test.dart dev/bots/check_tests_cross_imports.dart` - `./bin/flutter test --no-pub packages/flutter/test/rendering/sliver_tree_test.dart` - `git diff --check`
…... (#187279) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter Please CC codefu@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
…ynamic boxing churn under Wasm (#186978) Avoids heap allocations and GC sweeps caused by dynamic boxing of primitive integers (struct allocations) inside high-frequency paragraph layout, segmenter, and line-breaking loops. 1. **Optimized Local Typed List Copy Loops**: - Replaced generic closure parameters and generic `List<int>.generate` copy loops inside `paragraph.dart` and `path.dart` with specialized local pointer extensions (`toUint8List` / `toUint32List`). - Standard FFI `Pointer.asTypedList` is not supported at runtime under `dart2wasm` in the Web Engine's external memory layout (since FFI allocations are mapped to Skwasm's C++ heap rather than the standard Dart heap, leaving the global FFI helper null at runtime). - While these custom extensions still perform a memory copy step, they allocate concrete, specialized typed arrays (`Uint8List` / `Uint32List`) and copy elements using unboxed, register-level pointer lookups. - Loops are structured to iterate backwards (`length - 1` down to `0`). Compiling this to WebAssembly translates the loop condition to a direct comparison against a constant zero register (`i64.ge_s` to `i64.const 0`), eliminating a register load instruction (`local.get $length`) inside the high-frequency loop body on every iteration. - Under `dart2wasm`, the copy loops are fully inlined and compile to raw WebAssembly array loads and stores (`i32.load` / `i32.store`) with **0 generic closure callbacks** and **0 dynamic integer boxing** ($BoxedInt heap allocations). - For signed `Pointer<Int8>` buffers (such as in `path.dart`'s `toSvgString`), the copy block explicitly masks values with `& 0xFF` to convert them to positive unsigned bytes ($0$ to $255$), preventing runtime `FormatException` issues under `utf8.decode` at zero memory overhead. 2. **Pattern-Based Switch Expression Comparisons**: - Replaced generic `Set<int>` lookup collections (`_kNewlines`, `_kSpaces`) inside `breakLinesUsingV8BreakIterator` with pattern-matching switch expressions (`_isNewline`, `_isSpace`). - Under `dart2wasm`, this completely eliminates the dynamic boxing of checked primitive `codeUnit` integers into heap-allocated `$BoxedInt` wrappers (originally required for generic `Set.contains` lookup parameters). - Because the Unicode newline case numbers are sparse, the compiler lowers the switch statement to inline, register-level direct comparisons and conditional jumps (`i64.eq` and `br_if`) rather than an indirect jump table (`br_table`), avoiding binary size bloat while executing entirely on CPU registers with **0 heap allocations**. Fixes #186972
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )