[swift-evolution] Does protocol support add to an object's size?

Joe Groff jgroff at apple.com
Fri Mar 31 11:39:56 CDT 2017


> On Mar 31, 2017, at 9:33 AM, Daryle Walker via swift-evolution <swift-evolution at swift.org> wrote:
> 
> 
>> On Feb 15, 2017, at 3:36 PM, Slava Pestov <spestov at apple.com> wrote:
>> 
>> Values of concrete type always have the same size regardless of what protocols the type conforms to.
> 
> So, two struct types with the same instance-level stored properties, but one with no protocol conformance and the other with at least one, have the same stride-of? Does that mean that the latter type keeps no per-instance space for protocol support? Or that all struct types keep protocol accounting information, even when a struct’s protocol list is empty (like the former type)?

Protocol conformances are a distinct runtime object from the type itself. There's never any direct record of the conformance in a type's own metadata or instances. This is what allows conformances to be added externally by extensions from other modules.

-Joe


More information about the swift-evolution mailing list