MC: Eliminate MC{Fragment,{Section,Symbol}Data}::getAddress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99467 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Daniel Dunbar 2010-03-25 01:03:24 +00:00
parent e9cfd685f5
commit 7c3d45a03e
2 changed files with 11 additions and 22 deletions

View File

@ -57,6 +57,8 @@ public:
}; };
class MCFragment : public ilist_node<MCFragment> { class MCFragment : public ilist_node<MCFragment> {
friend class MCAsmLayout;
MCFragment(const MCFragment&); // DO NOT IMPLEMENT MCFragment(const MCFragment&); // DO NOT IMPLEMENT
void operator=(const MCFragment&); // DO NOT IMPLEMENT void operator=(const MCFragment&); // DO NOT IMPLEMENT
@ -108,8 +110,6 @@ public:
// //
// FIXME: This could all be kept private to the assembler implementation. // FIXME: This could all be kept private to the assembler implementation.
uint64_t getAddress() const;
uint64_t getFileSize() const { uint64_t getFileSize() const {
assert(FileSize != ~UINT64_C(0) && "File size not set!"); assert(FileSize != ~UINT64_C(0) && "File size not set!");
return FileSize; return FileSize;
@ -390,6 +390,8 @@ public:
// we anticipate the fast path being through an MCAssembler, the only reason to // we anticipate the fast path being through an MCAssembler, the only reason to
// keep it out is for API abstraction. // keep it out is for API abstraction.
class MCSectionData : public ilist_node<MCSectionData> { class MCSectionData : public ilist_node<MCSectionData> {
friend class MCAsmLayout;
MCSectionData(const MCSectionData&); // DO NOT IMPLEMENT MCSectionData(const MCSectionData&); // DO NOT IMPLEMENT
void operator=(const MCSectionData&); // DO NOT IMPLEMENT void operator=(const MCSectionData&); // DO NOT IMPLEMENT
@ -469,12 +471,6 @@ public:
// //
// FIXME: This could all be kept private to the assembler implementation. // FIXME: This could all be kept private to the assembler implementation.
uint64_t getAddress() const {
assert(Address != ~UINT64_C(0) && "Address not set!");
return Address;
}
void setAddress(uint64_t Value) { Address = Value; }
uint64_t getSize() const { uint64_t getSize() const {
assert(Size != ~UINT64_C(0) && "File size not set!"); assert(Size != ~UINT64_C(0) && "File size not set!");
return Size; return Size;
@ -549,11 +545,6 @@ public:
uint64_t getOffset() const { return Offset; } uint64_t getOffset() const { return Offset; }
void setOffset(uint64_t Value) { Offset = Value; } void setOffset(uint64_t Value) { Offset = Value; }
uint64_t getAddress() const {
assert(getFragment() && "Invalid getAddress() on undefined symbol!");
return getFragment()->getAddress() + getOffset();
}
/// @} /// @}
/// @name Symbol Attributes /// @name Symbol Attributes
/// @{ /// @{

View File

@ -46,19 +46,22 @@ STATISTIC(ObjectBytes, "Number of emitted object file bytes");
/* *** */ /* *** */
uint64_t MCAsmLayout::getFragmentAddress(const MCFragment *F) const { uint64_t MCAsmLayout::getFragmentAddress(const MCFragment *F) const {
return F->getAddress(); assert(F->getParent() && "Missing section()!");
return getSectionAddress(F->getParent()) + F->getOffset();
} }
uint64_t MCAsmLayout::getSymbolAddress(const MCSymbolData *SD) const { uint64_t MCAsmLayout::getSymbolAddress(const MCSymbolData *SD) const {
return SD->getAddress(); assert(SD->getFragment() && "Invalid getAddress() on undefined symbol!");
return getFragmentAddress(SD->getFragment()) + SD->getOffset();
} }
uint64_t MCAsmLayout::getSectionAddress(const MCSectionData *SD) const { uint64_t MCAsmLayout::getSectionAddress(const MCSectionData *SD) const {
return SD->getAddress(); assert(SD->Address != ~UINT64_C(0) && "Address not set!");
return SD->Address;
} }
void MCAsmLayout::setSectionAddress(MCSectionData *SD, uint64_t Value) { void MCAsmLayout::setSectionAddress(MCSectionData *SD, uint64_t Value) {
SD->setAddress(Value); SD->Address = Value;
} }
/* *** */ /* *** */
@ -78,11 +81,6 @@ MCFragment::MCFragment(FragmentType _Kind, MCSectionData *_Parent)
MCFragment::~MCFragment() { MCFragment::~MCFragment() {
} }
uint64_t MCFragment::getAddress() const {
assert(getParent() && "Missing Section!");
return getParent()->getAddress() + Offset;
}
/* *** */ /* *** */
MCSectionData::MCSectionData() : Section(0) {} MCSectionData::MCSectionData() : Section(0) {}