diff options
author | Pavel Labath <labath@google.com> | 2015-07-24 09:52:25 +0000 |
---|---|---|
committer | Pavel Labath <labath@google.com> | 2015-07-24 09:52:25 +0000 |
commit | f8b5874b6383bfb06f4258bc906713c2d507c3d5 (patch) | |
tree | d5f0cc616f1d7c9a9ba753024770844ea51af043 | |
parent | 47ce74649ff0f7069024e7334b297acef4ec0bf8 (diff) | |
download | bcm5719-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.h | 6 | ||||
-rw-r--r-- | lldb/include/lldb/Core/ValueObjectChild.h | 2 | ||||
-rw-r--r-- | lldb/include/lldb/Core/ValueObjectDynamicValue.h | 4 | ||||
-rw-r--r-- | lldb/include/lldb/Core/ValueObjectSyntheticFilter.h | 4 | ||||
-rw-r--r-- | lldb/source/Core/ValueObjectChild.cpp | 10 |
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 |