1*30fdc8d8SChris Lattner //===-- StackID.cpp ---------------------------------------------*- C++ -*-===// 2*30fdc8d8SChris Lattner // 3*30fdc8d8SChris Lattner // The LLVM Compiler Infrastructure 4*30fdc8d8SChris Lattner // 5*30fdc8d8SChris Lattner // This file is distributed under the University of Illinois Open Source 6*30fdc8d8SChris Lattner // License. See LICENSE.TXT for details. 7*30fdc8d8SChris Lattner // 8*30fdc8d8SChris Lattner //===----------------------------------------------------------------------===// 9*30fdc8d8SChris Lattner 10*30fdc8d8SChris Lattner #include "lldb/Target/StackID.h" 11*30fdc8d8SChris Lattner 12*30fdc8d8SChris Lattner // C Includes 13*30fdc8d8SChris Lattner // C++ Includes 14*30fdc8d8SChris Lattner // Other libraries and framework includes 15*30fdc8d8SChris Lattner // Project includes 16*30fdc8d8SChris Lattner 17*30fdc8d8SChris Lattner using namespace lldb_private; 18*30fdc8d8SChris Lattner 19*30fdc8d8SChris Lattner //---------------------------------------------------------------------- 20*30fdc8d8SChris Lattner // StackID constructor 21*30fdc8d8SChris Lattner //---------------------------------------------------------------------- 22*30fdc8d8SChris Lattner StackID::StackID() : 23*30fdc8d8SChris Lattner m_start_address(), 24*30fdc8d8SChris Lattner m_cfa() 25*30fdc8d8SChris Lattner { 26*30fdc8d8SChris Lattner } 27*30fdc8d8SChris Lattner 28*30fdc8d8SChris Lattner //---------------------------------------------------------------------- 29*30fdc8d8SChris Lattner // StackID constructor with args 30*30fdc8d8SChris Lattner //---------------------------------------------------------------------- 31*30fdc8d8SChris Lattner StackID::StackID (const Address& start_address, lldb::addr_t cfa) : 32*30fdc8d8SChris Lattner m_start_address (start_address), 33*30fdc8d8SChris Lattner m_cfa (cfa) 34*30fdc8d8SChris Lattner { 35*30fdc8d8SChris Lattner } 36*30fdc8d8SChris Lattner 37*30fdc8d8SChris Lattner StackID::StackID (lldb::addr_t cfa) : 38*30fdc8d8SChris Lattner m_start_address (), 39*30fdc8d8SChris Lattner m_cfa (cfa) 40*30fdc8d8SChris Lattner { 41*30fdc8d8SChris Lattner } 42*30fdc8d8SChris Lattner 43*30fdc8d8SChris Lattner //---------------------------------------------------------------------- 44*30fdc8d8SChris Lattner // StackID copy constructor 45*30fdc8d8SChris Lattner //---------------------------------------------------------------------- 46*30fdc8d8SChris Lattner StackID::StackID(const StackID& rhs) : 47*30fdc8d8SChris Lattner m_start_address (rhs.m_start_address), 48*30fdc8d8SChris Lattner m_cfa (rhs.m_cfa) 49*30fdc8d8SChris Lattner { 50*30fdc8d8SChris Lattner } 51*30fdc8d8SChris Lattner 52*30fdc8d8SChris Lattner //---------------------------------------------------------------------- 53*30fdc8d8SChris Lattner // StackID assignment operator 54*30fdc8d8SChris Lattner //---------------------------------------------------------------------- 55*30fdc8d8SChris Lattner const StackID& 56*30fdc8d8SChris Lattner StackID::operator=(const StackID& rhs) 57*30fdc8d8SChris Lattner { 58*30fdc8d8SChris Lattner if (this != &rhs) 59*30fdc8d8SChris Lattner { 60*30fdc8d8SChris Lattner m_start_address = rhs.m_start_address; 61*30fdc8d8SChris Lattner m_cfa = rhs.m_cfa; 62*30fdc8d8SChris Lattner } 63*30fdc8d8SChris Lattner return *this; 64*30fdc8d8SChris Lattner } 65*30fdc8d8SChris Lattner 66*30fdc8d8SChris Lattner //---------------------------------------------------------------------- 67*30fdc8d8SChris Lattner // Destructor 68*30fdc8d8SChris Lattner //---------------------------------------------------------------------- 69*30fdc8d8SChris Lattner StackID::~StackID() 70*30fdc8d8SChris Lattner { 71*30fdc8d8SChris Lattner } 72*30fdc8d8SChris Lattner 73*30fdc8d8SChris Lattner 74*30fdc8d8SChris Lattner const Address& 75*30fdc8d8SChris Lattner StackID::GetStartAddress() const 76*30fdc8d8SChris Lattner { 77*30fdc8d8SChris Lattner return m_start_address; 78*30fdc8d8SChris Lattner } 79*30fdc8d8SChris Lattner 80*30fdc8d8SChris Lattner void 81*30fdc8d8SChris Lattner StackID::SetStartAddress(const Address& start_address) 82*30fdc8d8SChris Lattner { 83*30fdc8d8SChris Lattner m_start_address = start_address; 84*30fdc8d8SChris Lattner } 85*30fdc8d8SChris Lattner 86*30fdc8d8SChris Lattner lldb::addr_t 87*30fdc8d8SChris Lattner StackID::GetCallFrameAddress() const 88*30fdc8d8SChris Lattner { 89*30fdc8d8SChris Lattner return m_cfa; 90*30fdc8d8SChris Lattner } 91*30fdc8d8SChris Lattner 92*30fdc8d8SChris Lattner 93*30fdc8d8SChris Lattner bool 94*30fdc8d8SChris Lattner lldb_private::operator== (const StackID& lhs, const StackID& rhs) 95*30fdc8d8SChris Lattner { 96*30fdc8d8SChris Lattner return lhs.GetCallFrameAddress() == rhs.GetCallFrameAddress() && lhs.GetStartAddress() == rhs.GetStartAddress(); 97*30fdc8d8SChris Lattner } 98*30fdc8d8SChris Lattner 99*30fdc8d8SChris Lattner bool 100*30fdc8d8SChris Lattner lldb_private::operator!= (const StackID& lhs, const StackID& rhs) 101*30fdc8d8SChris Lattner { 102*30fdc8d8SChris Lattner return lhs.GetCallFrameAddress() != rhs.GetCallFrameAddress() || lhs.GetStartAddress() != rhs.GetStartAddress(); 103*30fdc8d8SChris Lattner } 104*30fdc8d8SChris Lattner 105*30fdc8d8SChris Lattner bool 106*30fdc8d8SChris Lattner lldb_private::operator< (const StackID& lhs, const StackID& rhs) 107*30fdc8d8SChris Lattner { 108*30fdc8d8SChris Lattner return lhs.GetCallFrameAddress() < rhs.GetCallFrameAddress(); 109*30fdc8d8SChris Lattner } 110*30fdc8d8SChris Lattner 111