summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/include/lldb/Core/ValueObject.h6
-rw-r--r--lldb/include/lldb/Core/ValueObjectChild.h2
-rw-r--r--lldb/include/lldb/Core/ValueObjectDynamicValue.h4
-rw-r--r--lldb/include/lldb/Core/ValueObjectSyntheticFilter.h4
-rw-r--r--lldb/source/Core/ValueObjectChild.cpp10
5 files changed, 14 insertions, 12 deletions
diff --git a/lldb/include/lldb/Core/ValueObject.h b/lldb/include/lldb/Core/ValueObject.h
index cdc507093b2..a7fb62ee17e 100644
--- a/lldb/include/lldb/Core/ValueObject.h
+++ b/lldb/include/lldb/Core/ValueObject.h
@@ -861,7 +861,7 @@ public:
bool
NeedsUpdating ()
{
- const bool accept_invalid_exe_ctx = CanUpdateWithInvalidExecutionContext();
+ const bool accept_invalid_exe_ctx = (CanUpdateWithInvalidExecutionContext() == eLazyBoolYes);
return m_update_point.NeedsUpdating(accept_invalid_exe_ctx);
}
@@ -1172,10 +1172,10 @@ protected:
virtual bool
UpdateValue () = 0;
- virtual bool
+ virtual LazyBool
CanUpdateWithInvalidExecutionContext ()
{
- return false;
+ return eLazyBoolCalculate;
}
virtual void
diff --git a/lldb/include/lldb/Core/ValueObjectChild.h b/lldb/include/lldb/Core/ValueObjectChild.h
index bf8707ea3b0..b34368cd482 100644
--- a/lldb/include/lldb/Core/ValueObjectChild.h
+++ b/lldb/include/lldb/Core/ValueObjectChild.h
@@ -84,7 +84,7 @@ protected:
virtual bool
UpdateValue ();
- virtual bool
+ virtual LazyBool
CanUpdateWithInvalidExecutionContext ();
virtual ClangASTType
diff --git a/lldb/include/lldb/Core/ValueObjectDynamicValue.h b/lldb/include/lldb/Core/ValueObjectDynamicValue.h
index 8d42706be16..21f5f2f6072 100644
--- a/lldb/include/lldb/Core/ValueObjectDynamicValue.h
+++ b/lldb/include/lldb/Core/ValueObjectDynamicValue.h
@@ -109,10 +109,10 @@ protected:
virtual bool
UpdateValue ();
- virtual bool
+ virtual LazyBool
CanUpdateWithInvalidExecutionContext ()
{
- return true;
+ return eLazyBoolYes;
}
virtual lldb::DynamicValueType
diff --git a/lldb/include/lldb/Core/ValueObjectSyntheticFilter.h b/lldb/include/lldb/Core/ValueObjectSyntheticFilter.h
index 88824ef4fa5..87b30b267f4 100644
--- a/lldb/include/lldb/Core/ValueObjectSyntheticFilter.h
+++ b/lldb/include/lldb/Core/ValueObjectSyntheticFilter.h
@@ -156,10 +156,10 @@ protected:
virtual bool
UpdateValue ();
- virtual bool
+ virtual LazyBool
CanUpdateWithInvalidExecutionContext ()
{
- return true;
+ return eLazyBoolYes;
}
virtual ClangASTType
diff --git a/lldb/source/Core/ValueObjectChild.cpp b/lldb/source/Core/ValueObjectChild.cpp
index c1e45e1f48d..06c311f22cf 100644
--- a/lldb/source/Core/ValueObjectChild.cpp
+++ b/lldb/source/Core/ValueObjectChild.cpp
@@ -109,12 +109,14 @@ ValueObjectChild::GetDisplayTypeName()
return display_name;
}
-bool
+LazyBool
ValueObjectChild::CanUpdateWithInvalidExecutionContext ()
{
- if (m_parent)
- return m_parent->CanUpdateWithInvalidExecutionContext();
- return this->ValueObject::CanUpdateWithInvalidExecutionContext();
+ ValueObject* opinionated_ancestor = FollowParentChain([] (ValueObject* vo) -> bool {
+ return (vo->CanUpdateWithInvalidExecutionContext() == eLazyBoolCalculate);
+ });
+
+ return opinionated_ancestor ? opinionated_ancestor->CanUpdateWithInvalidExecutionContext() : this->ValueObject::CanUpdateWithInvalidExecutionContext();
}
bool
OpenPOWER on IntegriCloud