diff options
| author | Bill Wendling <isanbard@gmail.com> | 2012-04-18 21:39:23 +0000 |
|---|---|---|
| committer | Bill Wendling <isanbard@gmail.com> | 2012-04-18 21:39:23 +0000 |
| commit | 392e4fbdd9b152efff4c051286f6b2c21270c902 (patch) | |
| tree | 4ac339be2c4c7c596f068b59d5e512b157c7b433 /lldb/source/Target/StackID.cpp | |
| parent | eb1c2bdc1f55fbc5d1e7bb86e9f0e038b0f5adb7 (diff) | |
Creating release_31 branchllvmorg-3.1.0-rc1
llvm-svn: 155059
llvm-svn: 155053
llvm-svn: 155051
Diffstat (limited to 'lldb/source/Target/StackID.cpp')
| -rw-r--r-- | lldb/source/Target/StackID.cpp | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/lldb/source/Target/StackID.cpp b/lldb/source/Target/StackID.cpp deleted file mode 100644 index 1b55b722d3c2..000000000000 --- a/lldb/source/Target/StackID.cpp +++ /dev/null @@ -1,110 +0,0 @@ -//===-- StackID.cpp ---------------------------------------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "lldb/Target/StackID.h" - -// C Includes -// C++ Includes -// Other libraries and framework includes -// Project includes -#include "lldb/Core/Stream.h" -#include "lldb/Symbol/Block.h" -#include "lldb/Symbol/Symbol.h" -#include "lldb/Symbol/SymbolContext.h" - -using namespace lldb_private; - - -void -StackID::Dump (Stream *s) -{ - s->Printf("StackID (pc = 0x%16.16llx, cfa = 0x%16.16llx, symbol_scope = %p", (uint64_t)m_pc, (uint64_t)m_cfa, m_symbol_scope); - if (m_symbol_scope) - { - SymbolContext sc; - - m_symbol_scope->CalculateSymbolContext (&sc); - if (sc.block) - s->Printf(" (Block {0x%8.8llx})", sc.block->GetID()); - else if (sc.symbol) - s->Printf(" (Symbol{0x%8.8x})", sc.symbol->GetID()); - } - s->PutCString(") "); -} - -bool -lldb_private::operator== (const StackID& lhs, const StackID& rhs) -{ - if (lhs.GetCallFrameAddress() != rhs.GetCallFrameAddress()) - return false; - - SymbolContextScope *lhs_scope = lhs.GetSymbolContextScope(); - SymbolContextScope *rhs_scope = rhs.GetSymbolContextScope(); - - // Only compare the PC values if both symbol context scopes are NULL - if (lhs_scope == NULL && rhs_scope == NULL) - return lhs.GetPC() == rhs.GetPC(); - - return lhs_scope == rhs_scope; -} - -bool -lldb_private::operator!= (const StackID& lhs, const StackID& rhs) -{ - if (lhs.GetCallFrameAddress() != rhs.GetCallFrameAddress()) - return true; - - SymbolContextScope *lhs_scope = lhs.GetSymbolContextScope(); - SymbolContextScope *rhs_scope = rhs.GetSymbolContextScope(); - - if (lhs_scope == NULL && rhs_scope == NULL) - return lhs.GetPC() != rhs.GetPC(); - - return lhs_scope != rhs_scope; -} - -bool -lldb_private::operator< (const StackID& lhs, const StackID& rhs) -{ - const lldb::addr_t lhs_cfa = lhs.GetCallFrameAddress(); - const lldb::addr_t rhs_cfa = rhs.GetCallFrameAddress(); - - // FIXME: We are assuming that the stacks grow downward in memory. That's not necessary, but true on - // all the machines we care about at present. If this changes, we'll have to deal with that. The ABI is the - // agent who knows this ordering, but the StackID has no access to the ABI. The most straightforward way - // to handle this is to add a "m_grows_downward" bool to the StackID, and set it in the constructor. - // But I'm not going to waste a bool per StackID on this till we need it. - - if (lhs_cfa != rhs_cfa) - return lhs_cfa < rhs_cfa; - - SymbolContextScope *lhs_scope = lhs.GetSymbolContextScope(); - SymbolContextScope *rhs_scope = rhs.GetSymbolContextScope(); - - if (lhs_scope != NULL && rhs_scope != NULL) - { - // Same exact scope, lhs is not less than (younger than rhs) - if (lhs_scope == rhs_scope) - return false; - - SymbolContext lhs_sc; - SymbolContext rhs_sc; - lhs_scope->CalculateSymbolContext (&lhs_sc); - rhs_scope->CalculateSymbolContext (&rhs_sc); - - // Items with the same function can only be compared - if (lhs_sc.function == rhs_sc.function && - lhs_sc.function != NULL && lhs_sc.block != NULL && - rhs_sc.function != NULL && rhs_sc.block != NULL) - { - return rhs_sc.block->Contains (lhs_sc.block); - } - } - return false; -} |
