@@ -148,6 +148,41 @@ void Mangled::SetValue(ConstString name) {
148
148
}
149
149
}
150
150
151
+ // BEGIN SWIFT
152
+ #ifdef LLDB_ENABLE_SWIFT
153
+ static ConstString GetSwiftDemangledStr (ConstString m_mangled,
154
+ const SymbolContext *sc,
155
+ ConstString &m_demangled) {
156
+ const char *mangled_name = m_mangled.GetCString ();
157
+ Log *log = GetLog (LLDBLog::Demangle);
158
+ LLDB_LOGF (log, " demangle swift: %s" , mangled_name);
159
+ auto [demangled, info] = SwiftLanguageRuntime::TrackedDemangleSymbolAsString (
160
+ mangled_name, SwiftLanguageRuntime::eSimplified, sc);
161
+ info.PrefixRange .second =
162
+ std::min (info.BasenameRange .first , info.ArgumentsRange .first );
163
+ info.SuffixRange .first =
164
+ std::max (info.BasenameRange .second , info.ArgumentsRange .second );
165
+ info.SuffixRange .second = demangled.length ();
166
+
167
+ // Don't cache the demangled name the function isn't available yet.
168
+ if (!sc || !sc->function ) {
169
+ LLDB_LOGF (log, " demangle swift: %s -> \" %s\" (not cached)" , mangled_name,
170
+ demangled.c_str ());
171
+ return ConstString (demangled);
172
+ }
173
+ if (demangled.empty ()) {
174
+ LLDB_LOGF (log, " demangle swift: %s -> error: failed to demangle" ,
175
+ mangled_name);
176
+ } else {
177
+ LLDB_LOGF (log, " demangle swift: %s -> \" %s\" " , mangled_name,
178
+ demangled.c_str ());
179
+ m_demangled.SetStringWithMangledCounterpart (demangled, m_mangled);
180
+ }
181
+ return m_demangled;
182
+ }
183
+ #endif // LLDB_ENABLE_SWIFT
184
+ // END SWIFT
185
+
151
186
// Local helpers for different demangling implementations.
152
187
static char *GetMSVCDemangledStr (llvm::StringRef M) {
153
188
char *demangled_cstr = llvm::microsoftDemangle (
@@ -349,36 +384,7 @@ ConstString Mangled::GetDemangledNameImpl(bool force, // BEGIN SWIFT
349
384
// Demangling a swift name requires the swift compiler. This is
350
385
// explicitly unsupported on llvm.org.
351
386
#ifdef LLDB_ENABLE_SWIFT
352
- {
353
- const char *mangled_name = m_mangled.GetCString ();
354
- Log *log = GetLog (LLDBLog::Demangle);
355
- LLDB_LOGF (log, " demangle swift: %s" , mangled_name);
356
- auto [demangled, info] =
357
- SwiftLanguageRuntime::TrackedDemangleSymbolAsString (
358
- mangled_name, SwiftLanguageRuntime::eSimplified, sc);
359
- info.PrefixRange .second =
360
- std::min (info.BasenameRange .first , info.ArgumentsRange .first );
361
- info.SuffixRange .first =
362
- std::max (info.BasenameRange .second , info.ArgumentsRange .second );
363
- info.SuffixRange .second = demangled.length ();
364
- m_demangled_info.emplace (info);
365
-
366
- // Don't cache the demangled name the function isn't available yet.
367
- if (!sc || !sc->function ) {
368
- LLDB_LOGF (log, " demangle swift: %s -> \" %s\" (not cached)" , mangled_name,
369
- demangled.c_str ());
370
- return ConstString (demangled);
371
- }
372
- if (demangled.empty ()) {
373
- LLDB_LOGF (log, " demangle swift: %s -> error: failed to demangle" ,
374
- mangled_name);
375
- } else {
376
- LLDB_LOGF (log, " demangle swift: %s -> \" %s\" " , mangled_name,
377
- demangled.c_str ());
378
- m_demangled.SetStringWithMangledCounterpart (demangled, m_mangled);
379
- }
380
- return m_demangled;
381
- }
387
+ return GetSwiftDemangledStr (m_mangled, sc, m_demangled);
382
388
#endif // LLDB_ENABLE_SWIFT
383
389
break ;
384
390
case eManglingSchemeNone:
0 commit comments