summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Labath <labath@google.com>2015-07-24 09:52:25 +0000
committerPavel Labath <labath@google.com>2015-07-24 09:52:25 +0000
commitf8b5874b6383bfb06f4258bc906713c2d507c3d5 (patch)
treed5f0cc616f1d7c9a9ba753024770844ea51af043
parent47ce74649ff0f7069024e7334b297acef4ec0bf8 (diff)
downloadbcm5719-llvm-f8b5874b6383bfb06f4258bc906713c2d507c3d5.tar.gz
bcm5719-llvm-f8b5874b6383bfb06f4258bc906713c2d507c3d5.zip
Revert "Fix an issue where LLDB would run out of stack space ..."
This commit introduced an infinite recursion in ValueObjectChild::CanUpdateWithInvalidExecutionContext (because FollowParentChain also considers the current object), which broke nearly all the tests. Ignoring the current object removes the recursion, but two tests still time out (TestDataFormatterLibcxxList.py and TestValueObjectRecursion.py) for some reason. Reverting for now. llvm-svn: 243102
-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, 12 insertions, 14 deletions
diff --git a/lldb/include/lldb/Core/ValueObject.h b/lldb/include/lldb/Core/ValueObject.h
index a7fb62ee17e..cdc507093b2 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() == eLazyBoolYes);
+ const bool accept_invalid_exe_ctx = CanUpdateWithInvalidExecutionContext();
return m_update_point.NeedsUpdating(accept_invalid_exe_ctx);
}
@@ -1172,10 +1172,10 @@ protected:
virtual bool
UpdateValue () = 0;
- virtual LazyBool
+ virtual bool
CanUpdateWithInvalidExecutionContext ()
{
- return eLazyBoolCalculate;
+ return false;
}
virtual void
diff --git a/lldb/include/lldb/Core/ValueObjectChild.h b/lldb/include/lldb/Core/ValueObjectChild.h
index b34368cd482..bf8707ea3b0 100644
--- a/lldb/include/lldb/Core/ValueObjectChild.h
+++ b/lldb/include/lldb/Core/ValueObjectChild.h
@@ -84,7 +84,7 @@ protected:
virtual bool
UpdateValue ();
- virtual LazyBool
+ virtual bool
CanUpdateWithInvalidExecutionContext ();
virtual ClangASTType
diff --git a/lldb/include/lldb/Core/ValueObjectDynamicValue.h b/lldb/include/lldb/Core/ValueObjectDynamicValue.h
index 21f5f2f6072..8d42706be16 100644
--- a/lldb/include/lldb/Core/ValueObjectDynamicValue.h
+++ b/lldb/include/lldb/Core/ValueObjectDynamicValue.h
@@ -109,10 +109,10 @@ protected:
virtual bool
UpdateValue ();
- virtual LazyBool
+ virtual bool
CanUpdateWithInvalidExecutionContext ()
{
- return eLazyBoolYes;
+ return true;
}
virtual lldb::DynamicValueType
diff --git a/lldb/include/lldb/Core/ValueObjectSyntheticFilter.h b/lldb/include/lldb/Core/ValueObjectSyntheticFilter.h
index 87b30b267f4..88824ef4fa5 100644
--- a/lldb/include/lldb/Core/ValueObjectSyntheticFilter.h
+++ b/lldb/include/lldb/Core/ValueObjectSyntheticFilter.h
@@ -156,10 +156,10 @@ protected:
virtual bool
UpdateValue ();
- virtual LazyBool
+ virtual bool
CanUpdateWithInvalidExecutionContext ()
{
- return eLazyBoolYes;
+ return true;
}
virtual ClangASTType
diff --git a/lldb/source/Core/ValueObjectChild.cpp b/lldb/source/Core/ValueObjectChild.cpp
index 06c311f22cf..c1e45e1f48d 100644
--- a/lldb/source/Core/ValueObjectChild.cpp
+++ b/lldb/source/Core/ValueObjectChild.cpp
@@ -109,14 +109,12 @@ ValueObjectChild::GetDisplayTypeName()
return display_name;
}
-LazyBool
+bool
ValueObjectChild::CanUpdateWithInvalidExecutionContext ()
{
- ValueObject* opinionated_ancestor = FollowParentChain([] (ValueObject* vo) -> bool {
- return (vo->CanUpdateWithInvalidExecutionContext() == eLazyBoolCalculate);
- });
-
- return opinionated_ancestor ? opinionated_ancestor->CanUpdateWithInvalidExecutionContext() : this->ValueObject::CanUpdateWithInvalidExecutionContext();
+ if (m_parent)
+ return m_parent->CanUpdateWithInvalidExecutionContext();
+ return this->ValueObject::CanUpdateWithInvalidExecutionContext();
}
bool
OpenPOWER on IntegriCloud