@@ -943,47 +943,49 @@ void swift_ObjCMirror_subscript(String *outString,
943
943
944
944
// Addresses of the type metadata and Mirror witness tables for the primitive
945
945
// mirrors.
946
- extern " C" const Metadata OpaqueMirrorMetadata
947
- __asm__ (SWIFT_QUOTED_SYMBOL_NAME(_TMVs13_OpaqueMirror));
946
+ typedef const Metadata *(*MetadataFn)();
947
+
948
+ extern " C" Metadata *OpaqueMirrorMetadata ()
949
+ __asm__(SWIFT_QUOTED_SYMBOL_NAME(_TMaVs13_OpaqueMirror));
948
950
extern " C" const MirrorWitnessTable OpaqueMirrorWitnessTable
949
951
__asm__ (SWIFT_QUOTED_SYMBOL_NAME(_TWPVs13_OpaqueMirrors7_Mirrors));
950
- extern " C" const Metadata TupleMirrorMetadata
951
- __asm__ (SWIFT_QUOTED_SYMBOL_NAME(_TMVs12_TupleMirror ));
952
+ extern " C" Metadata * TupleMirrorMetadata ()
953
+ __asm__(SWIFT_QUOTED_SYMBOL_NAME(_TMaVs12_TupleMirror ));
952
954
extern " C" const MirrorWitnessTable TupleMirrorWitnessTable
953
955
__asm__ (SWIFT_QUOTED_SYMBOL_NAME(_TWPVs12_TupleMirrors7_Mirrors));
954
956
955
- extern " C" const Metadata StructMirrorMetadata
956
- __asm__ (SWIFT_QUOTED_SYMBOL_NAME(_TMVs13_StructMirror ));
957
+ extern " C" Metadata * StructMirrorMetadata ()
958
+ __asm__(SWIFT_QUOTED_SYMBOL_NAME(_TMaVs13_StructMirror ));
957
959
extern " C" const MirrorWitnessTable StructMirrorWitnessTable
958
960
__asm__ (SWIFT_QUOTED_SYMBOL_NAME(_TWPVs13_StructMirrors7_Mirrors));
959
961
960
- extern " C" const Metadata EnumMirrorMetadata
961
- __asm__ (SWIFT_QUOTED_SYMBOL_NAME(_TMVs11_EnumMirror ));
962
+ extern " C" Metadata * EnumMirrorMetadata ()
963
+ __asm__(SWIFT_QUOTED_SYMBOL_NAME(_TMaVs11_EnumMirror ));
962
964
extern " C" const MirrorWitnessTable EnumMirrorWitnessTable
963
965
__asm__ (SWIFT_QUOTED_SYMBOL_NAME(_TWPVs11_EnumMirrors7_Mirrors));
964
966
965
- extern " C" const Metadata ClassMirrorMetadata
966
- __asm__ (SWIFT_QUOTED_SYMBOL_NAME(_TMVs12_ClassMirror ));
967
+ extern " C" Metadata * ClassMirrorMetadata ()
968
+ __asm__(SWIFT_QUOTED_SYMBOL_NAME(_TMaVs12_ClassMirror ));
967
969
extern " C" const MirrorWitnessTable ClassMirrorWitnessTable
968
970
__asm__ (SWIFT_QUOTED_SYMBOL_NAME(_TWPVs12_ClassMirrors7_Mirrors));
969
971
970
- extern " C" const Metadata ClassSuperMirrorMetadata
971
- __asm__ (SWIFT_QUOTED_SYMBOL_NAME(_TMVs17_ClassSuperMirror ));
972
+ extern " C" Metadata * ClassSuperMirrorMetadata ()
973
+ __asm__(SWIFT_QUOTED_SYMBOL_NAME(_TMaVs17_ClassSuperMirror ));
972
974
extern " C" const MirrorWitnessTable ClassSuperMirrorWitnessTable
973
975
__asm__ (SWIFT_QUOTED_SYMBOL_NAME(_TWPVs17_ClassSuperMirrors7_Mirrors));
974
976
975
- extern " C" const Metadata MetatypeMirrorMetadata
976
- __asm__ (SWIFT_QUOTED_SYMBOL_NAME(_TMVs15_MetatypeMirror ));
977
+ extern " C" Metadata * MetatypeMirrorMetadata ()
978
+ __asm__(SWIFT_QUOTED_SYMBOL_NAME(_TMaVs15_MetatypeMirror ));
977
979
extern " C" const MirrorWitnessTable MetatypeMirrorWitnessTable
978
980
__asm__ (SWIFT_QUOTED_SYMBOL_NAME(_TWPVs15_MetatypeMirrors7_Mirrors));
979
981
980
982
#if SWIFT_OBJC_INTEROP
981
- extern " C" const Metadata ObjCMirrorMetadata
982
- __asm__ (SWIFT_QUOTED_SYMBOL_NAME(_TMVs11_ObjCMirror ));
983
+ extern " C" Metadata * ObjCMirrorMetadata ()
984
+ __asm__(SWIFT_QUOTED_SYMBOL_NAME(_TMaVs11_ObjCMirror ));
983
985
extern " C" const MirrorWitnessTable ObjCMirrorWitnessTable
984
986
__asm__ (SWIFT_QUOTED_SYMBOL_NAME(_TWPVs11_ObjCMirrors7_Mirrors));
985
- extern " C" const Metadata ObjCSuperMirrorMetadata
986
- __asm__ (SWIFT_QUOTED_SYMBOL_NAME(_TMVs16_ObjCSuperMirror ));
987
+ extern " C" Metadata * ObjCSuperMirrorMetadata ()
988
+ __asm__(SWIFT_QUOTED_SYMBOL_NAME(_TMaVs16_ObjCSuperMirror ));
987
989
extern " C" const MirrorWitnessTable ObjCSuperMirrorWitnessTable
988
990
__asm__ (SWIFT_QUOTED_SYMBOL_NAME(_TWPVs16_ObjCSuperMirrors7_Mirrors));
989
991
#endif
@@ -1004,7 +1006,7 @@ static Mirror getMirrorForSuperclass(const ClassMetadata *sup,
1004
1006
Mirror resultBuf;
1005
1007
MagicMirror *result = ::new (&resultBuf) MagicMirror;
1006
1008
1007
- result->Self = & ClassSuperMirrorMetadata;
1009
+ result->Self = ClassSuperMirrorMetadata () ;
1008
1010
result->MirrorWitness = &ClassSuperMirrorWitnessTable;
1009
1011
result->Data .Owner = owner;
1010
1012
result->Data .Type = sup;
@@ -1023,7 +1025,7 @@ static Mirror ObjC_getMirrorForSuperclass(Class sup,
1023
1025
Mirror resultBuf;
1024
1026
MagicMirror *result = ::new (&resultBuf) MagicMirror;
1025
1027
1026
- result->Self = & ObjCSuperMirrorMetadata;
1028
+ result->Self = ObjCSuperMirrorMetadata () ;
1027
1029
result->MirrorWitness = &ObjCSuperMirrorWitnessTable;
1028
1030
result->Data .Owner = owner;
1029
1031
result->Data .Type = reinterpret_cast <ClassMetadata*>(sup);
@@ -1050,12 +1052,12 @@ static Mirror ObjC_getMirrorForSuperclass(Class sup,
1050
1052
#if SWIFT_OBJC_INTEROP
1051
1053
// If this is a pure ObjC class, reflect it using ObjC's runtime facilities.
1052
1054
if (!isa->isTypeMetadata ())
1053
- return {isa, & ObjCMirrorMetadata, &ObjCMirrorWitnessTable};
1055
+ return {isa, ObjCMirrorMetadata () , &ObjCMirrorWitnessTable};
1054
1056
#endif
1055
1057
1056
1058
// Otherwise, use the native Swift facilities.
1057
1059
return std::make_tuple (
1058
- isa, & ClassMirrorMetadata, &ClassMirrorWitnessTable);
1060
+ isa, ClassMirrorMetadata () , &ClassMirrorWitnessTable);
1059
1061
}
1060
1062
1061
1063
// / Get the magic mirror witnesses appropriate to a particular type.
@@ -1064,16 +1066,16 @@ static Mirror ObjC_getMirrorForSuperclass(Class sup,
1064
1066
switch (T->getKind ()) {
1065
1067
case MetadataKind::Tuple:
1066
1068
return std::make_tuple (
1067
- T, & TupleMirrorMetadata, &TupleMirrorWitnessTable);
1069
+ T, TupleMirrorMetadata () , &TupleMirrorWitnessTable);
1068
1070
1069
1071
case MetadataKind::Struct:
1070
1072
return std::make_tuple (
1071
- T, & StructMirrorMetadata, &StructMirrorWitnessTable);
1073
+ T, StructMirrorMetadata () , &StructMirrorWitnessTable);
1072
1074
1073
1075
case MetadataKind::Enum:
1074
1076
case MetadataKind::Optional:
1075
1077
return std::make_tuple (
1076
- T, & EnumMirrorMetadata, &EnumMirrorWitnessTable);
1078
+ T, EnumMirrorMetadata () , &EnumMirrorWitnessTable);
1077
1079
1078
1080
case MetadataKind::ObjCClassWrapper:
1079
1081
case MetadataKind::ForeignClass:
@@ -1083,7 +1085,7 @@ static Mirror ObjC_getMirrorForSuperclass(Class sup,
1083
1085
1084
1086
case MetadataKind::Metatype:
1085
1087
case MetadataKind::ExistentialMetatype: {
1086
- return std::make_tuple (T, & MetatypeMirrorMetadata,
1088
+ return std::make_tuple (T, MetatypeMirrorMetadata () ,
1087
1089
&MetatypeMirrorWitnessTable);
1088
1090
}
1089
1091
@@ -1110,7 +1112,7 @@ static Mirror ObjC_getMirrorForSuperclass(Class sup,
1110
1112
case MetadataKind::Function:
1111
1113
case MetadataKind::Existential:
1112
1114
return std::make_tuple (
1113
- T, & OpaqueMirrorMetadata, &OpaqueMirrorWitnessTable);
1115
+ T, OpaqueMirrorMetadata () , &OpaqueMirrorWitnessTable);
1114
1116
1115
1117
// Types can't have these kinds.
1116
1118
case MetadataKind::HeapLocalVariable:
0 commit comments