diff options
author | Enrico Granata <egranata@apple.com> | 2015-02-11 02:35:39 +0000 |
---|---|---|
committer | Enrico Granata <egranata@apple.com> | 2015-02-11 02:35:39 +0000 |
commit | 560558eb7c1deee76a1adb941e001e074dba460d (patch) | |
tree | 361a34a9afb6b9516874d4537736cae2b917806a /lldb/source/Core/ValueObject.cpp | |
parent | 7ad134a7467c97ce9d8ef46fea90267a03c30b30 (diff) | |
download | bcm5719-llvm-560558eb7c1deee76a1adb941e001e074dba460d.tar.gz bcm5719-llvm-560558eb7c1deee76a1adb941e001e074dba460d.zip |
Introduce the notion of "runtime support values"
A runtime support value is a ValueObject whose only purpose is to support some language runtime's operation, but it does not directly provide any user-visible benefit
As such, unless the user is working on the runtime support, it is mostly safe for them not to see such a value when debugging
It is a language runtime's job to check whether a ValueObject is a support value, and that - in conjunction with a target setting - is used by frame variable and target variable
SBFrame::GetVariables gets a new overload with yet another flag to dictate whether to return those support values to the caller - that which defaults to the setting's value
rdar://problem/15539930
llvm-svn: 228791
Diffstat (limited to 'lldb/source/Core/ValueObject.cpp')
-rw-r--r-- | lldb/source/Core/ValueObject.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lldb/source/Core/ValueObject.cpp b/lldb/source/Core/ValueObject.cpp index b72e5c3f18c..ebbcb8ec408 100644 --- a/lldb/source/Core/ValueObject.cpp +++ b/lldb/source/Core/ValueObject.cpp @@ -2064,6 +2064,21 @@ ValueObject::IsPossibleDynamicType () } bool +ValueObject::IsRuntimeSupportValue () +{ + Process *process(GetProcessSP().get()); + if (process) + { + LanguageRuntime *runtime = process->GetLanguageRuntime(GetObjectRuntimeLanguage()); + if (!runtime) + runtime = process->GetObjCLanguageRuntime(); + if (runtime) + return runtime->IsRuntimeSupportValue(*this); + } + return false; +} + +bool ValueObject::IsObjCNil () { const uint32_t mask = eTypeIsObjC | eTypeIsPointer; |