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
This commit is contained in:
Pavel Labath 2015-07-24 09:52:25 +00:00
parent 47ce74649f
commit f8b5874b63
5 changed files with 12 additions and 14 deletions

View File

@ -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

View File

@ -84,7 +84,7 @@ protected:
virtual bool
UpdateValue ();
virtual LazyBool
virtual bool
CanUpdateWithInvalidExecutionContext ();
virtual ClangASTType

View File

@ -109,10 +109,10 @@ protected:
virtual bool
UpdateValue ();
virtual LazyBool
virtual bool
CanUpdateWithInvalidExecutionContext ()
{
return eLazyBoolYes;
return true;
}
virtual lldb::DynamicValueType

View File

@ -156,10 +156,10 @@ protected:
virtual bool
UpdateValue ();
virtual LazyBool
virtual bool
CanUpdateWithInvalidExecutionContext ()
{
return eLazyBoolYes;
return true;
}
virtual ClangASTType

View File

@ -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