Skip to content

Commit a3b981a

Browse files
committed
Check and support 64bit
1 parent 096e08d commit a3b981a

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

lldb/source/Plugins/Language/Swift/SwiftFormatters.cpp

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -959,13 +959,20 @@ class TaskGroupSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
959959
public:
960960
TaskGroupSyntheticFrontEnd(lldb::ValueObjectSP valobj_sp)
961961
: SyntheticChildrenFrontEnd(*valobj_sp.get()) {
962+
bool is_64bit = false;
963+
if (auto target_sp = m_backend.GetTargetSP())
964+
is_64bit = target_sp->GetArchitecture().GetTriple().isArch64Bit();
965+
966+
std::optional<uint32_t> concurrency_version;
962967
if (auto process_sp = m_backend.GetProcessSP())
963-
m_concurrency_version =
968+
concurrency_version =
964969
SwiftLanguageRuntime::FindConcurrencyDebugVersion(*process_sp);
970+
971+
m_is_supported_target = is_64bit && concurrency_version.value_or(0) == 1;
965972
}
966973

967974
llvm::Expected<uint32_t> CalculateNumChildren() override {
968-
if (m_concurrency_version.value_or(0) != 1)
975+
if (!m_is_supported_target)
969976
return m_backend.GetNumChildren();
970977

971978
return m_task_addrs.size();
@@ -974,7 +981,7 @@ class TaskGroupSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
974981
bool MightHaveChildren() override { return true; }
975982

976983
lldb::ValueObjectSP GetChildAtIndex(uint32_t idx) override {
977-
if (m_concurrency_version.value_or(0) != 1)
984+
if (!m_is_supported_target)
978985
return m_backend.GetChildAtIndex(idx);
979986

980987
if (!m_task_type || idx >= m_task_addrs.size())
@@ -996,7 +1003,7 @@ class TaskGroupSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
9961003
}
9971004

9981005
size_t GetIndexOfChildWithName(ConstString name) override {
999-
if (m_concurrency_version.value_or(0) != 1)
1006+
if (!m_is_supported_target)
10001007
return m_backend.GetIndexOfChildWithName(name);
10011008

10021009
StringRef buf = name.GetStringRef();
@@ -1007,7 +1014,7 @@ class TaskGroupSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
10071014
}
10081015

10091016
lldb::ChildCacheState Update() override {
1010-
if (m_concurrency_version.value_or(0) != 1)
1017+
if (!m_is_supported_target)
10111018
return ChildCacheState::eReuse;
10121019

10131020
m_task_addrs.clear();
@@ -1121,7 +1128,7 @@ class TaskGroupSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
11211128
};
11221129

11231130
private:
1124-
std::optional<uint32_t> m_concurrency_version;
1131+
bool m_is_supported_target = false;
11251132
// Type for Swift.UnsafeCurrentTask.
11261133
CompilerType m_task_type;
11271134
// The TaskGroup's list of child task addresses.

0 commit comments

Comments
 (0)