mirror of https://github.com/zeldaret/botw.git
Reduce code size by avoiding static inline member variables
Static inline member variables require the compiler to emit a static runtime constructor in all translation units that can see the variables in question. This normally wouldn't be a problem, but it gets expensive really quickly when you have ~3000 classes and ~3000 duplicate static constructors. This drops the ELF size from ~270MB to ~220MB and probably speeds up builds a little bit.
This commit is contained in:
parent
cb33d236a3
commit
117e6891b0
|
@ -165,4 +165,6 @@ void Actions::setFactories(int count, ActionFactory* factories) {
|
|||
sFactories.setBuffer(count, factories);
|
||||
}
|
||||
|
||||
sead::Buffer<ActionFactory> Actions::sFactories;
|
||||
|
||||
} // namespace ksys::act::ai
|
||||
|
|
|
@ -49,7 +49,7 @@ public:
|
|||
static void setFactories(int count, ActionFactory* factories);
|
||||
|
||||
private:
|
||||
static inline sead::Buffer<ActionFactory> sFactories;
|
||||
static sead::Buffer<ActionFactory> sFactories;
|
||||
sead::Buffer<Action*> mClasses;
|
||||
// Non-owning buffer.
|
||||
sead::Buffer<Action*> mOnPreDeleteCbs;
|
||||
|
|
|
@ -397,4 +397,6 @@ void Ais::setFactories(int count, AiFactory* factories) {
|
|||
sFactories.setBuffer(count, factories);
|
||||
}
|
||||
|
||||
sead::Buffer<AiFactory> Ais::sFactories;
|
||||
|
||||
} // namespace ksys::act::ai
|
||||
|
|
|
@ -88,7 +88,7 @@ public:
|
|||
static void setFactories(int count, AiFactory* factories);
|
||||
|
||||
private:
|
||||
static inline sead::Buffer<AiFactory> sFactories;
|
||||
static sead::Buffer<AiFactory> sFactories;
|
||||
sead::Buffer<Ai*> mClasses;
|
||||
// Non-owning buffer.
|
||||
sead::Buffer<Ai*> mOnPreDeleteCbs;
|
||||
|
|
|
@ -140,4 +140,6 @@ void Queries::setFactories(int count, QueryFactory* factories) {
|
|||
sFactories.setBuffer(count, factories);
|
||||
}
|
||||
|
||||
sead::Buffer<QueryFactory> Queries::sFactories;
|
||||
|
||||
} // namespace ksys::act::ai
|
||||
|
|
|
@ -30,7 +30,7 @@ public:
|
|||
static void setFactories(int count, QueryFactory* factories);
|
||||
|
||||
private:
|
||||
static inline sead::Buffer<QueryFactory> sFactories;
|
||||
static sead::Buffer<QueryFactory> sFactories;
|
||||
sead::Buffer<Query*> mClasses;
|
||||
// Non-owning buffer.
|
||||
sead::Buffer<Query*> mOnPreDeleteCbs;
|
||||
|
|
Loading…
Reference in New Issue