Skip to content

Commit 4d45092

Browse files
committed
Cleanup uses of __asm__ in the runtime
1 parent 8aab9f7 commit 4d45092

File tree

3 files changed

+54
-70
lines changed

3 files changed

+54
-70
lines changed

include/swift/Runtime/Config.h

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -236,30 +236,4 @@
236236

237237
#endif
238238

239-
#if !defined(__USER_LABEL_PREFIX__)
240-
// MSVC doesn't define __USER_LABEL_PREFIX.
241-
#if defined(_MSC_VER)
242-
#define __USER_LABEL_PREFIX__
243-
#else
244-
#error __USER_LABEL_PREFIX__ is undefined
245-
#endif
246-
#endif
247-
248-
// Workaround the bug of clang in Cygwin 64bit
249-
// https://llvm.org/bugs/show_bug.cgi?id=26744
250-
#if defined(__CYGWIN__) && defined(__x86_64__)
251-
#undef __USER_LABEL_PREFIX__
252-
#define __USER_LABEL_PREFIX__
253-
#endif
254-
255-
#define SWIFT_GLUE_EXPANDED(a, b) a##b
256-
#define SWIFT_GLUE(a, b) SWIFT_GLUE_EXPANDED(a, b)
257-
#define SWIFT_SYMBOL_NAME(name) SWIFT_GLUE(__USER_LABEL_PREFIX__, name)
258-
259-
#define SWIFT_QUOTE_EXPANDED(literal) #literal
260-
#define SWIFT_QUOTE(literal) SWIFT_QUOTE_EXPANDED(literal)
261-
262-
#define SWIFT_QUOTED_SYMBOL_NAME(name) \
263-
SWIFT_QUOTE(SWIFT_SYMBOL_NAME(name))
264-
265239
#endif // SWIFT_RUNTIME_CONFIG_H

stdlib/public/runtime/Reflection.mm

Lines changed: 52 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -928,49 +928,60 @@ void swift_ObjCMirror_subscript(String *outString,
928928
// mirrors.
929929
typedef const Metadata *(*MetadataFn)();
930930

931-
extern "C" Metadata *OpaqueMirrorMetadata()
932-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(STRUCT_MD_ACCESSOR_SYM(s13_OpaqueMirror)));
933-
extern "C" const MirrorWitnessTable OpaqueMirrorWitnessTable
934-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(MIRROR_CONFORMANCE_SYM(s13_OpaqueMirror, B)));
935-
extern "C" Metadata *TupleMirrorMetadata()
936-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(STRUCT_MD_ACCESSOR_SYM(s12_TupleMirror)));
937-
extern "C" const MirrorWitnessTable TupleMirrorWitnessTable
938-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(MIRROR_CONFORMANCE_SYM(s12_TupleMirror, B)));
939-
940-
extern "C" Metadata *StructMirrorMetadata()
941-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(STRUCT_MD_ACCESSOR_SYM(s13_StructMirror)));
942-
extern "C" const MirrorWitnessTable StructMirrorWitnessTable
943-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(MIRROR_CONFORMANCE_SYM(s13_StructMirror, B)));
944-
945-
extern "C" Metadata *EnumMirrorMetadata()
946-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(STRUCT_MD_ACCESSOR_SYM(s11_EnumMirror)));
947-
extern "C" const MirrorWitnessTable EnumMirrorWitnessTable
948-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(MIRROR_CONFORMANCE_SYM(s11_EnumMirror, B)));
949-
950-
extern "C" Metadata *ClassMirrorMetadata()
951-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(STRUCT_MD_ACCESSOR_SYM(s12_ClassMirror)));
952-
extern "C" const MirrorWitnessTable ClassMirrorWitnessTable
953-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(MIRROR_CONFORMANCE_SYM(s12_ClassMirror, B)));
954-
955-
extern "C" Metadata *ClassSuperMirrorMetadata()
956-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(STRUCT_MD_ACCESSOR_SYM(s17_ClassSuperMirror)));
957-
extern "C" const MirrorWitnessTable ClassSuperMirrorWitnessTable
958-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(MIRROR_CONFORMANCE_SYM(s17_ClassSuperMirror, C)));
959-
960-
extern "C" Metadata *MetatypeMirrorMetadata()
961-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(STRUCT_MD_ACCESSOR_SYM(s15_MetatypeMirror)));
962-
extern "C" const MirrorWitnessTable MetatypeMirrorWitnessTable
963-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(MIRROR_CONFORMANCE_SYM(s15_MetatypeMirror, B)));
931+
extern "C" Metadata *STRUCT_MD_ACCESSOR_SYM(s13_OpaqueMirror)();
932+
static constexpr auto &OpaqueMirrorMetadata = STRUCT_MD_ACCESSOR_SYM(s13_OpaqueMirror);
933+
934+
extern "C" const MirrorWitnessTable MIRROR_CONFORMANCE_SYM(s13_OpaqueMirror, B);
935+
static constexpr auto &OpaqueMirrorWitnessTable = MIRROR_CONFORMANCE_SYM(s13_OpaqueMirror, B);
936+
937+
extern "C" Metadata *STRUCT_MD_ACCESSOR_SYM(s12_TupleMirror)();
938+
static constexpr auto &TupleMirrorMetadata = STRUCT_MD_ACCESSOR_SYM(s12_TupleMirror);
939+
940+
extern "C" const MirrorWitnessTable MIRROR_CONFORMANCE_SYM(s12_TupleMirror, B);
941+
static constexpr auto &TupleMirrorWitnessTable = MIRROR_CONFORMANCE_SYM(s12_TupleMirror, B);
942+
943+
extern "C" Metadata *STRUCT_MD_ACCESSOR_SYM(s13_StructMirror)();
944+
static constexpr auto &StructMirrorMetadata = STRUCT_MD_ACCESSOR_SYM(s13_StructMirror);
945+
946+
extern "C" const MirrorWitnessTable MIRROR_CONFORMANCE_SYM(s13_StructMirror, B);
947+
static constexpr auto &StructMirrorWitnessTable = MIRROR_CONFORMANCE_SYM(s13_StructMirror, B);
948+
949+
extern "C" Metadata *STRUCT_MD_ACCESSOR_SYM(s11_EnumMirror)();
950+
static constexpr auto &EnumMirrorMetadata = STRUCT_MD_ACCESSOR_SYM(s11_EnumMirror);
951+
952+
extern "C" const MirrorWitnessTable MIRROR_CONFORMANCE_SYM(s11_EnumMirror, B);
953+
static constexpr auto &EnumMirrorWitnessTable = MIRROR_CONFORMANCE_SYM(s11_EnumMirror, B);
954+
955+
extern "C" Metadata *STRUCT_MD_ACCESSOR_SYM(s12_ClassMirror)();
956+
static constexpr auto &ClassMirrorMetadata = STRUCT_MD_ACCESSOR_SYM(s12_ClassMirror);
957+
958+
extern "C" const MirrorWitnessTable MIRROR_CONFORMANCE_SYM(s12_ClassMirror, B);
959+
static constexpr auto &ClassMirrorWitnessTable = MIRROR_CONFORMANCE_SYM(s12_ClassMirror, B);
960+
961+
extern "C" Metadata *STRUCT_MD_ACCESSOR_SYM(s17_ClassSuperMirror)();
962+
static constexpr auto &ClassSuperMirrorMetadata = STRUCT_MD_ACCESSOR_SYM(s17_ClassSuperMirror);
963+
964+
extern "C" const MirrorWitnessTable MIRROR_CONFORMANCE_SYM(s17_ClassSuperMirror, C);
965+
static constexpr auto &ClassSuperMirrorWitnessTable = MIRROR_CONFORMANCE_SYM(s17_ClassSuperMirror, C);
966+
967+
extern "C" Metadata *STRUCT_MD_ACCESSOR_SYM(s15_MetatypeMirror)();
968+
static constexpr auto &MetatypeMirrorMetadata = STRUCT_MD_ACCESSOR_SYM(s15_MetatypeMirror);
969+
970+
extern "C" const MirrorWitnessTable MIRROR_CONFORMANCE_SYM(s15_MetatypeMirror, B);
971+
static constexpr auto &MetatypeMirrorWitnessTable = MIRROR_CONFORMANCE_SYM(s15_MetatypeMirror, B);
964972

