diff options
| author | Enrico Granata <egranata@apple.com> | 2015-11-13 21:55:41 +0000 |
|---|---|---|
| committer | Enrico Granata <egranata@apple.com> | 2015-11-13 21:55:41 +0000 |
| commit | 89d8ef7ee3007e39eff871e310086a90da46ab13 (patch) | |
| tree | 9045be73769fa42bad513b306ebc00d4e339efdd /lldb/source/DataFormatters | |
| parent | 8f186f85743f9465411638af9805a84e1f401112 (diff) | |
| download | bcm5719-llvm-89d8ef7ee3007e39eff871e310086a90da46ab13.tar.gz bcm5719-llvm-89d8ef7ee3007e39eff871e310086a90da46ab13.zip | |
Upstream some data formatter related cleanups
llvm-svn: 253093
Diffstat (limited to 'lldb/source/DataFormatters')
| -rw-r--r-- | lldb/source/DataFormatters/FormattersHelpers.cpp | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/lldb/source/DataFormatters/FormattersHelpers.cpp b/lldb/source/DataFormatters/FormattersHelpers.cpp index 900fd32c810..4b0e82e975e 100644 --- a/lldb/source/DataFormatters/FormattersHelpers.cpp +++ b/lldb/source/DataFormatters/FormattersHelpers.cpp @@ -173,7 +173,10 @@ lldb_private::formatters::ExtractValueFromObjCExpression (ValueObject &valobj, options.SetCoerceToId(false); options.SetUnwindOnError(true); options.SetKeepInMemory(true); - + options.SetLanguage(lldb::eLanguageTypeObjC_plus_plus); + options.SetResultIsInternal(true); + options.SetUseDynamic(lldb::eDynamicCanRunTarget); + target->EvaluateExpression(expr.GetData(), stack_frame, result_sp, @@ -233,10 +236,12 @@ lldb_private::formatters::CallSelectorOnObject (ValueObject &valobj, return valobj_sp; if (!selector || !*selector) return valobj_sp; - StreamString expr_path_stream; - valobj.GetExpressionPath(expr_path_stream, false); StreamString expr; - expr.Printf("(%s)[%s %s:%" PRId64 "]",return_type,expr_path_stream.GetData(),selector,index); + const char *colon = ""; + llvm::StringRef selector_sr(selector); + if (selector_sr.back() != ':') + colon = ":"; + expr.Printf("(%s)[(id)0x%" PRIx64 " %s%s%" PRId64 "]",return_type,valobj.GetPointerValue(),selector,colon,index); ExecutionContext exe_ctx (valobj.GetExecutionContextRef()); lldb::ValueObjectSP result_sp; Target* target = exe_ctx.GetTargetPtr(); @@ -248,6 +253,8 @@ lldb_private::formatters::CallSelectorOnObject (ValueObject &valobj, options.SetCoerceToId(false); options.SetUnwindOnError(true); options.SetKeepInMemory(true); + options.SetLanguage(lldb::eLanguageTypeObjC_plus_plus); + options.SetResultIsInternal(true); options.SetUseDynamic(lldb::eDynamicCanRunTarget); target->EvaluateExpression(expr.GetData(), @@ -270,10 +277,12 @@ lldb_private::formatters::CallSelectorOnObject (ValueObject &valobj, return valobj_sp; if (!key || !*key) return valobj_sp; - StreamString expr_path_stream; - valobj.GetExpressionPath(expr_path_stream, false); StreamString expr; - expr.Printf("(%s)[%s %s:%s]",return_type,expr_path_stream.GetData(),selector,key); + const char *colon = ""; + llvm::StringRef selector_sr(selector); + if (selector_sr.back() != ':') + colon = ":"; + expr.Printf("(%s)[(id)0x%" PRIx64 " %s%s%s]",return_type,valobj.GetPointerValue(),selector,colon,key); ExecutionContext exe_ctx (valobj.GetExecutionContextRef()); lldb::ValueObjectSP result_sp; Target* target = exe_ctx.GetTargetPtr(); @@ -285,6 +294,8 @@ lldb_private::formatters::CallSelectorOnObject (ValueObject &valobj, options.SetCoerceToId(false); options.SetUnwindOnError(true); options.SetKeepInMemory(true); + options.SetLanguage(lldb::eLanguageTypeObjC_plus_plus); + options.SetResultIsInternal(true); options.SetUseDynamic(lldb::eDynamicCanRunTarget); target->EvaluateExpression(expr.GetData(), |

