-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
[vm/ffi] Struct and Union constructors fromTypedList #53418
Labels
area-vm
Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends.
library-ffi
P3
A lower priority bug or feature request
triaged
Issue has been triaged by sub team
type-enhancement
A request for a change that isn't a bug
Comments
dcharkes
added
area-vm
Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends.
library-ffi
labels
Sep 4, 2023
Somewhat related issue: |
This was referenced Nov 2, 2023
a-siva
added
P3
A lower priority bug or feature request
triaged
Issue has been triaged by sub team
labels
Nov 30, 2023
Possible API design: #45697 (comment) |
copybara-service bot
pushed a commit
that referenced
this issue
Jan 30, 2024
This reverts commit c2e15cf. Reason for revert: #54754 Version skew somewhere in the analyzer/dartdoc/flutter combination. We need to land the fix inside ffi_verifier.dart first, and then reland the API docs that trigger the code path in the analyzer that throws the exception. Original change's description: > [vm/ffi] Introduce `Struct.create` and `Union.create` > > Structs and unions can now be created from an existing typed data > with the new `create` methods. > > The typed data argument to these `create` methods is optional. If > the typed data argument is omitted, a new typed data of the right > size will be allocated. > > Compound field reads and writes are unchecked. (These are > TypedDataBase loads and stores, rather than TypedData loads and stores. > And Pointers have no byte length.) Therefore the `create` method taking > existing TypedData objects check whether the length in bytes it at > least the size of the compound. > > TEST=pkg/analyzer/test/src/diagnostics/creation_of_struct_or_union_test.dart > TEST=pkg/vm/testcases/transformations/ffi/struct_typed_data.dart > TEST=tests/ffi/structs_typed_data_test.dart > TEST=tests/ffi/vmspecific_static_checks_test.dart > > Closes: #45697 > Closes: #53418 > > Change-Id: If12c56106c7ca56611bccfacbc1c680c2d4ce407 > CoreLibraryReviewExempt: FFI is a VM and WASM only feature. > Cq-Include-Trybots: luci.dart.try:vm-aot-android-release-arm64c-try,vm-aot-android-release-arm_x64-try,vm-aot-linux-debug-x64-try,vm-aot-linux-debug-x64c-try,vm-aot-mac-release-arm64-try,vm-aot-mac-release-x64-try,vm-aot-obfuscate-linux-release-x64-try,vm-aot-optimization-level-linux-release-x64-try,vm-aot-win-debug-arm64-try,vm-aot-win-debug-x64c-try,vm-aot-win-release-x64-try,vm-appjit-linux-debug-x64-try,vm-asan-linux-release-x64-try,vm-checked-mac-release-arm64-try,vm-eager-optimization-linux-release-ia32-try,vm-eager-optimization-linux-release-x64-try,vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64c-try,vm-ffi-qemu-linux-release-arm-try,vm-ffi-qemu-linux-release-riscv64-try,vm-fuchsia-release-x64-try,vm-kernel-linux-debug-x64-try,vm-kernel-precomp-linux-release-x64-try,vm-linux-debug-ia32-try,vm-linux-debug-x64-try,vm-linux-debug-x64c-try,vm-mac-debug-arm64-try,vm-mac-debug-x64-try,vm-msan-linux-release-x64-try,vm-reload-linux-debug-x64-try,vm-reload-rollback-linux-debug-x64-try,vm-ubsan-linux-release-x64-try,vm-win-debug-arm64-try,vm-win-debug-x64-try,vm-win-debug-x64c-try,vm-win-release-ia32-try > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/342763 > Commit-Queue: Daco Harkes <dacoharkes@google.com> > Reviewed-by: Johnni Winther <johnniwinther@google.com> > Reviewed-by: Lasse Nielsen <lrn@google.com> > Reviewed-by: Martin Kustermann <kustermann@google.com> Change-Id: I285dc39946b5659219b37a1d8f10de479133957e Cq-Include-Trybots: luci.dart.try:vm-aot-android-release-arm64c-try,vm-aot-android-release-arm_x64-try,vm-aot-linux-debug-x64-try,vm-aot-linux-debug-x64c-try,vm-aot-mac-release-arm64-try,vm-aot-mac-release-x64-try,vm-aot-obfuscate-linux-release-x64-try,vm-aot-optimization-level-linux-release-x64-try,vm-aot-win-debug-arm64-try,vm-aot-win-debug-x64c-try,vm-aot-win-release-x64-try,vm-appjit-linux-debug-x64-try,vm-asan-linux-release-x64-try,vm-checked-mac-release-arm64-try,vm-eager-optimization-linux-release-ia32-try,vm-eager-optimization-linux-release-x64-try,vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64c-try,vm-ffi-qemu-linux-release-arm-try,vm-ffi-qemu-linux-release-riscv64-try,vm-fuchsia-release-x64-try,vm-kernel-linux-debug-x64-try,vm-kernel-precomp-linux-release-x64-try,vm-linux-debug-ia32-try,vm-linux-debug-x64-try,vm-linux-debug-x64c-try,vm-mac-debug-arm64-try,vm-mac-debug-x64-try,vm-msan-linux-release-x64-try,vm-reload-linux-debug-x64-try,vm-reload-rollback-linux-debug-x64-try,vm-ubsan-linux-release-x64-try,vm-win-debug-arm64-try,vm-win-debug-x64-try,vm-win-debug-x64c-try,vm-win-release-ia32-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/349061 Commit-Queue: Daco Harkes <dacoharkes@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Zach Anderson <zra@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
area-vm
Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends.
library-ffi
P3
A lower priority bug or feature request
triaged
Issue has been triaged by sub team
type-enhancement
A request for a change that isn't a bug
If a developer happens to have a typed data that contains a struct that is laid out in memory according to the C ABI, then it would be useful to have a constructor on the struct subtype that takes a typed data.
Currently we have a hidden constructor
#fromTypedDataBase
that either takes aPointer
or a typed data. ThePointer
can already be used via the.ref
extension method.Possible design:
The CFE would rewrite the body to the already existing
#fromTypedDataBase
.Context: dart-lang/native#926
The text was updated successfully, but these errors were encountered: