__TEXT,__swift5_proto
セクションにprotocol conformance descriptor
へのポインタが列挙されてる。protocol conformance descriptor
には以下 が含まれる。 protocol descriptor
プロトコルnominal type descriptor
そのプロトコルに準拠する型。メタデータとは別witness table
その型がプロトコル準拠するに必要なwitness一覧nominal type descriptor
にはメタデータへのポインタが含まれる。swift_conformsToSwiftProtocol
は渡されたメタデータが準拠するプロトコル情報を探してきてくれる。実装はこちら。 https://github.com/apple/swift/blob/swift-5.1-branch/stdlib/public/runtime/ProtocolConformance.cpp#L544-L608
(edited) * frame #0: 0x00000001012f3d13 libswiftCore.dylib`swift_conformsToSwiftProtocolImpl(… frame #1: 0x00000001012f3a56 libswiftCore.dylib`swift_conformsToProtocol [inlined]… frame #2: 0x00000001012f3a11 libswiftCore.dylib`swift_conformsToProtocol [inlined]… frame #3: 0x00000001012f3a11 libswiftCore.dylib`swift_conformsToProtocol… frame #4: 0x00000001012c4efa libswiftCore.dylib`swift::_conformsToProtocol… frame #5: 0x00000001012c8e07 libswiftCore.dylib`_conformsToProtocols… frame #6: 0x00000001012c849e libswiftCore.dylib`_dynamicCastToExistential(…
(edited)