MSVC Static Initializers – Decent Stuff
July 30th, 2010 by tglek
I was digging through a MSVC++ map file for xul.dll. Turns out MSVC++ isn’t as naive about virtual initializers as the GNU toolchain. Initializers are all laid out next to each other. Same goes for what looks like finalizers and exception unwinding stuff. Initializers have an __E prefix and look like this:
0001:0089b470 ??__E?config@AvmCore@avmplus@@2UConfig@nanojit@@A@@YAXXZ 1089c470 f CIL library: CIL module
0001:0089b475 ??__EkStaticModules@@YAXXZ 1089c475 f nsStaticXULComponents.obj
0001:0089b638 ??__E?sSnifferEntries@nsUnknownDecoder@@1PAUnsSnifferEntry@1@A@@YAXXZ 1089c638 f necko:nsUnknownDecoder.obj
Now if only Microsoft fixed their kernel to do memory-mapped IO efficiently, it’d be a superior OS for starting Firefox.
One Response to “MSVC Static Initializers – Decent Stuff”
So MSVC is doing something along lines of my only-at-startup patch? What exactly it does for EH? (GCC 4.6 should recognize functions called only from EH as cold and put them into cold subsection, but I did not doublecheck it actually works)
Honza