summaryrefslogtreecommitdiffstats
path: root/lldb/source/Target
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2019-08-22 20:41:16 +0000
committerAdrian Prantl <aprantl@apple.com>2019-08-22 20:41:16 +0000
commitb041602e3fe330368200a925c18af4d5e0df155c (patch)
tree55290996dd526619f05d96484bf657230b8eac07 /lldb/source/Target
parentdddc0fd9cbba726a82a1f6b88015fa73dd2643c6 (diff)
downloadbcm5719-llvm-b041602e3fe330368200a925c18af4d5e0df155c.tar.gz
bcm5719-llvm-b041602e3fe330368200a925c18af4d5e0df155c.zip
Revert Extend FindTypes with CompilerContext to allow filtering by language.
This reverts r369690 (git commit aa3a564efa6b5fff2129f81a4041069a0233168f) llvm-svn: 369702
Diffstat (limited to 'lldb/source/Target')
-rw-r--r--lldb/source/Target/Language.cpp24
-rw-r--r--lldb/source/Target/Target.cpp39
2 files changed, 41 insertions, 22 deletions
diff --git a/lldb/source/Target/Language.cpp b/lldb/source/Target/Language.cpp
index 43d0be0f737..3c3ef2841d4 100644
--- a/lldb/source/Target/Language.cpp
+++ b/lldb/source/Target/Language.cpp
@@ -357,16 +357,26 @@ std::set<lldb::LanguageType> Language::GetSupportedLanguages() {
return supported_languages;
}
-LanguageSet Language::GetLanguagesSupportingTypeSystems() {
- return PluginManager::GetAllTypeSystemSupportedLanguagesForTypes();
+void Language::GetLanguagesSupportingTypeSystems(
+ std::set<lldb::LanguageType> &languages,
+ std::set<lldb::LanguageType> &languages_for_expressions) {
+ uint32_t idx = 0;
+
+ while (TypeSystemEnumerateSupportedLanguages enumerate = PluginManager::
+ GetTypeSystemEnumerateSupportedLanguagesCallbackAtIndex(idx++)) {
+ (*enumerate)(languages, languages_for_expressions);
+ }
}
-LanguageSet Language::GetLanguagesSupportingTypeSystemsForExpressions() {
- return PluginManager::GetAllTypeSystemSupportedLanguagesForExpressions();
-}
+void Language::GetLanguagesSupportingREPLs(
+ std::set<lldb::LanguageType> &languages) {
+ uint32_t idx = 0;
-LanguageSet Language::GetLanguagesSupportingREPLs() {
- return PluginManager::GetREPLAllTypeSystemSupportedLanguages();
+ while (REPLEnumerateSupportedLanguages enumerate =
+ PluginManager::GetREPLEnumerateSupportedLanguagesCallbackAtIndex(
+ idx++)) {
+ (*enumerate)(languages);
+ }
}
std::unique_ptr<Language::TypeScavenger> Language::GetTypeScavenger() {
diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp
index 957b97e429d..2368fa18ce7 100644
--- a/lldb/source/Target/Target.cpp
+++ b/lldb/source/Target/Target.cpp
@@ -206,11 +206,13 @@ const lldb::ProcessSP &Target::GetProcessSP() const { return m_process_sp; }
lldb::REPLSP Target::GetREPL(Status &err, lldb::LanguageType language,
const char *repl_options, bool can_create) {
if (language == eLanguageTypeUnknown) {
- LanguageSet repl_languages = Language::GetLanguagesSupportingREPLs();
+ std::set<LanguageType> repl_languages;
- if (auto single_lang = repl_languages.GetSingularLanguage()) {
- language = *single_lang;
- } else if (repl_languages.Empty()) {
+ Language::GetLanguagesSupportingREPLs(repl_languages);
+
+ if (repl_languages.size() == 1) {
+ language = *repl_languages.begin();
+ } else if (repl_languages.size() == 0) {
err.SetErrorStringWithFormat(
"LLDB isn't configured with REPL support for any languages.");
return REPLSP();
@@ -2127,18 +2129,23 @@ Target::GetScratchTypeSystemForLanguage(lldb::LanguageType language,
if (language == eLanguageTypeMipsAssembler // GNU AS and LLVM use it for all
// assembly code
|| language == eLanguageTypeUnknown) {
- LanguageSet languages_for_expressions =
- Language::GetLanguagesSupportingTypeSystemsForExpressions();
+ std::set<lldb::LanguageType> languages_for_types;
+ std::set<lldb::LanguageType> languages_for_expressions;
+
+ Language::GetLanguagesSupportingTypeSystems(languages_for_types,
+ languages_for_expressions);
- if (languages_for_expressions[eLanguageTypeC]) {
+ if (languages_for_expressions.count(eLanguageTypeC)) {
language = eLanguageTypeC; // LLDB's default. Override by setting the
// target language.
} else {
- if (languages_for_expressions.Empty())
+ if (languages_for_expressions.empty()) {
return llvm::make_error<llvm::StringError>(
"No expression support for any languages",
llvm::inconvertibleErrorCode());
- language = (LanguageType)languages_for_expressions.bitvector.find_first();
+ } else {
+ language = *languages_for_expressions.begin();
+ }
}
}
@@ -2152,19 +2159,21 @@ std::vector<TypeSystem *> Target::GetScratchTypeSystems(bool create_on_demand) {
std::vector<TypeSystem *> scratch_type_systems;
- LanguageSet languages_for_expressions =
- Language::GetLanguagesSupportingTypeSystemsForExpressions();
+ std::set<lldb::LanguageType> languages_for_types;
+ std::set<lldb::LanguageType> languages_for_expressions;
+
+ Language::GetLanguagesSupportingTypeSystems(languages_for_types,
+ languages_for_expressions);
- for (auto bit : languages_for_expressions.bitvector.set_bits()) {
- auto language = (LanguageType)bit;
+ for (auto lang : languages_for_expressions) {
auto type_system_or_err =
- GetScratchTypeSystemForLanguage(language, create_on_demand);
+ GetScratchTypeSystemForLanguage(lang, create_on_demand);
if (!type_system_or_err)
LLDB_LOG_ERROR(lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_TARGET),
type_system_or_err.takeError(),
"Language '{}' has expression support but no scratch type "
"system available",
- Language::GetNameForLanguageType(language));
+ Language::GetNameForLanguageType(lang));
else
scratch_type_systems.emplace_back(&type_system_or_err.get());
}
OpenPOWER on IntegriCloud