965973
#if SWIFT_OBJC_INTEROP
966-
extern "C" Metadata *ObjCMirrorMetadata()
967-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(STRUCT_MD_ACCESSOR_SYM(s11_ObjCMirror)));
968-
extern "C" const MirrorWitnessTable ObjCMirrorWitnessTable
969-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(OBJC_MIRROR_CONFORMANCE_SYM()));
970-
extern "C" Metadata *ObjCSuperMirrorMetadata()
971-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(STRUCT_MD_ACCESSOR_SYM(s16_ObjCSuperMirror)));
972-
extern "C" const MirrorWitnessTable ObjCSuperMirrorWitnessTable
973-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(MIRROR_CONFORMANCE_SYM(s16_ObjCSuperMirror, C)));
974+
extern "C" Metadata *STRUCT_MD_ACCESSOR_SYM(s11_ObjCMirror)();
975+
static constexpr auto &ObjCMirrorMetadata = STRUCT_MD_ACCESSOR_SYM(s11_ObjCMirror);
976+
977+
extern "C" const MirrorWitnessTable OBJC_MIRROR_CONFORMANCE_SYM();
978+
static constexpr auto &ObjCMirrorWitnessTable = OBJC_MIRROR_CONFORMANCE_SYM();
979+
980+
extern "C" Metadata *STRUCT_MD_ACCESSOR_SYM(s16_ObjCSuperMirror)();
981+
static constexpr auto &ObjCSuperMirrorMetadata = STRUCT_MD_ACCESSOR_SYM(s16_ObjCSuperMirror);
982+
983+
extern "C" const MirrorWitnessTable MIRROR_CONFORMANCE_SYM(s16_ObjCSuperMirror, C);
984+
static constexpr auto &ObjCSuperMirrorWitnessTable = MIRROR_CONFORMANCE_SYM(s16_ObjCSuperMirror, C);
974985
#endif
975986

976987
/// \param owner passed at +1, consumed.

stdlib/public/runtime/SwiftHashableSupport.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,14 @@
1313
#ifndef SWIFT_RUNTIME_SWIFT_HASHABLE_SUPPORT_H
1414
#define SWIFT_RUNTIME_SWIFT_HASHABLE_SUPPORT_H
1515

16-
#include "swift/Runtime/Config.h"
1716
#include "swift/Runtime/Metadata.h"
1817
#include <stdint.h>
1918

2019
namespace swift {
2120
namespace hashable_support {
2221

23-
extern "C" const ProtocolDescriptor HashableProtocolDescriptor
24-
__asm__(SWIFT_QUOTED_SYMBOL_NAME(PROTOCOL_DESCR_SYM(s8Hashable)));
22+
extern "C" const ProtocolDescriptor PROTOCOL_DESCR_SYM(s8Hashable);
23+
static constexpr auto &HashableProtocolDescriptor = PROTOCOL_DESCR_SYM(s8Hashable);
2524

2625
struct HashableWitnessTable;
2726

0 commit comments

Comments
 (0)