//===-- DIERef.cpp ----------------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "DIERef.h" #include "DWARFCompileUnit.h" #include "DWARFFormValue.h" DIERef::DIERef() : cu_offset(DW_INVALID_OFFSET), die_offset(DW_INVALID_OFFSET) {} DIERef::DIERef(dw_offset_t d) : cu_offset(DW_INVALID_OFFSET), die_offset(d) {} DIERef::DIERef(dw_offset_t c, dw_offset_t d) : cu_offset(c), die_offset(d) {} DIERef::DIERef(lldb::user_id_t uid) : cu_offset(uid>>32), die_offset(uid&0xffffffff) {} DIERef::DIERef(const DWARFFormValue& form_value) : cu_offset(DW_INVALID_OFFSET), die_offset(DW_INVALID_OFFSET) { if (form_value.IsValid()) { const DWARFCompileUnit* dwarf_cu = form_value.GetCompileUnit(); if (dwarf_cu) { if (dwarf_cu->GetBaseObjOffset() != DW_INVALID_OFFSET) cu_offset = dwarf_cu->GetBaseObjOffset(); else cu_offset = dwarf_cu->GetOffset(); } die_offset = form_value.Reference(); } } lldb::user_id_t DIERef::GetUID() const { return ((lldb::user_id_t)cu_offset) << 32 | die_offset; }