diff options
Diffstat (limited to 'lldb/source/Target/Process.cpp')
-rw-r--r-- | lldb/source/Target/Process.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp index 5827b3d2604..658204cfbd6 100644 --- a/lldb/source/Target/Process.cpp +++ b/lldb/source/Target/Process.cpp @@ -1573,6 +1573,27 @@ Process::GetObjCLanguageRuntime (bool retry_if_null) return NULL; } +bool +Process::IsPossibleDynamicValue (ValueObject& in_value) +{ + if (in_value.IsDynamic()) + return false; + LanguageType known_type = in_value.GetObjectRuntimeLanguage(); + + if (known_type != eLanguageTypeUnknown && known_type != eLanguageTypeC) + { + LanguageRuntime *runtime = GetLanguageRuntime (known_type); + return runtime ? runtime->CouldHaveDynamicValue(in_value) : false; + } + + LanguageRuntime *cpp_runtime = GetLanguageRuntime (eLanguageTypeC_plus_plus); + if (cpp_runtime && cpp_runtime->CouldHaveDynamicValue(in_value)) + return true; + + LanguageRuntime *objc_runtime = GetLanguageRuntime (eLanguageTypeObjC); + return objc_runtime ? objc_runtime->CouldHaveDynamicValue(in_value) : false; +} + BreakpointSiteList & Process::GetBreakpointSiteList() { |