[Runtime] Remove all use of read/write locks.

Read/write locks are not as good as you'd think; a simple mutex is better in
almost all cases.

rdar://90776105
This commit is contained in:
Alastair Houghton
2022-03-29 16:03:07 +01:00
parent 0cf687aa2b
commit 66b9d21000
11 changed files with 28 additions and 1072 deletions

View File

@@ -145,8 +145,8 @@ enum class TypeNameKind {
using TypeNameCacheKey = llvm::PointerIntPair<const Metadata *, 2, TypeNameKind>;
#if SWIFT_CASTING_SUPPORTS_MUTEX
static StaticReadWriteLock TypeNameCacheLock;
static StaticReadWriteLock MangledToPrettyFunctionNameCacheLock;
static StaticMutex TypeNameCacheLock;
static StaticMutex MangledToPrettyFunctionNameCacheLock;
#endif
/// Cache containing rendered names for Metadata.
@@ -167,7 +167,7 @@ swift::swift_getTypeName(const Metadata *type, bool qualified) {
// Attempt read-only lookup of cache entry.
{
#if SWIFT_CASTING_SUPPORTS_MUTEX
StaticScopedReadLock guard(TypeNameCacheLock);
StaticMutex::ScopedLock guard(TypeNameCacheLock);
#endif
auto found = cache.find(key);
@@ -180,7 +180,7 @@ swift::swift_getTypeName(const Metadata *type, bool qualified) {
// Read-only lookup failed to find item, we may need to create it.
{
#if SWIFT_CASTING_SUPPORTS_MUTEX
StaticScopedWriteLock guard(TypeNameCacheLock);
StaticMutex::ScopedLock guard(TypeNameCacheLock);
#endif
// Do lookup again just to make sure it wasn't created by another
@@ -213,7 +213,7 @@ swift::swift_getMangledTypeName(const Metadata *type) {
// Attempt read-only lookup of cache entry.
{
#if SWIFT_CASTING_SUPPORTS_MUTEX
StaticScopedReadLock guard(TypeNameCacheLock);
StaticMutex::ScopedLock guard(TypeNameCacheLock);
#endif
auto found = cache.find(key);
@@ -226,7 +226,7 @@ swift::swift_getMangledTypeName(const Metadata *type) {
// Read-only cache lookup failed, we may need to create it.
{
#if SWIFT_CASTING_SUPPORTS_MUTEX
StaticScopedWriteLock guard(TypeNameCacheLock);
StaticMutex::ScopedLock guard(TypeNameCacheLock);
#endif
// Do lookup again just to make sure it wasn't created by another
@@ -271,7 +271,7 @@ swift::swift_getFunctionFullNameFromMangledName(
// Attempt read-only lookup of cache entry.
{
#if SWIFT_CASTING_SUPPORTS_MUTEX
StaticScopedReadLock guard(MangledToPrettyFunctionNameCacheLock);
StaticMutex::ScopedLock guard(MangledToPrettyFunctionNameCacheLock);
#endif
auto found = cache.find(mangledName);
@@ -388,7 +388,7 @@ swift::swift_getFunctionFullNameFromMangledName(
{
#if SWIFT_CASTING_SUPPORTS_MUTEX
StaticScopedWriteLock guard(MangledToPrettyFunctionNameCacheLock);
StaticMutex::ScopedLock guard(MangledToPrettyFunctionNameCacheLock);
#endif
cache.insert({mangledName, {result, size}});