mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-27 14:34:58 +00:00
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:
parent
e9cfd685f5
commit
7c3d45a03e
@ -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
|
||||||
/// @{
|
/// @{
|
||||||
|
@ -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) {}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user