Closed
Description
Description
This issue tracks the implementation of the Swift frozen struct lowering in Mono runtime. The Swift runtime enregisters frozen structs as a set of primitives if the sequence <= 4 machine words. The Mono runtime should utilize the lowering API and implements the same behavior as the Swift runtime when interoperating with Swift in JIT/AOT and interpreter configurations.
The lowering algorithm is implemented in . The Mono runtime should utilize the lowering API and have the same behavior as Swift runtime when interop with Swift in JIT/AOT and interpreter configurations.
The existing runtime tests should be used for validation.
Tasks
- [mono][swift-interop] Support for Swift frozen struct lowering in mini-JIT/AOT/interpreter #102143
- Support Swift frozen struct returns for pinvokes in JIT/AOT and interpreter configurations [mono][swift-interop] Support for Swift struct lowering in direct P/Invoke returns #104389
- Refactor implementation of Swift frozen struct lowering in pinvokes from IR to IL level to match with the implementation of callback lowering
- Support Swift frozen struct for callbacks in JIT/AOT and interpreter configurations [Mono] [swift-interop] Add support for reverse pinvoke argument lowering #104437
- Support Swift frozen struct for callbacks returns in JIT/AOT and interpreter configurations [mono][swift-interop] Support for Swift struct lowering in callback returns #104949
- (optional) Add cache that maps structs to computed lowering (
SwiftPhysicalLowering
). The goal is to eliminate repeated runs of lowering algorithm for "known" structs.