[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