Commit Graph

365 Commits

Author SHA1 Message Date
Kuba (Brecka) Mracek
b503f2831b Merge pull request #68461 from kubamracek/embedded-classes-generic
[embedded] Initial support for generic classes in embedded Swift
2023-09-13 10:01:50 -07:00
Kuba Mracek
d90cf10fae [embedded] Avoid marking all public symbols as 'do not dead strip' in embedded Swift 2023-09-12 22:25:27 -07:00
Kuba Mracek
56085205d8 [embedded] specialize generic classes based on MetatypeInst too, fix lazy emit assert 2023-09-12 21:24:14 -07:00
Kuba Mracek
e2de477609 [embedded] avoid metadata accessors, fix vtable map, add a diagnostic on non-final generic functions 2023-09-12 16:57:09 -07:00
Kuba Mracek
d0c2a4ccf8 [embedded] Initial support for generic classes in embedded Swift
- VTableSpecializer, a new pass that synthesizes a new vtable per each observed concrete type used
- Don't use full type metadata refs in embedded Swift
- Lazily emit specialized class metadata (LazySpecializedClassMetadata) in IRGen
- Don't emit regular class metadata for a class decl if it's generic (only emit the specialized metadata)
2023-09-12 09:44:54 -07:00
swift-ci
59df11b217 Merge pull request #68421 from apple/embedded-availability
[embedded] Add an interim attr to mark declarations as unavailable in embedded Swift
2023-09-12 03:35:10 -07:00
Kuba Mracek
f4258dd125 [embedded] expand description and checks in availability-code-removal.swift 2023-09-11 21:33:00 -07:00
Kuba Mracek
51f54b4efb [embedded] add test for calling methods on classes, fix layout 2023-09-11 12:26:01 -07:00
Kuba Mracek
ae63e7549b [embedded] Add support for (non-generic) classes in embedded Swift
- In embedded Swift, classes get a simplified metadata: Basically just a vtable + destructor + superclass pointer.
- Only non-resilient (intended as permanent restriction), non-generic classes (for now) supported.
- Relax the check that prohibits metadata emission and usage to allow classes.
2023-09-11 11:22:11 -07:00
Kuba Mracek
9a380212c1 [embedded] Add an interim attr to mark declarations as unavailable in embedded Swift
Implemented as custom parsing logic instead of a proper attribute because we want it to be rewritten at parse time (into nothing in regular Swift mode, and into unconditional unavailable attr in embedded Swift mode), no serialization, printing, etc.
2023-09-10 08:23:31 -07:00
Kuba Mracek
25eb997a28 [embedded] Add basics of module serialization, importing and validation in embedded Swift.
- Add a flag to the serialized module (IsEmbeddedSwiftModule)
- Check on import that the mode matches (don't allow importing non-embedded module in embedded mode and vice versa)
- Drop TBD support, it's not expected to work in embedded Swift for now
- Drop auto-linking backdeploy libraries, it's not expected to backdeploy embedded Swift for now
- Drop prespecializations, not expected to work in embedded Swift for now
- Use CMO to serialize everything when emitting an embedded Swift module
- Change SILLinker to deserialize/import everything when importing an embedded Swift module
- Add an IR test for importing modules
- Add a deserialization validation test
2023-09-06 20:06:36 -07:00
zoecarver
26d223aedf [embedded] Mark test as unsupported on Windows. 2023-09-06 14:38:49 -07:00
zoecarver
09edae3035 [embedded] Use consistent target to make IR matching easier. 2023-09-06 10:59:31 -07:00
zoecarver
9f75a262ab [embedded] Error if embedded Swift enables library evolution. 2023-09-06 10:48:17 -07:00
zoecarver
48789914bb [embedded] Add initial tests; fix two issues in IRGen. 2023-09-06 10:48:17 -07:00