Skip to content

Introduce LockGuarded and make swift::ASTContext accesses thread safe #8719

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
May 14, 2024

Conversation

augusto2112
Copy link

swift::ASTContext is not thread safe by default, wrap SwiftASTContext's swift::ASTContext in a LockGuarded.

rdar://121409294

LockGuarded is a generic wrapper around a resource to ensure exclusive
access.
swift::ASTContext is not thread safe by default, wrap SwiftASTContext's
swift::ASTContext in a LockGuarded.

rdar://121409294
@augusto2112
Copy link
Author

@swift-ci test

@adrian-prantl
Copy link

Will this work when someone calls CompilerType::GetBitSize() for example?

@adrian-prantl
Copy link

Will this work when someone calls CompilerType::GetBitSize() for example?

Nevermind. You created a thread-safe swift::ASTContext not a SwiftASTContext.

In preparation of refactoring SetupASTContext to use a call_once for
initialization, make SetupASTContext and ParseAndImport member
functions. This is needed so SwiftExpressionParser can acquire a
ThreadSafeASTContext multiple times, so it doesn't need to hold on to
that lock for the entirety of expression parsing.
Refactor SetupASTContext so it can be called multiple times, and rename
it to GetASTContext to indicate that change.
After making ParseASTContext and GetASTContext methods, some function
parameters are now unnecessarily as they are also ivars. Remove those
parameters.
@augusto2112
Copy link
Author

@swift-ci test

In SwiftEnumDescriptor, replace the usages of swift::ASTContext with
SwiftASTContext. swift::ASTContext is wrapped on a lock now, and
SwiftEnumDescriptor would only use it to access SwiftASTContext, so pass
the latter directly.
@augusto2112
Copy link
Author

@swift-ci test

@augusto2112
Copy link
Author

@swift-ci test Windows

@adrian-prantl adrian-prantl merged commit a765952 into swiftlang:swift/release/6.0 May 14, 2024
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants