Some components in the Flutter engine were derived from the forked blink codebase. While the forked components have either been removed or rewritten, the use of the blink namespace has mostly (and inconsistently) remained. This renames the blink namesapce to flutter for consistency. There are no functional changes in this patch.
* Fixed service isolate not being initialized correctly due to bad name
The name for the service isolate was being set to the empty string,
causing the microtask loop to not be run on the service isolate leading
to the service hanging on the first 'await'. See
https://dart-review.googlesource.com/c/sdk/+/97107 for revert due to
this issue.
* Removed unnecessary params from DartCreateAndStartServiceIsolate
The shell was already designed to cleanly shut down the VM but it couldnt
earlier as |Dart_Initialize| could never be called after a |Dart_Cleanup|. This
meant that shutting down an engine instance could not shut down the VM to save
memory because newly created engines in the process after that point couldn't
restart the VM. There can only be one VM running in a process at a time.
This patch separate the previous DartVM object into one that references a
running instance of the DartVM and a set of immutable dependencies that
components can reference even as the VM is shutting down.
Unit tests have been added to assert that non-overlapping engine launches use
difference VM instances.
This reverts commit 25559ed0779604d56c47c5d2341ffd16b137cd10.
Reason for revert: broken in AOT mode.
@pragma('vm:entry-point') placed on a function only instructs
the compiler to retain the function itself, but does not tell
compiler to generate and retain tear-off for this function.
In this PR _runMainZoned was marked as an entry-point but C++
code was trying to tear it off and use a closure, instead of
invoking it directly, which is not supported.
* Set up secondary isolates with all kernel buffers rather than just one buffer.
* Capture copy of the list
* Make sure child_isolate_preparer_ is initialized only once
TL;DR: Offscreen surface is created on the render thread and device to host
transfer performed there before task completion on the UI thread.
While attempting to snapshot layer trees, the engine was attempting to use the
IO thread context. The reasoning was that this would be safe to do because any
textures uploaded to the GPU as a result of async texture upload would have
originated from this context and hence the handles would be valid in either
context. As it turns out, while the handles are valid, Skia does not support
this use-case because cross-context images transfer ownership of the image from
one context to another. So, when we made the hop from the UI thread to the IO
thread (for snapshotting), if either the UI or GPU threads released the last
reference to the texture backed image, the image would be invalid. This led to
such images being absent from the layer tree snapshot.
Simply referencing the images as they are being used on the IO thread is not
sufficient because accessing images on one context after their ownership has
already been transferred to another is not safe behavior (from Skia's
perspective, the handles are still valid in the sharegroup).
To work around these issues, it was decided that an offscreen render target
would be created on the render thread. The color attachment of this render
target could then be transferred as a cross context image to the IO thread for
the device to host tranfer.
Again, this is currently not quite possible because the only way to create
cross context images is from encoded data. Till Skia exposes the functionality
to create cross-context images from textures in one context, we do a device to
host transfer on the GPU thread. The side effect of this is that this is now
part of the frame workload (image compression, which dominate the wall time,
is still done of the IO thread).
A minor side effect of this patch is that the GPU latch needs to be waited on
before the UI thread tasks can be completed before shell initialization.
* Roll Dart to version 7f9a9feae181573cca609fd1b8760d7992176699
This contains the following commits:
7f9a9feae1 [vm, service] Rename 'invoke' parameter 'receiverId' to 'targetId'.
fa3d8fa567 Don't check for the file presence in transitive sets when we are just creating it.
6f3de544ed [ VM / Hot Reload ] Fixed tests which were crashing periodically. Fixes issue #34599
e811b29788 [vm, gc] Restore growth policy when concurrent marking is not enabled.
0518b334ba Address comments
7c46a28505 Update convert class to mixin assist to remove "abstract"
06744c68b2 Pull reporting for unimplemented inherited members, and declared abstract members from ErrorVerifier.
45c7e4365c Update dartfix to apply changes to file rather than displaying them
9ad59bada2 [dartdevc] fix#34358, int to double conversion for literals
edddc0ba58 Generate source changes for converting class to mixin
2742a5d558 [Gardening] Update test status
d9de98e164 [VM] Delete some dead code in gen_snapshot.cc
51b8fc7bb0 AwaitExpression.precedence => 14
2390b3605f Create a package for shared diagnostics
629d76eb46 Simple dartfix that suggests class to be converted to mixins
8a2cfd8613 Implement InheritanceManager2.getMember() and use it in some places.
71eaf3209b Fix broken 'fasta testing sdk'.
d79f7493b3 Test that type parameters of typedefs are properly bounds checked.
b36f4fffc4 Allow multiple analyzer codes
82b3501c3c Fix supermixin handling in dart2js
c9b05d3f1f Allow super calls in mixin declarations
225b8d5075 Specialize Object properties in static type computation
4a58112a7c Move kernel_impact.dart from ssa/ to kernel/
aaf3b709e6 [release] Prepare changelog for 2.1.0-dev.6.0
e9c949372e Remove unused parts of J/K*Env classes
4659cb9480 Fully split JsToElementMap and KernelToElementMap
a617700b17 Removes code that has become redundant since 98a9adf.
7c54fab8a5 Adjust status files.
76470aca47 [VM] use coresnapshot when initializing an Isolate
* Address review comments.
- Switch core snapshot to Dart 2 and remove support for loading platform.dill.
- Remove support for loading script snapshots.
- Remove support for loading source.
- Remove settings and fix names to reflect the above.
- Remove support for loading the service isolate from source.
* Roll Dart to version 1be785ae2ddb1754a184cd638ab719e94d86b4e9
This rolls includes the following changes :
1be785ae2d Clean up some dead code
7b9fb893d2 [vm] Add a service method for 'invoke' as the dual to 'eval'.
099f1504fa Mention -O flag in CHANGELOG
79f69abace [vm/compiler] breakage fix: add missing break
96a1e9985f Fix the pkg bot
7818db20a7 Add analysis hint for invalid use of @visibleForTemplate code.
71d96019d1 [vm/compiler] Introduce 64-bit NEGATE - all archs.
5013a2ccc4 Remove spurious line.
ef2f777625 Mark some analyzer tests as being flaky
cf560fe17b Fix a couple of the tests failing on the analyzer with fasta parser bot
63c11693e6 [gardening] Fix language_2/type_variable_promotion_test.
d0f28884ff [VM] Fix expression evaluation implementation: Never register temporary/unused classes with the system.
e2a1807fc2 [gardening] Update status for io/compile_all_test in PRODUCT AOT mode
f7ff739448 Insert date of 2.0.0 release in Changelog
bcabad6014 [vm] Fix SIMARM64 build on Windows.
af02ccae83 [infra] Fix filesets for new vm-kernel-precomp builders
8e2f28e264 Update homebrew to drop the @2 tab and fix for 2.0
ba119d7292 [VM] Remove "$compiler == precompiler" sections from language_2_precompiler.status
f3a2c0e28f [release] Prepare changelog for 2.1.0-dev.0.0
88cba7d860 [vm/kernel/bytecode] Fix arguments descriptor for List._fromLiteral call in bytecode
bd45ec0c4b [vm, gc] Refactor PageSpace::CollectGarbage to ensure the safepoint and task count remain well-scoped even with early exits.
8195fd8c64 Repair dart2js/string_interpolation_test
a0b335ac6c Try no implicit casts in pkg/analyzer_cli.
3d25d3761b Update pub - leave packages directories alone
327db5e9ab [vm] Fix kernel_isolate use_field_guard flag for kbc
a1ca88f554 Resolve invocation arguments to parameters.
* Address source format error.
* Reland "Added IsolateNameServer functionality (#5410)"
This reverts commit c3976b3c7183f479717bffed3f640fb92afbd3dc.
* Fixed issue with isolate_name_server_test which caused test to timeout
* Disabled thread_annotations on Android as they aren't supported in the
NDK headers for std::mutex. Readded thread annotations to
IsolateNameServer.
* Added IsolateNameServer functionality, which allows for the association
of string names with isolate SendPort ids that can be used to establish
inter-isolate communications.
Eliminates support for running directly from sources or script snapshots. In
debug mode, we run from a kernel snapshot; in profile and release modes, we
link in AOT-compiled code.
Renames --dart-non-checked-mode to --disable-dart-asserts since checked mode
does not make sense in Dart 2.