Оптимизатор выполняет оптимизацию построенного AST для ускорения работы кода.
В настоящий момент выполняются следующие оптимизации:
- Предрассчет константных выражений
- Поверка используемости переменных. Если переменная создается, но после нигде не используется - ее можно не создавать
- Проверка на создание новых переменных в блоке. Если в блоке не создаются новые переменные, то блоку не нужен отдельный контекст
- Проверка выражений на полезность. Если вычисление выражение не изменяет состояние программы, его можно не вычислять
- Удаление пустых блоков
- Удаление пустых циклов FOR, которые не несут полезной нагрузки
- Проверка статичности переходов IF, если условие ложно или истинно всегда, лишняя ветвь удаляется с предупреждением о недостижимости кода