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(); }
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(); }
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits