Skip to content

Commit 4ea98f9

Browse files
authored
Merge pull request #39119 from kateinoigakukun/katei/fix-internal-cc-mismatch
[stdlib] Fix cc mismatch violation on swift_isClassType
2 parents 70d9f16 + 9b13d1f commit 4ea98f9

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

stdlib/public/SwiftShims/RuntimeShims.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include "SwiftStdbool.h"
2222
#include "SwiftStddef.h"
2323
#include "SwiftStdint.h"
24+
#include "SwiftStdbool.h"
2425
#include "Visibility.h"
2526

2627
#ifdef __cplusplus
@@ -62,6 +63,12 @@ int _swift_stdlib_putc_stderr(int C);
6263
SWIFT_RUNTIME_STDLIB_API
6364
__swift_size_t _swift_stdlib_getHardwareConcurrency(void);
6465

66+
#ifdef __swift__
67+
/// Called by ReflectionMirror in stdlib through C-calling-convention
68+
SWIFT_RUNTIME_STDLIB_API
69+
__swift_bool swift_isClassType(const void *type);
70+
#endif
71+
6572
/// Manually allocated memory is at least 16-byte aligned in Swift.
6673
///
6774
/// When swift_slowAlloc is called with "default" alignment (alignMask ==

stdlib/public/core/ReflectionMirror.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,11 @@
1414

1515
import SwiftShims
1616

17-
@_silgen_name("swift_isClassType")
18-
internal func _isClassType(_: Any.Type) -> Bool
17+
internal func _isClassType(_ type: Any.Type) -> Bool {
18+
// a thick metatype is represented with a pointer metadata structure,
19+
// so this unsafeBitCast is a safe operation here.
20+
return swift_isClassType(unsafeBitCast(type, to: UnsafeRawPointer.self))
21+
}
1922

2023
@_silgen_name("swift_getMetadataKind")
2124
internal func _metadataKind(_: Any.Type) -> UInt

0 commit comments

Comments
 (0)