Size: a a a

Compiler Development

2020 July 04

К

Константин in Compiler Development
Serge S. Gulin
Ну т.е. если бы он работал более полноценно (те же замыкания), то это бы помогло решить более общую задачу.
Оно работает полноценно, в low level языках они появились в 17 году там, в с++
источник

SG

Serge S. Gulin in Compiler Development
Мда, без замыканий грустненько
источник

К

Константин in Compiler Development
Ну хз, как-то писали же:)
источник

M

MaxGraey in Compiler Development
В любом случае, что бы эффективно ускорить функциональную библиотеку интенсивно использующую замыкания компиляции в wasm или натив будет недостаточно, нужно делать высокоуровневые оптимизации в CPS и 0-CFA представлениях (lambda lifting например) плюс иметь поддержку TCO.
источник

К

Константин in Compiler Development
MaxGraey
В любом случае, что бы эффективно ускорить функциональную библиотеку интенсивно использующую замыкания компиляции в wasm или натив будет недостаточно, нужно делать высокоуровневые оптимизации в CPS и 0-CFA представлениях (lambda lifting например) плюс иметь поддержку TCO.
Скажи мне, я же верно понимаю, что я могу сделать свертку вот этого после первого поиска?
Это поиск статического объекта, его метода и вызов его.
источник

К

Константин in Compiler Development
Ибо это пзц
источник

К

Константин in Compiler Development
источник

M

MaxGraey in Compiler Development
Константин
Скажи мне, я же верно понимаю, что я могу сделать свертку вот этого после первого поиска?
Это поиск статического объекта, его метода и вызов его.
Понимаешь, показывая всем скриншот с потрохами после неведомой никому виртуальной машины что джитит в JavaScript и задавая малопонятные здешней публике вопросы ты вряд ли пробвинешься к цели.
источник

M

MaxGraey in Compiler Development
вообще Константин я боюсь ты всех здесь уже распугал)
источник

К

Константин in Compiler Development
Ну ек. Я думал все же найдется из 888 участник, который открыл ссылочку на досуге, глянул на портянку в 2к строк и сказал что мы полностью сделали говно нерабочее по дизайну.

Для меня кейс в виде "над компилятор переписать" выглядит как "надо кофе попить", чем в профильном чатике тут можно напугать?
источник

К

Константин in Compiler Development
Telegram
Константин in Compiler Development
У нас он такой и есть, только он не инкрементальный. Он фолбекается на интрепретер, если не смог скомпилировать.

JIT
https://github.com/awayfl/avm2/blob/wip_jit_optimise_pass/lib/jit.ts

INT
https://github.com/awayfl/avm2/blob/wip_jit_optimise_pass/lib/int.ts

Вот сам раннер
https://github.com/awayfl/avm2/blob/wip_jit_optimise_pass/lib/int.ts#L137

Ток JIT инородного байткода порождает новые тяжелые инструкции поверх тех, которых нету в оригинале.
Те это транспиленный байткод на лету, которые еще нужно потом оптимизить.

Конечно можно еще добавить инструкции,  будет 2 компилятора - транспиллер байткода, оптимизатор, и уже JIT  сам, из нашего оптимизнутого байткода.
Все бы хорошо, ток это зае* тестить.

Я ща понял, что мы же можем реально инкрементально-отложенный компилятор сделать.
Пока не скомпилили в воркере =)

int кстати, по скорости равен неоптимизнутому JIT, ну это понятно, там тупо фор-луп, а инструкции те же
источник

EG

E G in Compiler Development
Константин
https://github.com/codehag/TwitchMonkey/blob/master/engine.js
У нас он такой и есть, только он не инкрементальный. Он фолбекается на интрепретер, если не смог скомпилировать.

Ток JIT инородного порождает новые тяжелые инструкции поверх тех, которых нету в оригинале.
Те это транспиленный байткод на лету, которые еще нужно потом оптимизить.

Конечно можно еще добавить инструкции,  будет 2 компилятора - транспиллер байткода, оптимизатор, и уже JIT  сам, из нашего оптимизнутого байткода.
Все бы хорошо, ток это зае* тестить.
Я правильно понимаю, что это штука которая написана на ts, жрет пользовательский инпут, и чтобы его быстро исполнить генерит js?
источник

К

Константин in Compiler Development
E G
Я правильно понимаю, что это штука которая написана на ts, жрет пользовательский инпут, и чтобы его быстро исполнить генерит js?
Нет, эта штук написана на ТС, получает байкод от AS3 и джитит его в JS не прямо, так как накидывает тонну инструкции от себя. Сами инструкции, которые она добавляет, чистые. Те они не меняют свой стейт, а работают с стейтом объекта который в них подаётся.
источник

EG

E G in Compiler Development
А скриншоты которые ты шаришь - это результирующий код который у вас получается?
источник

К

Константин in Compiler Development
E G
А скриншоты которые ты шаришь - это результирующий код который у вас получается?
Да. Часть, там листинги на 100к строк и более
источник

EG

E G in Compiler Development
Ну говно, да. Браузерный джит такое не переварит.
источник

EG

E G in Compiler Development
Константин
Нет, эта штук написана на ТС, получает байкод от AS3 и джитит его в JS не прямо, так как накидывает тонну инструкции от себя. Сами инструкции, которые она добавляет, чистые. Те они не меняют свой стейт, а работают с стейтом объекта который в них подаётся.
Чистые или нет - это только ты знаешь. Да и какая разница.
источник

EG

E G in Compiler Development
источник

EG

E G in Compiler Development
Оно?
источник

К

Константин in Compiler Development
E G
Чистые или нет - это только ты знаешь. Да и какая разница.
Ну в том и проблема, что никто не знает.
Кложуру его кормить нет смысла, если только правила не менять.
Хотя да, можно наверное для терсера, кложура, свои правила оптимизации впилить? Те например чтобы он ходил в методы и тд
источник