@@ -796,19 +796,7 @@ static std::string mangledTypenameForTasksTuple(size_t count) {
796796class TaskSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
797797public:
798798 TaskSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp)
799- : SyntheticChildrenFrontEnd(*valobj_sp.get()) {
800- auto target_sp = m_backend.GetTargetSP ();
801- auto ts_or_err =
802- target_sp->GetScratchTypeSystemForLanguage (eLanguageTypeSwift);
803- if (auto err = ts_or_err.takeError ()) {
804- LLDB_LOG_ERROR (GetLog (LLDBLog::DataFormatters | LLDBLog::Types),
805- std::move (err),
806- " could not get Swift type system for Task synthetic "
807- " provider: {0}" );
808- return ;
809- }
810- m_ts = llvm::dyn_cast_or_null<TypeSystemSwiftTypeRef>(ts_or_err->get ());
811- }
799+ : SyntheticChildrenFrontEnd(*valobj_sp.get()) {}
812800
813801 constexpr static StringLiteral TaskChildren[] = {
814802 // clang-format off
@@ -840,11 +828,19 @@ class TaskSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
840828 }
841829
842830 lldb::ValueObjectSP GetChildAtIndex (uint32_t idx) override {
843- auto target_sp = m_backend.GetTargetSP ();
831+ CompilerType type = m_backend.GetCompilerType ();
832+ auto ts = type.GetTypeSystem ().dyn_cast_or_null <TypeSystemSwift>();
833+ if (!ts) {
834+ LLDB_LOG (
835+ GetLog (LLDBLog::DataFormatters | LLDBLog::Types),
836+ " could not get Swift type system for Task synthetic provider: {0}" ,
837+ type.GetMangledTypeName ());
838+ return {};
839+ }
844840
845841 // TypeMangling for "Swift.Bool"
846842 CompilerType bool_type =
847- m_ts ->GetTypeFromMangledTypename (ConstString (" $sSbD" ));
843+ ts ->GetTypeFromMangledTypename (ConstString (" $sSbD" ));
848844
849845#define RETURN_CHILD (FIELD, NAME, TYPE ) \
850846 if (!FIELD) { \
@@ -861,7 +857,7 @@ class TaskSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
861857 if (!m_address_sp) {
862858 // TypeMangling for "Swift.UnsafeRawPointer"
863859 CompilerType raw_pointer_type =
864- m_ts ->GetTypeFromMangledTypename (ConstString (" $sSVD" ));
860+ ts ->GetTypeFromMangledTypename (ConstString (" $sSVD" ));
865861
866862 addr_t value = m_task_ptr;
867863 if (auto process_sp = m_backend.GetProcessSP ())
@@ -877,13 +873,13 @@ class TaskSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
877873 case 1 : {
878874 // TypeMangling for "Swift.UInt64"
879875 CompilerType uint64_type =
880- m_ts ->GetTypeFromMangledTypename (ConstString (" $ss6UInt64VD" ));
876+ ts ->GetTypeFromMangledTypename (ConstString (" $ss6UInt64VD" ));
881877 RETURN_CHILD (m_id_sp, id, uint64_type);
882878 }
883879 case 2 : {
884880 // TypeMangling for "Swift.TaskPriority"
885881 CompilerType priority_type =
886- m_ts ->GetTypeFromMangledTypename (ConstString (" $sScPD" ));
882+ ts ->GetTypeFromMangledTypename (ConstString (" $sScPD" ));
887883 RETURN_CHILD (m_enqueue_priority_sp, enqueuePriority, priority_type);
888884 }
889885 case 3 : {
@@ -894,7 +890,7 @@ class TaskSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
894890
895891 // TypeMangling for "Swift.Optional<Swift.UnsafeRawPointer>"
896892 CompilerType raw_pointer_type =
897- m_ts ->GetTypeFromMangledTypename (ConstString (" $sSVSgD" ));
893+ ts ->GetTypeFromMangledTypename (ConstString (" $sSVSgD" ));
898894
899895 addr_t parent_addr = 0 ;
900896 if (m_task_info.isChildTask ) {
@@ -937,7 +933,7 @@ class TaskSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
937933 std::string mangled_typename =
938934 mangledTypenameForTasksTuple (tasks.size ());
939935 CompilerType tasks_tuple_type =
940- m_ts ->GetTypeFromMangledTypename (ConstString (mangled_typename));
936+ ts ->GetTypeFromMangledTypename (ConstString (mangled_typename));
941937 DataExtractor data{tasks.data (), tasks.size () * sizeof (task_type),
942938 endian::InlHostByteOrder (), sizeof (void *)};
943939 m_child_tasks_sp = ValueObject::CreateValueObjectFromData (
@@ -1026,7 +1022,6 @@ class TaskSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
10261022 return {};
10271023 }
10281024
1029- TypeSystemSwiftTypeRef *m_ts = nullptr ;
10301025 addr_t m_task_ptr = LLDB_INVALID_ADDRESS;
10311026 ReflectionContextInterface::AsyncTaskInfo m_task_info;
10321027 ValueObjectSP m_address_sp;
@@ -1418,20 +1413,6 @@ class ActorSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
14181413 SwiftLanguageRuntime::FindConcurrencyDebugVersion (*process_sp);
14191414
14201415 m_is_supported_target = is_64bit && concurrency_version.value_or (0 ) == 1 ;
1421- if (!m_is_supported_target)
1422- return ;
1423-
1424- auto target_sp = m_backend.GetTargetSP ();
1425- auto ts_or_err =
1426- target_sp->GetScratchTypeSystemForLanguage (eLanguageTypeSwift);
1427- if (auto err = ts_or_err.takeError ()) {
1428- LLDB_LOG_ERROR (GetLog (LLDBLog::DataFormatters | LLDBLog::Types),
1429- std::move (err),
1430- " could not get Swift type system for Task synthetic "
1431- " provider: {0}" );
1432- return ;
1433- }
1434- m_ts = llvm::dyn_cast_or_null<TypeSystemSwiftTypeRef>(ts_or_err->get ());
14351416 }
14361417
14371418 llvm::Expected<uint32_t > CalculateNumChildren () override {
@@ -1442,11 +1423,21 @@ class ActorSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
14421423 if (!m_is_supported_target || idx != 0 )
14431424 return {};
14441425
1426+ CompilerType type = m_backend.GetCompilerType ();
1427+ auto ts = type.GetTypeSystem ().dyn_cast_or_null <TypeSystemSwift>();
1428+ if (!ts) {
1429+ LLDB_LOG (
1430+ GetLog (LLDBLog::DataFormatters | LLDBLog::Types),
1431+ " could not get Swift type system for Actor synthetic provider: {0}" ,
1432+ type.GetMangledTypeName ());
1433+ return {};
1434+ }
1435+
14451436 if (!m_unprioritised_jobs_sp) {
14461437 std::string mangled_typename =
14471438 mangledTypenameForTasksTuple (m_job_addrs.size ());
14481439 CompilerType tasks_tuple_type =
1449- m_ts ->GetTypeFromMangledTypename (ConstString (mangled_typename));
1440+ ts ->GetTypeFromMangledTypename (ConstString (mangled_typename));
14501441 DataExtractor data{m_job_addrs.data (),
14511442 m_job_addrs.size () * sizeof (addr_t ),
14521443 endian::InlHostByteOrder (), sizeof (void *)};
@@ -1556,7 +1547,6 @@ class ActorSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
15561547
15571548private:
15581549 bool m_is_supported_target = false ;
1559- TypeSystemSwiftTypeRef *m_ts = nullptr ;
15601550 std::vector<addr_t > m_job_addrs;
15611551 CompilerType m_task_type;
15621552 ValueObjectSP m_unprioritised_jobs_sp;
0 commit comments