Разработчики Mozilla столкнулись с проблемой: в процессе компиляции mozilla-inbound под Windows вылетает ошибка.
nswindowmediator.cpp(821): fatal error C1001: An internal error has occurred in the compiler. LINK: fatal error LNK1000: Internal error during IMAGE::BuildImage
Оказалось, что компоновщик выходит за пределы виртуального адресного пространства во время оптимизации. Ему не хватает 3 ГБ памяти, которые выделяет приложению 32-битная Windows.
Аналогичная проблема возникла перед разработчиками в начале 2010 года, когда компоновщик вышел за пределы 2 ГБ, но тогда проблему удалось решить переходом на лимит 3 ГБ (см. баг 543034), сейчас такого варианта нет.
В качестве временного решения разработчики заморозили добавление функционала в mozilla-inbound и исключили из билда несколько новых модулей: Graphite, libreg и SPDY. Теперь думают, что делать дальше. Варианты выхода из ситуации: 1) выделить часть кода libxul в отдельные библиотеки; 2) попробовать перейти на MSVC 2010; 3) компилировать 32-битные билды в 64-битной ОС.
Для 32-битной версии Firefox под Windows (это 90% аудитории) используется двухэтапная процедура оптимизации на профилях (PGO). После первого прохода компилятора составляется профиль работы браузера в реальной среде, затем идет компиляция оптимизированной программы. Mozilla перешла на PGO четыре года назад, метод улучшил производительность примерно на 10%.
Анатолий АЛИЗАР






Горячие темы