Новости и события » Hi-Tech » В Chrome тестируют новый подход к компиляции JavaScript

В Chrome тестируют новый подход к компиляции JavaScript

В Chrome тестируют новый подход к компиляции JavaScript

Разработчики JavaScript движка V8 объявили о начале тестирования упрощенной схемы компиляции JavaScript, основанной на применении интерпретатора Ignition и JIT-компилятора Turbofan для всего JavaScript, а не для специфичных ситуаций. Новый режим включен по умолчанию для контрольной группы пользователей веток Chrome Canary и Chrome Developer. Остальные могут включить новый режим активировав опцию "Experimental JavaScript Compilation Pipeline" в "about:flags".

Ранее в V8 использовался достаточно сложный многоуровневый процесс компиляции JavaScript, в которой одноразовый код интерпретировался на первой стадии, после чего генерировались машинный код для JIT, который периодически уточнялся и оптимизировался двумя оптимизирующими JIT-компиляторами. В частности, вначале генерировался машинный код для всего JavaScript при помощи быстрого JIT-компилятора FullCodegen, а для устранения задержки перед готовностью JIT-компилятора применялся интерпретатор Ignition, который также брал на себя единичные операции, не требующие высокой скорости выполнения, для которых нет смысла привлекать полноценный JIT.

Вместо машинного кода Ignition использует байткод, выполняемый в регистровой виртуальной машине, который требует в 2-4 раза меньше памяти, а по скорости выполнения в реальных приложениях очень близок к неоптимизированному машинному коду. После формирования базового машинного кода для JIT, вступали в строй два дополнительных JIT-компилятора, которые генерировали оптимизированный код, учитывая накопленную статистику. Выбор того или иного оптимизирующего компилятора зависел от контекста, но Turbofan изначально развивался как будущая замена Crankshaft, по мере тестирования и стабилизации забирая на себя все больше функций.

Новая схема подразумевает применение на первой стадии только интерпретатора с байткодом с подключением по мере выполнения кода JIT-компилятора. Таким образом полностью исключается фаза упреждающей генерации неоптимизированного машинного кода JIT-компилятром FullCodegen, а также удаляются привязки к старому JIT-компилятору Crankshaft и лишняя логика разветвлений. Ожидается, что изменение положительно скажется на производительности реальных JavaScript-приложений и позволит снизить расход памяти.


Свежие новости Украины на сегодня и последние события в мире экономики и политики, культуры и спорта, технологий, здоровья, происшествий, авто и мото

Вверх