mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-12 07:37:34 +00:00
MC: Pack MCSymbol::Index in with the bitfield in MCSymbol
Save a pointer for each `MCSymbol`, bringing `llc` memory usage down from 920 MB to 914 MB, around ~0.6%. (I'm looking at `llc` memory usage on `verify-uselistorder.lto.opt.bc`; see r236629 for details.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238003 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6c3a7cbe54
commit
005bf5f8b0
@ -167,17 +167,18 @@ class MCSymbol {
|
||||
mutable unsigned IsUsed : 1;
|
||||
|
||||
mutable bool HasData : 1;
|
||||
mutable MCSymbolData Data;
|
||||
|
||||
/// Index field, for use by the object file implementation.
|
||||
mutable uint64_t Index = 0;
|
||||
mutable uint64_t Index : 60;
|
||||
|
||||
mutable MCSymbolData Data;
|
||||
|
||||
private: // MCContext creates and uniques these.
|
||||
friend class MCExpr;
|
||||
friend class MCContext;
|
||||
MCSymbol(StringRef name, bool isTemporary)
|
||||
: Name(name), Section(nullptr), Value(nullptr), IsTemporary(isTemporary),
|
||||
IsRedefinable(false), IsUsed(false), HasData(false) {}
|
||||
IsRedefinable(false), IsUsed(false), HasData(false), Index(0) {}
|
||||
|
||||
MCSymbol(const MCSymbol &) = delete;
|
||||
void operator=(const MCSymbol &) = delete;
|
||||
@ -290,6 +291,7 @@ public:
|
||||
/// Set the (implementation defined) index.
|
||||
void setIndex(uint64_t Value) const {
|
||||
assert(HasData && "Uninitialized symbol data");
|
||||
assert(!(Value >> 60) && "Not enough bits for value");
|
||||
Index = Value;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user