[Lldb-commits] [PATCH] D61776: [Target] Generalize some behavior in Thread
Alex Langford via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Fri May 10 12:14:16 PDT 2019
xiaobai updated this revision to Diff 199048.
xiaobai added a comment.
Add comments to give better context
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D61776/new/
https://reviews.llvm.org/D61776
Files:
source/Target/Thread.cpp
Index: source/Target/Thread.cpp
===================================================================
--- source/Target/Thread.cpp
+++ source/Target/Thread.cpp
@@ -2209,25 +2209,31 @@
if (auto e = recognized_frame->GetExceptionObject())
return e;
- // FIXME: For now, only ObjC exceptions are supported. This should really
- // iterate over all language runtimes and ask them all to give us the current
- // exception.
- if (auto runtime = GetProcess()->GetObjCLanguageRuntime())
- if (auto e = runtime->GetExceptionObjectForThread(shared_from_this()))
- return e;
+ // NOTE: Even though this behavior is generalized, only ObjC is actually
+ // supported at the moment.
+ for (unsigned lang = eLanguageTypeUnknown; lang < eNumLanguageTypes; lang++) {
+ if (auto runtime = GetProcess()->GetLanguageRuntime(
+ static_cast<lldb::LanguageType>(lang)))
+ if (auto e = runtime->GetExceptionObjectForThread(shared_from_this()))
+ return e;
+ }
return ValueObjectSP();
}
ThreadSP Thread::GetCurrentExceptionBacktrace() {
ValueObjectSP exception = GetCurrentException();
- if (!exception) return ThreadSP();
+ if (!exception)
+ return ThreadSP();
- // FIXME: For now, only ObjC exceptions are supported. This should really
- // iterate over all language runtimes and ask them all to give us the current
- // exception.
- auto runtime = GetProcess()->GetObjCLanguageRuntime();
- if (!runtime) return ThreadSP();
+ // NOTE: Even though this behavior is generalized, only ObjC is actually
+ // supported at the moment.
+ for (unsigned lang = eLanguageTypeUnknown; lang < eNumLanguageTypes; lang++) {
+ if (auto runtime = GetProcess()->GetLanguageRuntime(
+ static_cast<lldb::LanguageType>(lang)))
+ if (auto bt = runtime->GetBacktraceThreadFromException(exception))
+ return bt;
+ }
- return runtime->GetBacktraceThreadFromException(exception);
+ return ThreadSP();
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D61776.199048.patch
Type: text/x-patch
Size: 1973 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20190510/2d575120/attachment.bin>
More information about the lldb-commits
mailing list