[Lldb-commits] [lldb] r219423 - Add an API on ValueObject to retrieve the desired dynamic/synthetic combination all at once, if available, working somewhat hard to avoid returning an invalid ValueObject in the process
Eric Christopher
echristo at gmail.com
Fri Oct 10 17:11:47 PDT 2014
On Thu, Oct 9, 2014 at 11:24 AM, Enrico Granata <egranata at apple.com> wrote:
> Author: enrico
> Date: Thu Oct 9 13:24:30 2014
> New Revision: 219423
>
> URL: http://llvm.org/viewvc/llvm-project?rev=219423&view=rev
> Log:
> Add an API on ValueObject to retrieve the desired dynamic/synthetic combination all at once, if available, working somewhat hard to avoid returning an invalid ValueObject in the process
>
> Modified:
> lldb/trunk/include/lldb/Core/ValueObject.h
> lldb/trunk/source/Core/ValueObject.cpp
>
> Modified: lldb/trunk/include/lldb/Core/ValueObject.h
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ValueObject.h?rev=219423&r1=219422&r2=219423&view=diff
> ==============================================================================
> --- lldb/trunk/include/lldb/Core/ValueObject.h (original)
> +++ lldb/trunk/include/lldb/Core/ValueObject.h Thu Oct 9 13:24:30 2014
> @@ -708,6 +708,10 @@ public:
> virtual bool
> IsSynthetic() { return false; }
>
> + lldb::ValueObjectSP
> + GetQualifiedRepresentationIfAvailable (lldb::DynamicValueType dynValue,
> + bool synthValue);
> +
> virtual lldb::ValueObjectSP
> CreateConstantValue (const ConstString &name);
>
>
> Modified: lldb/trunk/source/Core/ValueObject.cpp
> URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObject.cpp?rev=219423&r1=219422&r2=219423&view=diff
> ==============================================================================
> --- lldb/trunk/source/Core/ValueObject.cpp (original)
> +++ lldb/trunk/source/Core/ValueObject.cpp Thu Oct 9 13:24:30 2014
> @@ -3551,6 +3551,56 @@ ValueObject::CreateConstantValue (const
> return valobj_sp;
> }
>
> +ValueObjectSP
> +ValueObject::GetQualifiedRepresentationIfAvailable (lldb::DynamicValueType dynValue,
> + bool synthValue)
> +{
> + ValueObjectSP result_sp(GetSP());
> +
> + switch (dynValue)
> + {
> + case lldb::eDynamicCanRunTarget:
> + case lldb::eDynamicDontRunTarget:
> + {
> + if (!result_sp->IsDynamic())
> + {
> + if (result_sp->GetDynamicValue(dynValue))
> + result_sp = result_sp->GetDynamicValue(dynValue);
> + }
> + }
> + break;
> + case lldb::eNoDynamicValues:
> + default:
This was triggering the warning on a default case in a fully covered
switch. I removed it in:
dzur:~/sources/llvm/tools/lldb> svn ci source/Core/ValueObject.cpp
Sending source/Core/ValueObject.cpp
Transmitting file data .
Committed revision 219548.
-eric
> + {
> + if (result_sp->IsDynamic())
> + {
> + if (result_sp->GetStaticValue())
> + result_sp = result_sp->GetStaticValue();
> + }
> + }
> + break;
> + }
> +
> + if (synthValue)
> + {
> + if (!result_sp->IsSynthetic())
> + {
> + if (result_sp->GetSyntheticValue())
> + result_sp = result_sp->GetSyntheticValue();
> + }
> + }
> + else
> + {
> + if (result_sp->IsSynthetic())
> + {
> + if (result_sp->GetNonSyntheticValue())
> + result_sp = result_sp->GetNonSyntheticValue();
> + }
> + }
> +
> + return result_sp;
> +}
> +
> lldb::addr_t
> ValueObject::GetCPPVTableAddress (AddressType &address_type)
> {
>
>
> _______________________________________________
> lldb-commits mailing list
> lldb-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
More information about the lldb-commits
mailing list