2e8f9b85a6
This CL changes the semantics of `Pointer<T extends Struct>.ref` to use the compile-time `T` rather than the runtime `T`. This enables tree shaking of subtypes of Struct and optimizing `.ref`. Issue: https://github.com/dart-lang/sdk/issues/38721 TEST=tests/ffi/vmspecific_static_checks_test.dart TEST=tests/ffi/*struct*test_.dart Change-Id: I3f5b08c08ec0799ef8aab3c4177e2ac70d25501c Cq-Include-Trybots: luci.dart.try:vm-precomp-ffi-qemu-linux-release-arm-try,analyzer-analysis-server-linux-try,analyzer-linux-release-try,analyzer-nnbd-linux-release-try,front-end-linux-release-x64-try,front-end-nnbd-linux-release-x64-try,benchmark-linux-try,dart-sdk-linux-try,pkg-linux-release-try,vm-ffi-android-release-arm-try,vm-ffi-android-release-arm64-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/177862 Commit-Queue: Daco Harkes <dacoharkes@google.com> Reviewed-by: Aske Simon Christensen <askesc@google.com>