mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Full type metadata isn't necessary to calculate the runtime layout of a dependent struct or enum; we only need the non-function data from the value witness table (size, alignment, extra inhabitant count, and POD/BT/etc. flags). This can be generated more efficiently than the type metadata for many types--if we know a specific instantiation is fixed-layout, we can regenerate the layout information, or if we know the type has the same layout as another well-known type, we can get the layout from a common value witness table. This breaks a deadlock in most (but not all) cases where a value type is recursive using classes or fixed-layout indirected structs like UnsafePointer. rdar://problem/19898165 This time, factor out the ObjC-dependent parts of the tests so they only run with ObjC interop. Swift SVN r30266
14 KiB
14 KiB