Author: jmolenda
Date: Tue Nov 11 02:26:44 2014
New Revision: 221677

URL: http://llvm.org/viewvc/llvm-project?rev=221677&view=rev
Log:
Add an operator== to the RegisterNumber class; it simplifies
RegisterContextLLDB a bit more in a few places.

Modified:
    lldb/trunk/source/Plugins/Process/Utility/RegisterContextLLDB.cpp
    lldb/trunk/source/Plugins/Process/Utility/RegisterContextLLDB.h

Modified: lldb/trunk/source/Plugins/Process/Utility/RegisterContextLLDB.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Utility/RegisterContextLLDB.cpp?rev=221677&r1=221676&r2=221677&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/Utility/RegisterContextLLDB.cpp (original)
+++ lldb/trunk/source/Plugins/Process/Utility/RegisterContextLLDB.cpp Tue Nov 
11 02:26:44 2014
@@ -1196,8 +1196,8 @@ RegisterContextLLDB::SavedLocationForReg
 
             // If we're fetching the saved pc and this UnwindPlan defines a 
ReturnAddress register (e.g. lr on arm),
             // look for the return address register number in the UnwindPlan's 
row.
-            if (pc_regnum.GetAsKind (eRegisterKindLLDB) != LLDB_INVALID_REGNUM
-                && pc_regnum.GetAsKind (eRegisterKindLLDB) == regnum.GetAsKind 
(eRegisterKindLLDB)
+            if (pc_regnum.IsValid()
+                && pc_regnum == regnum
                 && m_full_unwind_plan_sp->GetReturnAddressRegister() != 
LLDB_INVALID_REGNUM)
             {
                 
@@ -1211,12 +1211,13 @@ RegisterContextLLDB::SavedLocationForReg
                 {
                     if (unwindplan_registerkind == eRegisterKindGeneric)
                     {
-                        UnwindLogMsg ("could not convert lldb regnum %s (%d) 
into eRegisterKindGeneric reg numbering scheme", regnum.GetName(), 
regnum.GetAsKind (eRegisterKindLLDB));
+                        UnwindLogMsg ("could not convert lldb regnum %s (%d) 
into eRegisterKindGeneric reg numbering scheme", 
+                                      regnum.GetName(), regnum.GetAsKind 
(eRegisterKindLLDB));
                     }
                     else
                     {
                         UnwindLogMsg ("could not convert lldb regnum %s (%d) 
into %d RegisterKind reg numbering scheme",
-                                regnum.GetName(), regnum.GetAsKind 
(eRegisterKindLLDB), (int) unwindplan_registerkind);
+                                    regnum.GetName(), regnum.GetAsKind 
(eRegisterKindLLDB), (int) unwindplan_registerkind);
                     }
                     return UnwindLLDB::RegisterSearchResult::eRegisterNotFound;
                 }
@@ -1268,8 +1269,7 @@ RegisterContextLLDB::SavedLocationForReg
             RegisterNumber arch_default_ra_regnum (m_thread, 
eRegisterKindGeneric, LLDB_REGNUM_GENERIC_RA);
 
             if (arch_default_ra_regnum.GetAsKind (unwindplan_registerkind) != 
LLDB_INVALID_REGNUM
-                && pc_regnum.GetAsKind (eRegisterKindLLDB) != 
LLDB_INVALID_REGNUM
-                && pc_regnum.GetAsKind (eRegisterKindLLDB) == regnum.GetAsKind 
(eRegisterKindLLDB)
+                && pc_regnum == regnum
                 && unwindplan_regloc.IsInOtherRegister()
                 && unwindplan_regloc.GetRegisterNumber() == 
arch_default_ra_regnum.GetAsKind (unwindplan_registerkind)
                 && m_full_unwind_plan_sp->GetSourcedFromCompiler() != 
eLazyBoolYes

Modified: lldb/trunk/source/Plugins/Process/Utility/RegisterContextLLDB.h
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Utility/RegisterContextLLDB.h?rev=221677&r1=221676&r2=221677&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/Utility/RegisterContextLLDB.h (original)
+++ lldb/trunk/source/Plugins/Process/Utility/RegisterContextLLDB.h Tue Nov 11 
02:26:44 2014
@@ -114,6 +114,10 @@ private:
             }
         }
 
+        // This constructor plus the init() method below allow for the 
placeholder
+        // creation of an invalid object initially, possibly to be filled in.  
It
+        // would be more consistent to have three Set* methods to set the three
+        // data that the object needs.
         RegisterNumber () :
             m_reg_ctx_sp(),
             m_regnum (LLDB_INVALID_REGNUM),
@@ -152,7 +156,39 @@ private:
         }
 
         bool
-        IsValid ()
+        operator == (RegisterNumber &rhs)
+        {
+            if (IsValid() != rhs.IsValid())
+                return false;
+
+            if (m_kind == rhs.m_kind)
+            {
+                if (m_regnum == rhs.m_regnum)
+                    return true;
+                else
+                    return false;
+            }
+
+            uint32_t rhs_regnum = rhs.GetAsKind (m_kind);
+            if (rhs_regnum != LLDB_INVALID_REGNUM)
+            {
+                if (m_regnum == rhs_regnum)
+                    return true;
+                else
+                    return false;
+            }
+            uint32_t lhs_regnum = GetAsKind (rhs.m_kind);
+            {
+                if (lhs_regnum == rhs.m_regnum)
+                    return true;
+                else 
+                    return false;
+            }
+            return false;
+        }
+
+        bool
+        IsValid () const
         {
             return m_regnum != LLDB_INVALID_REGNUM;
         }


_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

Reply via email to