[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:16:54 PDT 2014


On Fri, Oct 10, 2014 at 5:16 PM, Enrico Granata <egranata at apple.com> wrote:
> Fair enough.. I guess I would feel better if our enums were enum classes,
> but yeah, good change, no objection! :)
>

Agreed :)

That said, it's a fairly standard warning for the llvm project which
is how I noticed.

-eric

> On Oct 10, 2014, at 5:11 PM, Eric Christopher <echristo at gmail.com> wrote:
>
> 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
>
>
> Thanks,
> - Enrico
> 📩 egranata@.com ☎️ 27683
>
>
>
>




More information about the lldb-commits mailing list