Skip to content

Commit 10f527d

Browse files
committed
Use PluginInstances instead of vector for Architecuture plugins
This was the only plugin type that was not using the PluginInstance wrapper. It needs to use the PluginInstances to hook into the enable/disable support.
1 parent 79108da commit 10f527d

File tree

1 file changed

+4
-11
lines changed

1 file changed

+4
-11
lines changed

lldb/source/Core/PluginManager.cpp

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ ABICreateInstance PluginManager::GetABICreateCallbackAtIndex(uint32_t idx) {
407407
#pragma mark Architecture
408408

409409
typedef PluginInstance<ArchitectureCreateInstance> ArchitectureInstance;
410-
typedef std::vector<ArchitectureInstance> ArchitectureInstances;
410+
typedef PluginInstances<ArchitectureInstance> ArchitectureInstances;
411411

412412
static ArchitectureInstances &GetArchitectureInstances() {
413413
static ArchitectureInstances g_instances;
@@ -417,25 +417,18 @@ static ArchitectureInstances &GetArchitectureInstances() {
417417
void PluginManager::RegisterPlugin(llvm::StringRef name,
418418
llvm::StringRef description,
419419
ArchitectureCreateInstance create_callback) {
420-
GetArchitectureInstances().push_back({name, description, create_callback});
420+
GetArchitectureInstances().RegisterPlugin(name, description, create_callback);
421421
}
422422

423423
void PluginManager::UnregisterPlugin(
424424
ArchitectureCreateInstance create_callback) {
425425
auto &instances = GetArchitectureInstances();
426-
427-
for (auto pos = instances.begin(), end = instances.end(); pos != end; ++pos) {
428-
if (pos->create_callback == create_callback) {
429-
instances.erase(pos);
430-
return;
431-
}
432-
}
433-
llvm_unreachable("Plugin not found");
426+
instances.UnregisterPlugin(create_callback);
434427
}
435428

436429
std::unique_ptr<Architecture>
437430
PluginManager::CreateArchitectureInstance(const ArchSpec &arch) {
438-
for (const auto &instances : GetArchitectureInstances()) {
431+
for (const auto &instances : GetArchitectureInstances().GetSnapshot()) {
439432
if (auto plugin_up = instances.create_callback(arch))
440433
return plugin_up;
441434
}

0 commit comments

Comments
 (0)