Size: a a a

Compiler Development

2020 July 03

IK

Ivan Kochurkin in Compiler Development
Mikola Summer Duck
А что это будет оптимизировать?
Декомпиляция/деобфускация
источник

MM

Mikhail Maltsev in Compiler Development
polunin.ai
Вот есть оптимизации инлайнинга. А есть обратные оптимизации? Поиск одинаковых веток дерева, и вынесение их в функции.
Да, в LLVM есть outlining. Только он делается на уровне последовательностей машинных инструкций.
источник

PS

Peter Sovietov in Compiler Development
Это, в первую очередь, вопрос вычислительной сложности. Сопоставление с образцом (точнее поиск frequent patterns) на строках (те самые последовательности машинных инструкций) и на DAG/графах — это разные вещи.
источник

M

MaxGraey in Compiler Development
polunin.ai
Вот есть оптимизации инлайнинга. А есть обратные оптимизации? Поиск одинаковых веток дерева, и вынесение их в функции.
Есть, но это значительно более дорогая операция, где то здесь выкладывали видео то ли 2015го, то ли 2017го года где предлагалось ускорить такую оптимизацию через pattern matching в суффиксном дереве постороенном из байткода / машинного кода
источник

M

MaxGraey in Compiler Development
но зачастую ракая оптимизация по размеру бессмысленна имхо, так весь избыток энропии и так хорошо утилизируется обычными алгоритмами сжатия
источник

К

Константин in Compiler Development
MaxGraey
но зачастую ракая оптимизация по размеру бессмысленна имхо, так весь избыток энропии и так хорошо утилизируется обычными алгоритмами сжатия
Я думаю это все же для человека
источник

К

Константин in Compiler Development
Я хочу увидеть это видео:)
источник

А

Алексей ayaye :)... in Compiler Development
polunin.ai
Вот есть оптимизации инлайнинга. А есть обратные оптимизации? Поиск одинаковых веток дерева, и вынесение их в функции.
Common subexpression elimination?
источник

MM

Mikhail Maltsev in Compiler Development
Константин
Я хочу увидеть это видео:)
источник

К

Константин in Compiler Development
Спс.
Что-то типа такого и я придумал
источник

К

Константин in Compiler Development
у меня даже несколько сложнее кейс.
У меня стек, там просто по сути идет pop/push тех же инструкций.
Сам байткод не умеет юзать ничего, кроме регистров, для хранения стейта.
Так вот, тут получается не инлайн, а подобие.
источник

К

Константин in Compiler Development
Вот тут видно, что каждый раз берется объект, ложится в стек следущий поле, и присваивается в метод.
И по новой.
Инструкции похожи, но они параметрические получаются.
источник

К

Константин in Compiler Development
Переслано от Константин
Оптимизнул. (раньше не тот метод был, оказалось он еще страшнее)
источник

К

Константин in Compiler Development
Это уже соптимизнуто, кастыльно.
Я вызываю боксинг 1 раз, что уже быстрее, так как боксинг  - это поиск по прототипу, что конечно не долго.
Но это метод вызывается 4 раза в фрейм, и делает 12 раз боксинг.
createActivation вообще алоцирует новый объект
источник

К

Константин in Compiler Development
https://astexplorer.net/
О че нашел.
Почему раньше не нашел.
источник

АЗ

Алексей Запольский... in Compiler Development
питона походу нет )
источник
2020 July 04

К

Константин in Compiler Development
Да, нету.
Как не странно.
Наверное для него нет JS версии AST парсера

А это нормально что на оптимизацию компайлера я потратил уже часов 20, и получил почти никакой результат?
источник

SI

Serghei Iakovlev in Compiler Development
Мне вот такая чтука зашла https://ast.carlosroso.com/

Подумываю под свой язык модифицировать.
источник

AT

Alexander Tsukanov in Compiler Development
Константин
Да, нету.
Как не странно.
Наверное для него нет JS версии AST парсера

А это нормально что на оптимизацию компайлера я потратил уже часов 20, и получил почти никакой результат?
Да вроде любая оптимизация по этому сценарию идет
источник

M

MaxGraey in Compiler Development
@eX_gd Игрушечный SpiderMonkey который объясныет очень базовые приципы jit компиляции в JS движках
https://github.com/codehag/TwitchMonkey

Кстати создательница Юлия этого репозитария - контрибутор настоящего SpiderMonkey движка
источник