@@ -286,7 +286,10 @@ struct ArchitectureInstance {
286
286
287
287
typedef std::vector<ArchitectureInstance> ArchitectureInstances;
288
288
289
- static std::mutex g_architecture_mutex;
289
+ static std::mutex &GetArchitectureMutex () {
290
+ static std::mutex g_architecture_mutex;
291
+ return g_architecture_mutex;
292
+ }
290
293
291
294
static ArchitectureInstances &GetArchitectureInstances () {
292
295
static ArchitectureInstances g_instances;
@@ -296,13 +299,13 @@ static ArchitectureInstances &GetArchitectureInstances() {
296
299
void PluginManager::RegisterPlugin (const ConstString &name,
297
300
llvm::StringRef description,
298
301
ArchitectureCreateInstance create_callback) {
299
- std::lock_guard<std::mutex> guard (g_architecture_mutex );
302
+ std::lock_guard<std::mutex> guard (GetArchitectureMutex () );
300
303
GetArchitectureInstances ().push_back ({name, description, create_callback});
301
304
}
302
305
303
306
void PluginManager::UnregisterPlugin (
304
307
ArchitectureCreateInstance create_callback) {
305
- std::lock_guard<std::mutex> guard (g_architecture_mutex );
308
+ std::lock_guard<std::mutex> guard (GetArchitectureMutex () );
306
309
auto &instances = GetArchitectureInstances ();
307
310
308
311
for (auto pos = instances.begin (), end = instances.end (); pos != end; ++pos) {
@@ -316,7 +319,7 @@ void PluginManager::UnregisterPlugin(
316
319
317
320
std::unique_ptr<Architecture>
318
321
PluginManager::CreateArchitectureInstance (const ArchSpec &arch) {
319
- std::lock_guard<std::mutex> guard (g_architecture_mutex );
322
+ std::lock_guard<std::mutex> guard (GetArchitectureMutex () );
320
323
for (const auto &instances : GetArchitectureInstances ()) {
321
324
if (auto plugin_up = instances.create_callback (arch))
322
325
return plugin_up;
0 commit comments