Skip to content

Instantly share code, notes, and snippets.

@norio-nomura
Created August 2, 2019 02:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save norio-nomura/5cf4615b4334eeb7d4b5081aeb7e1536 to your computer and use it in GitHub Desktop.
Save norio-nomura/5cf4615b4334eeb7d4b5081aeb7e1536 to your computer and use it in GitHub Desktop.
swiftc -emit-assembly ClassExistencial.swift|swift demangle>ClassExistencial.asm
.section __TEXT,__text,regular,pure_instructions
.build_version macos, 10, 15 sdk_version 10, 15
.globl _main
.p2align 4, 0x90
_main:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
pushq %r13
subq $56, %rsp
.cfi_offset %r13, -24
xorl %eax, %eax
movl %eax, %ecx
movl %edi, -20(%rbp)
movq %rcx, %rdi
movq %rsi, -32(%rbp)
callq type metadata accessor for ClassExistencial.C1
movq %rax, %r13
movq %rdx, -40(%rbp)
callq ClassExistencial.C1.__allocating_init() -> ClassExistencial.C1
movq %rax, ClassExistencial.cp : ClassExistencial.C & ClassExistencial.P(%rip)
leaq protocol witness table for ClassExistencial.C1 : ClassExistencial.P in ClassExistencial(%rip), %rax
movq %rax, ClassExistencial.cp : ClassExistencial.C & ClassExistencial.P+8(%rip)
movq ClassExistencial.cp : ClassExistencial.C & ClassExistencial.P(%rip), %rax
movq ClassExistencial.cp : ClassExistencial.C & ClassExistencial.P+8(%rip), %rcx
movq %rax, %rdx
movq %rdx, %rdi
movq %rax, -48(%rbp)
movq %rcx, -56(%rbp)
callq _swift_getObjectType
movq -48(%rbp), %rcx
movq %rcx, -16(%rbp)
movq -56(%rbp), %rdx
movq 8(%rdx), %rsi
leaq -16(%rbp), %rdi
movq %rdi, %r13
movq %rax, %rdi
movq %rsi, -64(%rbp)
movq %rdx, %rsi
movq -64(%rbp), %rax
callq *%rax
xorl %eax, %eax
addq $56, %rsp
popq %r13
popq %rbp
retq
.cfi_endproc
.private_extern type metadata accessor for ClassExistencial.C1
.globl type metadata accessor for ClassExistencial.C1
.p2align 4, 0x90
type metadata accessor for ClassExistencial.C1:
pushq %rbp
movq %rsp, %rbp
subq $16, %rsp
movq lazy cache variable for type metadata for ClassExistencial.C1(%rip), %rax
cmpq $0, %rax
movq %rax, -8(%rbp)
jne LBB1_2
leaq full type metadata for ClassExistencial.C1+16(%rip), %rdi
callq _swift_getInitializedObjCClass
movq %rax, %rdi
movq %rax, lazy cache variable for type metadata for ClassExistencial.C1(%rip)
movq %rdi, -8(%rbp)
LBB1_2:
movq -8(%rbp), %rax
xorl %ecx, %ecx
movl %ecx, %edx
addq $16, %rsp
popq %rbp
retq
.private_extern ClassExistencial.C.__allocating_init() -> ClassExistencial.C
.globl ClassExistencial.C.__allocating_init() -> ClassExistencial.C
.p2align 4, 0x90
ClassExistencial.C.__allocating_init() -> ClassExistencial.C:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
pushq %r13
subq $24, %rsp
.cfi_offset %r13, -24
xorl %eax, %eax
movl %eax, %edi
callq type metadata accessor for ClassExistencial.C
movl $16, %esi
movl $7, %edi
movq %rdi, -16(%rbp)
movq %rax, %rdi
movq -16(%rbp), %rax
movq %rdx, -24(%rbp)
movq %rax, %rdx
callq _swift_allocObject
movq %rax, %r13
callq ClassExistencial.C.init() -> ClassExistencial.C
addq $24, %rsp
popq %r13
popq %rbp
retq
.cfi_endproc
.private_extern ClassExistencial.C.init() -> ClassExistencial.C
.globl ClassExistencial.C.init() -> ClassExistencial.C
.p2align 4, 0x90
ClassExistencial.C.init() -> ClassExistencial.C:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
movq $0, -8(%rbp)
movq %r13, -8(%rbp)
movq %r13, %rax
popq %rbp
retq
.cfi_endproc
.private_extern ClassExistencial.C.deinit
.globl ClassExistencial.C.deinit
.p2align 4, 0x90
ClassExistencial.C.deinit:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
movq $0, -8(%rbp)
movq %r13, -8(%rbp)
movq %r13, %rax
popq %rbp
retq
.cfi_endproc
.private_extern ClassExistencial.C.__deallocating_deinit
.globl ClassExistencial.C.__deallocating_deinit
.p2align 4, 0x90
ClassExistencial.C.__deallocating_deinit:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
subq $16, %rsp
movq $0, -8(%rbp)
movq %r13, -8(%rbp)
callq ClassExistencial.C.deinit
movl $16, %esi
movl $7, %edx
movq %rax, %rdi
callq _swift_deallocClassInstance
addq $16, %rsp
popq %rbp
retq
.cfi_endproc
.private_extern ClassExistencial.C1.m() -> ()
.globl ClassExistencial.C1.m() -> ()
.p2align 4, 0x90
ClassExistencial.C1.m() -> ():
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
movq $0, -8(%rbp)
movq %r13, -8(%rbp)
popq %rbp
retq
.cfi_endproc
.private_extern ClassExistencial.C1.__allocating_init() -> ClassExistencial.C1
.globl ClassExistencial.C1.__allocating_init() -> ClassExistencial.C1
.p2align 4, 0x90
ClassExistencial.C1.__allocating_init() -> ClassExistencial.C1:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
pushq %r13
subq $24, %rsp
.cfi_offset %r13, -24
xorl %eax, %eax
movl %eax, %edi
callq type metadata accessor for ClassExistencial.C1
movl $16, %esi
movl $7, %edi
movq %rdi, -16(%rbp)
movq %rax, %rdi
movq -16(%rbp), %rax
movq %rdx, -24(%rbp)
movq %rax, %rdx
callq _swift_allocObject
movq %rax, %r13
callq ClassExistencial.C1.init() -> ClassExistencial.C1
addq $24, %rsp
popq %r13
popq %rbp
retq
.cfi_endproc
.private_extern type metadata accessor for ClassExistencial.C
.globl type metadata accessor for ClassExistencial.C
.p2align 4, 0x90
type metadata accessor for ClassExistencial.C:
pushq %rbp
movq %rsp, %rbp
subq $16, %rsp
movq lazy cache variable for type metadata for ClassExistencial.C(%rip), %rax
cmpq $0, %rax
movq %rax, -8(%rbp)
jne LBB8_2
leaq full type metadata for ClassExistencial.C+16(%rip), %rdi
callq _swift_getInitializedObjCClass
movq %rax, %rdi
movq %rax, lazy cache variable for type metadata for ClassExistencial.C(%rip)
movq %rdi, -8(%rbp)
LBB8_2:
movq -8(%rbp), %rax
xorl %ecx, %ecx
movl %ecx, %edx
addq $16, %rsp
popq %rbp
retq
.private_extern ClassExistencial.C1.init() -> ClassExistencial.C1
.globl ClassExistencial.C1.init() -> ClassExistencial.C1
.p2align 4, 0x90
ClassExistencial.C1.init() -> ClassExistencial.C1:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
subq $32, %rsp
movq $0, -8(%rbp)
movq %r13, -8(%rbp)
callq ClassExistencial.C.init() -> ClassExistencial.C
movq %rax, -8(%rbp)
movq %rax, %rdi
movq %rax, -16(%rbp)
callq _swift_retain
movq -8(%rbp), %rdi
movq %rax, -24(%rbp)
callq _swift_release
movq -16(%rbp), %rax
addq $32, %rsp
popq %rbp
retq
.cfi_endproc
.private_extern ClassExistencial.C1.deinit
.globl ClassExistencial.C1.deinit
.p2align 4, 0x90
ClassExistencial.C1.deinit:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
subq $16, %rsp
movq $0, -8(%rbp)
movq %r13, -8(%rbp)
callq ClassExistencial.C.deinit
addq $16, %rsp
popq %rbp
retq
.cfi_endproc
.private_extern ClassExistencial.C1.__deallocating_deinit
.globl ClassExistencial.C1.__deallocating_deinit
.p2align 4, 0x90
ClassExistencial.C1.__deallocating_deinit:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
subq $16, %rsp
movq $0, -8(%rbp)
movq %r13, -8(%rbp)
callq ClassExistencial.C1.deinit
movl $16, %esi
movl $7, %edx
movq %rax, %rdi
callq _swift_deallocClassInstance
addq $16, %rsp
popq %rbp
retq
.cfi_endproc
.p2align 4, 0x90
protocol witness for ClassExistencial.P.m() -> () in conformance ClassExistencial.C1 : ClassExistencial.P in ClassExistencial:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
pushq %r13
pushq %rax
.cfi_offset %r13, -24
movq (%r13), %r13
movq (%r13), %rax
movq 88(%rax), %rax
callq *%rax
addq $8, %rsp
popq %r13
popq %rbp
retq
.cfi_endproc
.private_extern ClassExistencial.cp : ClassExistencial.C & ClassExistencial.P
.globl ClassExistencial.cp : ClassExistencial.C & ClassExistencial.P
.zerofill __DATA,__common,ClassExistencial.cp : ClassExistencial.C & ClassExistencial.P,16,3
.private_extern protocol conformance descriptor for ClassExistencial.C1 : ClassExistencial.P in ClassExistencial
.section __TEXT,__const
.globl protocol conformance descriptor for ClassExistencial.C1 : ClassExistencial.P in ClassExistencial
.p2align 2
protocol conformance descriptor for ClassExistencial.C1 : ClassExistencial.P in ClassExistencial:
.long protocol descriptor for ClassExistencial.P-protocol conformance descriptor for ClassExistencial.C1 : ClassExistencial.P in ClassExistencial
.long (nominal type descriptor for ClassExistencial.C1-protocol conformance descriptor for ClassExistencial.C1 : ClassExistencial.P in ClassExistencial)-4
.long (protocol witness table for ClassExistencial.C1 : ClassExistencial.P in ClassExistencial-protocol conformance descriptor for ClassExistencial.C1 : ClassExistencial.P in ClassExistencial)-8
.long 0
.private_extern protocol witness table for ClassExistencial.C1 : ClassExistencial.P in ClassExistencial
.section __DATA,__const
.globl protocol witness table for ClassExistencial.C1 : ClassExistencial.P in ClassExistencial
.p2align 3
protocol witness table for ClassExistencial.C1 : ClassExistencial.P in ClassExistencial:
.quad protocol conformance descriptor for ClassExistencial.C1 : ClassExistencial.P in ClassExistencial
.quad protocol witness for ClassExistencial.P.m() -> () in conformance ClassExistencial.C1 : ClassExistencial.P in ClassExistencial
.private_extern "_symbolic ClassExistencial.P"
.section __TEXT,__swift5_typeref,regular,no_dead_strip
.globl "_symbolic ClassExistencial.P"
.weak_definition "_symbolic ClassExistencial.P"
.p2align 1
"_symbolic ClassExistencial.P":
.ascii "ClassExistencial.P"
.byte 0
.section __TEXT,__swift5_fieldmd,regular,no_dead_strip
.p2align 2
reflection metadata field descriptor ClassExistencial.P:
.long "_symbolic ClassExistencial.P"-reflection metadata field descriptor ClassExistencial.P
.long 0
.short 4
.short 12
.long 0
.section __TEXT,__const
.p2align 4
l___unnamed_1:
.asciz "ClassExistencial"
.private_extern module descriptor ClassExistencial
.globl module descriptor ClassExistencial
.weak_definition module descriptor ClassExistencial
.p2align 2
module descriptor ClassExistencial:
.long 0
.long 0
.long (l___unnamed_1-module descriptor ClassExistencial)-8
l___unnamed_2:
.asciz "P"
.private_extern protocol descriptor for ClassExistencial.P
.globl protocol descriptor for ClassExistencial.P
.p2align 2
protocol descriptor for ClassExistencial.P:
.long 65603
.long (module descriptor ClassExistencial-protocol descriptor for ClassExistencial.P)-4
.long (l___unnamed_2-protocol descriptor for ClassExistencial.P)-8
.long 0
.long 1
.long 0
.long 17
.long 0
.private_extern metaclass for ClassExistencial.C
.section __DATA,__data
.globl metaclass for ClassExistencial.C
.p2align 3
metaclass for ClassExistencial.C:
.quad _OBJC_METACLASS_$_Swift._SwiftObject
.quad _OBJC_METACLASS_$_Swift._SwiftObject
.quad __objc_empty_cache
.quad 0
.quad l__METACLASS_DATA_ClassExistencial.C
.section __TEXT,__cstring,cstring_literals
.p2align 4
L___unnamed_3:
.asciz "ClassExistencial.C"
.section __DATA,__objc_const
.p2align 3
l__METACLASS_DATA_ClassExistencial.C:
.long 129
.long 40
.long 40
.long 0
.quad 0
.quad L___unnamed_3
.quad 0
.quad 0
.quad 0
.quad 0
.quad 0
.p2align 3
l__DATA_ClassExistencial.C:
.long 128
.long 16
.long 16
.long 0
.quad 0
.quad L___unnamed_3
.quad 0
.quad 0
.quad 0
.quad 0
.quad 0
.section __TEXT,__const
l___unnamed_4:
.asciz "C"
.private_extern nominal type descriptor for ClassExistencial.C
.globl nominal type descriptor for ClassExistencial.C
.p2align 2
nominal type descriptor for ClassExistencial.C:
.long 2147483728
.long (module descriptor ClassExistencial-nominal type descriptor for ClassExistencial.C)-4
.long (l___unnamed_4-nominal type descriptor for ClassExistencial.C)-8
.long (type metadata accessor for ClassExistencial.C-nominal type descriptor for ClassExistencial.C)-12
.long (reflection metadata field descriptor ClassExistencial.C-nominal type descriptor for ClassExistencial.C)-16
.long 0
.long 2
.long 11
.long 1
.long 0
.long 10
.long 10
.long 1
.long 1
.long (ClassExistencial.C.__allocating_init() -> ClassExistencial.C-nominal type descriptor for ClassExistencial.C)-56
.zerofill __DATA,__bss,lazy cache variable for type metadata for ClassExistencial.C,8,3
.section __DATA,__data
.p2align 3
full type metadata for ClassExistencial.C:
.quad ClassExistencial.C.__deallocating_deinit
.quad value witness table for Builtin.NativeObject
.quad metaclass for ClassExistencial.C
.quad _OBJC_CLASS_$_Swift._SwiftObject
.quad __objc_empty_cache
.quad 0
.quad l__DATA_ClassExistencial.C+2
.long 2
.long 0
.long 16
.short 7
.short 0
.long 104
.long 16
.quad nominal type descriptor for ClassExistencial.C
.quad 0
.quad ClassExistencial.C.__allocating_init() -> ClassExistencial.C
.private_extern "_symbolic _____ 16ClassExistencial1CC"
.section __TEXT,__swift5_typeref,regular,no_dead_strip
.globl "_symbolic _____ 16ClassExistencial1CC"
.weak_definition "_symbolic _____ 16ClassExistencial1CC"
.p2align 1
"_symbolic _____ 16ClassExistencial1CC":
.byte 1
.long (nominal type descriptor for ClassExistencial.C-"_symbolic _____ 16ClassExistencial1CC")-1
.byte 0
.section __TEXT,__swift5_fieldmd,regular,no_dead_strip
.p2align 2
reflection metadata field descriptor ClassExistencial.C:
.long "_symbolic _____ 16ClassExistencial1CC"-reflection metadata field descriptor ClassExistencial.C
.long 0
.short 1
.short 12
.long 0
.private_extern metaclass for ClassExistencial.C1
.section __DATA,__data
.globl metaclass for ClassExistencial.C1
.p2align 3
metaclass for ClassExistencial.C1:
.quad _OBJC_METACLASS_$_Swift._SwiftObject
.quad metaclass for ClassExistencial.C
.quad __objc_empty_cache
.quad 0
.quad l__METACLASS_DATA_ClassExistencial.C1
.section __TEXT,__cstring,cstring_literals
.p2align 4
L___unnamed_5:
.asciz "ClassExistencial.C1"
.section __DATA,__objc_const
.p2align 3
l__METACLASS_DATA_ClassExistencial.C1:
.long 129
.long 40
.long 40
.long 0
.quad 0
.quad L___unnamed_5
.quad 0
.quad 0
.quad 0
.quad 0
.quad 0
.p2align 3
l__DATA_ClassExistencial.C1:
.long 128
.long 16
.long 16
.long 0
.quad 0
.quad L___unnamed_5
.quad 0
.quad 0
.quad 0
.quad 0
.quad 0
.section __TEXT,__const
l___unnamed_6:
.asciz "C1"
.private_extern nominal type descriptor for ClassExistencial.C1
.globl nominal type descriptor for ClassExistencial.C1
.p2align 2
nominal type descriptor for ClassExistencial.C1:
.long 3221225552
.long (module descriptor ClassExistencial-nominal type descriptor for ClassExistencial.C1)-4
.long (l___unnamed_6-nominal type descriptor for ClassExistencial.C1)-8
.long (type metadata accessor for ClassExistencial.C1-nominal type descriptor for ClassExistencial.C1)-12
.long (reflection metadata field descriptor ClassExistencial.C1-nominal type descriptor for ClassExistencial.C1)-16
.long ("_symbolic _____ 16ClassExistencial1CC"-nominal type descriptor for ClassExistencial.C1)-20
.long 2
.long 12
.long 1
.long 0
.long 11
.long 11
.long 1
.long 16
.long (ClassExistencial.C1.m() -> ()-nominal type descriptor for ClassExistencial.C1)-56
.long 1
.long (nominal type descriptor for ClassExistencial.C-nominal type descriptor for ClassExistencial.C1)-64
.long (nominal type descriptor for ClassExistencial.C-nominal type descriptor for ClassExistencial.C1)-16
.long (ClassExistencial.C1.__allocating_init() -> ClassExistencial.C1-nominal type descriptor for ClassExistencial.C1)-72
.zerofill __DATA,__bss,lazy cache variable for type metadata for ClassExistencial.C1,8,3
.section __DATA,__data
.p2align 3
full type metadata for ClassExistencial.C1:
.quad ClassExistencial.C1.__deallocating_deinit
.quad value witness table for Builtin.NativeObject
.quad metaclass for ClassExistencial.C1
.quad full type metadata for ClassExistencial.C+16
.quad __objc_empty_cache
.quad 0
.quad l__DATA_ClassExistencial.C1+2
.long 2
.long 0
.long 16
.short 7
.short 0
.long 112
.long 16
.quad nominal type descriptor for ClassExistencial.C1
.quad 0
.quad ClassExistencial.C1.__allocating_init() -> ClassExistencial.C1
.quad ClassExistencial.C1.m() -> ()
.private_extern "_symbolic _____ 16ClassExistencial2C1C"
.section __TEXT,__swift5_typeref,regular,no_dead_strip
.globl "_symbolic _____ 16ClassExistencial2C1C"
.weak_definition "_symbolic _____ 16ClassExistencial2C1C"
.p2align 1
"_symbolic _____ 16ClassExistencial2C1C":
.byte 1
.long (nominal type descriptor for ClassExistencial.C1-"_symbolic _____ 16ClassExistencial2C1C")-1
.byte 0
.section __TEXT,__swift5_fieldmd,regular,no_dead_strip
.p2align 2
reflection metadata field descriptor ClassExistencial.C1:
.long "_symbolic _____ 16ClassExistencial2C1C"-reflection metadata field descriptor ClassExistencial.C1
.long ("_symbolic _____ 16ClassExistencial1CC"-reflection metadata field descriptor ClassExistencial.C1)-4
.short 1
.short 12
.long 0
.section __TEXT,__swift5_protos,regular,no_dead_strip
.p2align 2
l_protocols:
.long protocol descriptor for ClassExistencial.P-l_protocols
.section __TEXT,__swift5_proto,regular,no_dead_strip
.p2align 2
l_protocol_conformances:
.long protocol conformance descriptor for ClassExistencial.C1 : ClassExistencial.P in ClassExistencial-l_protocol_conformances
.section __TEXT,__swift5_types,regular,no_dead_strip
.p2align 2
l_type_metadata_table:
.long nominal type descriptor for ClassExistencial.C-l_type_metadata_table
.long (nominal type descriptor for ClassExistencial.C1-l_type_metadata_table)-4
.private_extern ___swift_reflection_version
.section __TEXT,__const
.globl ___swift_reflection_version
.weak_definition ___swift_reflection_version
.p2align 1
___swift_reflection_version:
.short 3
.section __DATA,__objc_classlist,regular,no_dead_strip
.p2align 3
_objc_classes:
.quad type metadata for ClassExistencial.C
.quad type metadata for ClassExistencial.C1
.no_dead_strip reflection metadata field descriptor ClassExistencial.P
.no_dead_strip reflection metadata field descriptor ClassExistencial.C
.no_dead_strip reflection metadata field descriptor ClassExistencial.C1
.no_dead_strip l_protocols
.no_dead_strip l_protocol_conformances
.no_dead_strip l_type_metadata_table
.no_dead_strip ___swift_reflection_version
.no_dead_strip _objc_classes
.linker_option "-lswiftSwiftOnoneSupport"
.linker_option "-lswiftCore"
.linker_option "-lobjc"
.section __DATA,__objc_imageinfo,regular,no_dead_strip
L_OBJC_IMAGE_INFO:
.long 0
.long 83953472
.globl protocol requirements base descriptor for ClassExistencial.P
.private_extern protocol requirements base descriptor for ClassExistencial.P
.alt_entry protocol requirements base descriptor for ClassExistencial.P
.set protocol requirements base descriptor for ClassExistencial.P, (protocol descriptor for ClassExistencial.P+24)-8
.globl method descriptor for ClassExistencial.C.__allocating_init() -> ClassExistencial.C
.private_extern method descriptor for ClassExistencial.C.__allocating_init() -> ClassExistencial.C
.alt_entry method descriptor for ClassExistencial.C.__allocating_init() -> ClassExistencial.C
.set method descriptor for ClassExistencial.C.__allocating_init() -> ClassExistencial.C, nominal type descriptor for ClassExistencial.C+52
.globl type metadata for ClassExistencial.C
.private_extern type metadata for ClassExistencial.C
.alt_entry type metadata for ClassExistencial.C
.set type metadata for ClassExistencial.C, full type metadata for ClassExistencial.C+16
.globl method descriptor for ClassExistencial.C1.m() -> ()
.private_extern method descriptor for ClassExistencial.C1.m() -> ()
.alt_entry method descriptor for ClassExistencial.C1.m() -> ()
.set method descriptor for ClassExistencial.C1.m() -> (), nominal type descriptor for ClassExistencial.C1+52
.globl type metadata for ClassExistencial.C1
.private_extern type metadata for ClassExistencial.C1
.alt_entry type metadata for ClassExistencial.C1
.set type metadata for ClassExistencial.C1, full type metadata for ClassExistencial.C1+16
.subsections_via_symbols
protocol P { func m() }
class C {}
class C1: C, P { func m() {} }
let cp: C & P = C1()
cp.m()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment