Skip to content

Commit

Permalink
Reorder fields for better packing
Browse files Browse the repository at this point in the history
I noticed this structure's fields are poorly ordered when considering
padding.  This reordering reduces the size from 56 bytes to 40 bytes
(on LP64).
  • Loading branch information
urnathan committed Jan 12, 2024
1 parent 8cd9561 commit 430a3bb
Showing 1 changed file with 24 additions and 24 deletions.
48 changes: 24 additions & 24 deletions llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -116,22 +116,22 @@ class SectionEntry {
/// linker.
class RelocationEntry {
public:
/// SectionID - the section this relocation points to.
unsigned SectionID;

/// Offset - offset into the section.
uint64_t Offset;

/// RelType - relocation type.
uint32_t RelType;

/// Addend - the relocation addend encoded in the instruction itself. Also
/// used to make a relocation section relative instead of symbol relative.
int64_t Addend;

/// SectionID - the section this relocation points to.
unsigned SectionID;

/// RelType - relocation type.
uint32_t RelType;

struct SectionPair {
uint32_t SectionA;
uint32_t SectionB;
uint32_t SectionA;
uint32_t SectionB;
};

/// SymOffset - Section offset of the relocation entry's symbol (used for GOT
Expand All @@ -141,36 +141,36 @@ class RelocationEntry {
SectionPair Sections;
};

/// True if this is a PCRel relocation (MachO specific).
bool IsPCRel;

/// The size of this relocation (MachO specific).
unsigned Size;

/// True if this is a PCRel relocation (MachO specific).
bool IsPCRel : 1;

// ARM (MachO and COFF) specific.
bool IsTargetThumbFunc = false;
bool IsTargetThumbFunc : 1;

RelocationEntry(unsigned id, uint64_t offset, uint32_t type, int64_t addend)
: SectionID(id), Offset(offset), RelType(type), Addend(addend),
SymOffset(0), IsPCRel(false), Size(0), IsTargetThumbFunc(false) {}
: Offset(offset), Addend(addend), SectionID(id), RelType(type),
SymOffset(0), Size(0), IsPCRel(false), IsTargetThumbFunc(false) {}

RelocationEntry(unsigned id, uint64_t offset, uint32_t type, int64_t addend,
uint64_t symoffset)
: SectionID(id), Offset(offset), RelType(type), Addend(addend),
SymOffset(symoffset), IsPCRel(false), Size(0),
: Offset(offset), Addend(addend), SectionID(id), RelType(type),
SymOffset(symoffset), Size(0), IsPCRel(false),
IsTargetThumbFunc(false) {}

RelocationEntry(unsigned id, uint64_t offset, uint32_t type, int64_t addend,
bool IsPCRel, unsigned Size)
: SectionID(id), Offset(offset), RelType(type), Addend(addend),
SymOffset(0), IsPCRel(IsPCRel), Size(Size), IsTargetThumbFunc(false) {}
: Offset(offset), Addend(addend), SectionID(id), RelType(type),
SymOffset(0), Size(Size), IsPCRel(IsPCRel), IsTargetThumbFunc(false) {}

RelocationEntry(unsigned id, uint64_t offset, uint32_t type, int64_t addend,
unsigned SectionA, uint64_t SectionAOffset, unsigned SectionB,
uint64_t SectionBOffset, bool IsPCRel, unsigned Size)
: SectionID(id), Offset(offset), RelType(type),
Addend(SectionAOffset - SectionBOffset + addend), IsPCRel(IsPCRel),
Size(Size), IsTargetThumbFunc(false) {
: Offset(offset), Addend(SectionAOffset - SectionBOffset + addend),
SectionID(id), RelType(type), Size(Size),
IsPCRel(IsPCRel), IsTargetThumbFunc(false) {
Sections.SectionA = SectionA;
Sections.SectionB = SectionB;
}
Expand All @@ -179,9 +179,9 @@ class RelocationEntry {
unsigned SectionA, uint64_t SectionAOffset, unsigned SectionB,
uint64_t SectionBOffset, bool IsPCRel, unsigned Size,
bool IsTargetThumbFunc)
: SectionID(id), Offset(offset), RelType(type),
Addend(SectionAOffset - SectionBOffset + addend), IsPCRel(IsPCRel),
Size(Size), IsTargetThumbFunc(IsTargetThumbFunc) {
: Offset(offset), Addend(SectionAOffset - SectionBOffset + addend),
SectionID(id), RelType(type), Size(Size),
IsPCRel(IsPCRel), IsTargetThumbFunc(IsTargetThumbFunc) {
Sections.SectionA = SectionA;
Sections.SectionB = SectionB;
}
Expand Down

0 comments on commit 430a3bb

Please sign in to comment.