Author: enrico Date: Mon Nov 9 17:07:55 2015 New Revision: 252529 URL: http://llvm.org/viewvc/llvm-project?rev=252529&view=rev Log: Rework the way in which ValueObjectChild decides how to update itself; this is a slight refactoring that I need as part of a larger master plan. As such, should be NFC
Modified: lldb/trunk/include/lldb/Symbol/CompilerType.h lldb/trunk/include/lldb/Symbol/TypeSystem.h lldb/trunk/include/lldb/lldb-enumerations.h lldb/trunk/source/Core/ValueObjectChild.cpp lldb/trunk/source/Symbol/CompilerType.cpp Modified: lldb/trunk/include/lldb/Symbol/CompilerType.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/CompilerType.h?rev=252529&r1=252528&r2=252529&view=diff ============================================================================== --- lldb/trunk/include/lldb/Symbol/CompilerType.h (original) +++ lldb/trunk/include/lldb/Symbol/CompilerType.h Mon Nov 9 17:07:55 2015 @@ -179,6 +179,9 @@ public: bool IsReferenceType(CompilerType *pointee_type = nullptr, bool* is_rvalue = nullptr) const; + + bool + ShouldTreatScalarValueAsAddress () const; bool IsScalarType () const; Modified: lldb/trunk/include/lldb/Symbol/TypeSystem.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/TypeSystem.h?rev=252529&r1=252528&r2=252529&view=diff ============================================================================== --- lldb/trunk/include/lldb/Symbol/TypeSystem.h (original) +++ lldb/trunk/include/lldb/Symbol/TypeSystem.h Mon Nov 9 17:07:55 2015 @@ -496,6 +496,12 @@ public: virtual bool IsReferenceType (lldb::opaque_compiler_type_t type, CompilerType *pointee_type, bool* is_rvalue) = 0; + virtual bool + ShouldTreatScalarValueAsAddress (lldb::opaque_compiler_type_t type) + { + return IsPointerOrReferenceType(type, nullptr); + } + virtual UserExpression * GetUserExpression (const char *expr, const char *expr_prefix, Modified: lldb/trunk/include/lldb/lldb-enumerations.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/lldb-enumerations.h?rev=252529&r1=252528&r2=252529&view=diff ============================================================================== --- lldb/trunk/include/lldb/lldb-enumerations.h (original) +++ lldb/trunk/include/lldb/lldb-enumerations.h Mon Nov 9 17:07:55 2015 @@ -960,7 +960,8 @@ namespace lldb { eTypeIsInteger = (1u << 18), eTypeIsFloat = (1u << 19), eTypeIsComplex = (1u << 20), - eTypeIsSigned = (1u << 21) + eTypeIsSigned = (1u << 21), + eTypeInstanceIsPointer = (1u << 22) }; FLAGS_ENUM(CommandFlags) Modified: lldb/trunk/source/Core/ValueObjectChild.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObjectChild.cpp?rev=252529&r1=252528&r2=252529&view=diff ============================================================================== --- lldb/trunk/source/Core/ValueObjectChild.cpp (original) +++ lldb/trunk/source/Core/ValueObjectChild.cpp Mon Nov 9 17:07:55 2015 @@ -146,7 +146,7 @@ ValueObjectChild::UpdateValue () Value::ValueType value_type = parent->GetValue().GetValueType(); m_value.SetValueType (value_type); - if (parent->GetCompilerType().IsPointerOrReferenceType ()) + if (parent->GetCompilerType().ShouldTreatScalarValueAsAddress()) { lldb::addr_t addr = parent->GetPointerValue (); m_value.GetScalar() = addr; Modified: lldb/trunk/source/Symbol/CompilerType.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/CompilerType.cpp?rev=252529&r1=252528&r2=252529&view=diff ============================================================================== --- lldb/trunk/source/Symbol/CompilerType.cpp (original) +++ lldb/trunk/source/Symbol/CompilerType.cpp Mon Nov 9 17:07:55 2015 @@ -227,6 +227,14 @@ CompilerType::IsReferenceType (CompilerT } bool +CompilerType::ShouldTreatScalarValueAsAddress () const +{ + if (IsValid()) + return m_type_system->ShouldTreatScalarValueAsAddress(m_type); + return false; +} + +bool CompilerType::IsFloatingPointType (uint32_t &count, bool &is_complex) const { if (IsValid()) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits