On Dec 16, 2011, at 10:29 AM, Andrei Alexandrescu wrote: > > But in experiments it seemed like program size would increase in sudden > amounts when certain modules were included. After much investigation we > figured that the following fateful causal sequence happened: > > 1. Some modules define static constructors with "static this()" or "static > shared this()", and/or static destructors. > > 2. These constructors/destructors are linked in automatically whenever a > module is included. > > 3. Importing a module with a static constructor (or destructor) will generate > its ModuleInfo structure, which contains static information about all module > members. In particular, it keeps virtual table pointers for all classes > defined inside the module.
What is gained from having class vtbls referenced by ModuleInfo? Could we put them elsewhere?