Институт системного программирования Роcсийской академии наук


LLV8: экспериментальный компилятор третьего уровня для JavaScript-движка V8

Современные виртуальные машины языка JavaScript имеют многоуровневое устройство для достижения баланса между производительностью и временем пауз в работе пользовательских программ. Многоуровневое устройство позволяет тратить время на оптимизацию только того кода, в котором управление проводит много времени.

LLV8 – экспериментальный динамический (just-in-time) компилятор, задуманный в качестве третьего уровня компиляции и выполнения программ для популярного JavaScript-движка V8. В сравнении с имеющимися в V8 двумя уровнями, упор делается на максимальную эффективность производимого им машинного кода для пользовательской программы. Для этого используется LLVM MCJIT – набор библиотек для оптимизации программ и генерации кода на лету.

В проекте реализованы методы, делающие возможной компиляцию программ на языке JavaScript (обладающем высоким уровнем динамизма) в статически типизированное представление LLVM. На определённых тестах достигнуто двухкратное ускорение по сравнению с оригинальным V8.

Страница проекта на Github – описание системы, исходный код и результаты.

Документация на Github

Публикации и выступления на конференциях

Варданян В.Г., Иванишин В.А., Асрян С.А., Хачатрян A.А., Акопян Дж.А. Динамическая компиляция программ на языке JavaScript в статически типизированное внутреннее представление LLVM. Стр. 33-48.

Мельник Д.М. Доклад на конференции LLVM Cauldron 2016.

Разработчик/участник

Компиляторные технологии

Перейти к списку всех технологий