1254721Semaste//===-- ClangExternalASTSourceCommon.cpp ------------------------*- C++ -*-===// 2254721Semaste// 3254721Semaste// The LLVM Compiler Infrastructure 4254721Semaste// 5254721Semaste// This file is distributed under the University of Illinois Open Source 6254721Semaste// License. See LICENSE.TXT for details. 7254721Semaste// 8254721Semaste//===----------------------------------------------------------------------===// 9254721Semaste 10254721Semaste#include "lldb/Symbol/ClangExternalASTSourceCommon.h" 11254721Semaste#include "lldb/Core/Stream.h" 12254721Semaste 13254721Semasteusing namespace lldb_private; 14254721Semaste 15254721Semaste#define ClangExternalASTSourceCommon_MAGIC (0x00112233aabbccddull) 16254721Semaste 17254721Semasteuint64_t g_TotalSizeOfMetadata = 0; 18254721Semaste 19254721SemasteClangExternalASTSourceCommon::ClangExternalASTSourceCommon() : clang::ExternalASTSource() 20254721Semaste{ 21254721Semaste m_magic = ClangExternalASTSourceCommon_MAGIC; 22254721Semaste 23254721Semaste g_TotalSizeOfMetadata += m_metadata.size(); 24254721Semaste} 25254721Semaste 26254721SemasteClangExternalASTSourceCommon::~ClangExternalASTSourceCommon() 27254721Semaste{ 28254721Semaste g_TotalSizeOfMetadata -= m_metadata.size(); 29254721Semaste} 30254721Semaste 31254721SemasteClangASTMetadata * 32254721SemasteClangExternalASTSourceCommon::GetMetadata (const void *object) 33254721Semaste{ 34254721Semaste assert (m_magic == ClangExternalASTSourceCommon_MAGIC); 35254721Semaste 36254721Semaste if (HasMetadata (object)) 37254721Semaste return &m_metadata[object]; 38254721Semaste else 39254721Semaste return NULL; 40254721Semaste} 41254721Semaste 42254721Semastevoid 43254721SemasteClangExternalASTSourceCommon::SetMetadata (const void *object, ClangASTMetadata &metadata) 44254721Semaste{ 45254721Semaste assert (m_magic == ClangExternalASTSourceCommon_MAGIC); 46254721Semaste 47254721Semaste uint64_t orig_size = m_metadata.size(); 48254721Semaste m_metadata[object] = metadata; 49254721Semaste uint64_t new_size = m_metadata.size(); 50254721Semaste g_TotalSizeOfMetadata += (new_size - orig_size); 51254721Semaste} 52254721Semaste 53254721Semastebool 54254721SemasteClangExternalASTSourceCommon::HasMetadata (const void *object) 55254721Semaste{ 56254721Semaste assert (m_magic == ClangExternalASTSourceCommon_MAGIC); 57254721Semaste 58254721Semaste return m_metadata.find(object) != m_metadata.end(); 59254721Semaste} 60254721Semaste 61254721Semastevoid 62254721SemasteClangASTMetadata::Dump (Stream *s) 63254721Semaste{ 64254721Semaste lldb::user_id_t uid = GetUserID (); 65254721Semaste 66254721Semaste if (uid != LLDB_INVALID_UID) 67254721Semaste { 68254721Semaste s->Printf ("uid=0x%" PRIx64, uid); 69254721Semaste } 70254721Semaste 71254721Semaste uint64_t isa_ptr = GetISAPtr (); 72254721Semaste if (isa_ptr != 0) 73254721Semaste { 74254721Semaste s->Printf ("isa_ptr=0x%" PRIx64, isa_ptr); 75254721Semaste } 76254721Semaste 77254721Semaste const char *obj_ptr_name = GetObjectPtrName(); 78254721Semaste if (obj_ptr_name) 79254721Semaste { 80254721Semaste s->Printf ("obj_ptr_name=\"%s\" ", obj_ptr_name); 81254721Semaste } 82254721Semaste 83254721Semaste if (m_is_dynamic_cxx) 84254721Semaste { 85254721Semaste s->Printf ("is_dynamic_cxx=%i ", m_is_dynamic_cxx); 86254721Semaste } 87254721Semaste s->EOL(); 88254721Semaste} 89254721Semaste 90