Slide 27
Slide 27 text
VTable in Type Descriptor
; nominal type descriptor for LibX.A
@"$s4LibX1ACMn" = constant <{ ... }> <{
; ContextDescriptorFlags
i32 -2147483568,
; Parent Descriptor: module descriptor LibX
i32 cast_relptr <{ ... }> @"$s4LibXMXM",
; Name: "A\00"
i32 cast_relptr [2 x i8] @.str.1,
; type metadata accessor for LibX.A
i32 cast_relptr %swift.metadata_response (i64)* @"$s4LibX1ACMa",
; reflection metadata field descriptor LibX.A
i32 cast_relptr { i32, i32, i16, i16, i32 }* @"$s4LibX1ACMF",
; SuperclassType, MetadataNegativeSizeInWords
i32 0, i32 2,
; MetadataPositiveSizeInWords, NumImmediateMembers
i32 10, i32 3,
; NumFields, FieldOffsetVectorOffset
i32 0, i32 7,
; VTable Offset, VTable Size
i32 7, i32 3,
; VTable
%swift.method_descriptor {
; Kind::Method, LibX.A.unusedFunc() -> ()
i32 16, i32 cast_relptr void (%T4LibX1AC*)* @"$s4LibX1AC10unusedFuncyyF",
},
%swift.method_descriptor {
; Kind::Method, LibX.A.usedFunc() -> ()
i32 16, i32 cast_relptr void (%T4LibX1AC*)* @"$s4LibX1AC8usedFuncyyF",
},
%swift.method_descriptor {
; Kind::Init, LibX.A.__allocating_init() -> LibX.A
i32 1, i32 cast_relptr void (%T4LibX1AC*)* @"$s4LibX1ACACycfC",
}
}>, section "__TEXT,__const", align 4
• ؔϙΠϯλ͕૬ରϙΠϯ
λͱͯ͠ຒΊࠐ·ΕͯΔ
27