Mozilla developers faced a problem: an error crashes during the
mozilla-inbound compilation process under Windows (see bug
709193 ).
nswindowmediator.cpp (821): fatal error C1001: An internal error has occurred in the compiler. LINK: fatal error LNK1000: Internal error during IMAGE :: BuildImage
The investigation revealed that the linker went beyond the virtual address space during optimization. It lacks 3 GB of memory, which 32-bit Windows allocates to an application.
A similar problem arose before the developers in early 2010, when the linker went beyond 2 GB, but then the problem was solved by switching to the 3 GB limit (see bug
543034 ), now there is no such option.
As a temporary solution, the developers froze the addition of functionality to mozilla-inbound and excluded from the build several new modules: Graphite, libreg and
SPDY . Now think what to do next. In this situation, there are several options: 1) to allocate part of the libxul code into separate libraries; 2) try to upgrade to MSVC 2010; 3) compile 32-bit builds on a 64-bit OS. The problem is now being
discussed on mozilla.dev.platform.
')
For the advanced version of Firefox - the 32-bit version for Windows, which is used by 90% of the audience - a two-step optimization procedure is used on profiles (Profile-Guided Optimization, PGO). After the first pass of the compiler, the profile of the browser is compiled in a real environment, after which the final compilation of the optimized program is carried out. Mozilla switched to PGO four years ago, a new method improved performance by about 10%.